{"_id":"@capy-vn/ui","_rev":"8-5f5974c210740dd96ef29952d383ada7","name":"@capy-vn/ui","dist-tags":{"latest":"1.0.4"},"versions":{"0.1.0":{"name":"@capy-vn/ui","version":"0.1.0","author":{"name":"Tâm Nguyễn"},"license":"MIT","_id":"@capy-vn/ui@0.1.0","maintainers":[{"name":"tamnm2910","email":"tamnm2910@gmail.com"}],"dist":{"shasum":"298f28344cf693466906f9bf25888aaed996fd02","tarball":"https://registry.npmjs.org/@capy-vn/ui/-/ui-0.1.0.tgz","fileCount":10,"integrity":"sha512-pvds+/qm8VpMmaWAtfHGBsd95UGt8wrZM8UxwOpYnMJlm8PnXgjaib1ZIa5w30Mylz/O1NdUlvK2zm2mPDkPGw==","signatures":[{"sig":"MEYCIQC4UCA382nLAuY89cItpTDZWFKq1mRAa11JpBbdGjlCGAIhALGlFFotLnqINNN0sU3bOKoOACGkWNIhvQGx3a4JZJYn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3704589},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./styles":"./src/styles/globals.css"},"gitHead":"4bb32fef81b5e9f3ad52bd354272d99bdb7ebe04","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","clean":"rimraf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"tamnm2910","email":"tamnm2910@gmail.com"},"_npmVersion":"11.3.0","description":"Capy shared component library — shadcn/ui + Tailwind CSS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"clsx":"^2.1.1","sonner":"^2.0.7","date-fns":"^3.6.0","lucide-react":"^0.469.0","tailwind-merge":"^2.6.0","react-hook-form":"^7.80.0","react-day-picker":"^8.10.1","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tanstack/react-table":"^8.21.3","@radix-ui/react-avatar":"^1.2.0","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","@radix-ui/react-checkbox":"^1.3.5","@radix-ui/react-progress":"^1.1.10","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.10","@radix-ui/react-radio-group":"^1.4.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-alert-dialog":"^1.1.17","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","rimraf":"^6.0.1","typescript":"^5.7.3","@types/node":"^22.0.0","tailwindcss":"^3.4.17","@types/react":"^18.3.18","autoprefixer":"^10.4.20","@types/react-dom":"^18.3.5"},"peerDependencies":{"next":">=14.0.0","react":"^18.0.0","react-dom":"^18.0.0","tailwindcss":"^3.0.0"},"peerDependenciesMeta":{"next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.0_1782405559264_0.8669756065198826","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@capy-vn/ui","version":"0.1.1","author":{"name":"Tâm Nguyễn"},"license":"MIT","_id":"@capy-vn/ui@0.1.1","maintainers":[{"name":"tamnm2910","email":"tamnm2910@gmail.com"}],"dist":{"shasum":"8ee50717ea9ef20c926802b25b5c7bc085159423","tarball":"https://registry.npmjs.org/@capy-vn/ui/-/ui-0.1.1.tgz","fileCount":10,"integrity":"sha512-0ftRI5jNpLhYlJNDtlB52C+MKbEzETnf6FHD8H19i6pYNPextxSnP0KftaitDCs7zUCRsrX59CkkRhzYIeYT/A==","signatures":[{"sig":"MEQCIDDni+khhdLuzx2iksXb4m5ul400qmY+2k3M1krL2PKlAiBhb+431xY6RHcP/kEZ/hnGWqa/bBDJSAwVDZOxB8Gmrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3704219},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./styles":"./src/styles/globals.css"},"gitHead":"143ae1db76006eb03c631470b58e3f70706397f8","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","clean":"rimraf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"tamnm2910","email":"tamnm2910@gmail.com"},"_npmVersion":"11.3.0","description":"Capy shared component library — shadcn/ui + Tailwind CSS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"clsx":"^2.1.1","sonner":"^2.0.7","date-fns":"^3.6.0","lucide-react":"^0.469.0","tailwind-merge":"^2.6.0","react-hook-form":"^7.80.0","react-day-picker":"^8.10.1","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tanstack/react-table":"^8.21.3","@radix-ui/react-avatar":"^1.2.0","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","@radix-ui/react-checkbox":"^1.3.5","@radix-ui/react-progress":"^1.1.10","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.10","@radix-ui/react-radio-group":"^1.4.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-alert-dialog":"^1.1.17","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","rimraf":"^6.0.1","typescript":"^5.7.3","@types/node":"^22.0.0","tailwindcss":"^3.4.17","@types/react":"^18.3.18","autoprefixer":"^10.4.20","@types/react-dom":"^18.3.5"},"peerDependencies":{"next":">=14.0.0","react":"^18.0.0","react-dom":"^18.0.0","tailwindcss":"^3.0.0"},"peerDependenciesMeta":{"next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.1_1782405868866_0.5651549411675649","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@capy-vn/ui","version":"0.1.2","author":{"name":"Tâm Nguyễn"},"license":"MIT","_id":"@capy-vn/ui@0.1.2","maintainers":[{"name":"tamnm2910","email":"tamnm2910@gmail.com"}],"dist":{"shasum":"0760250e9c7702928e3331446fdee413a003220e","tarball":"https://registry.npmjs.org/@capy-vn/ui/-/ui-0.1.2.tgz","fileCount":10,"integrity":"sha512-vmkB8nRyIpgGH4t+uP1pCmOOoWCqAHycof7OXCZDXm5gYbUFFQ8MW4uLYRgrV+DFPltjfdw2lSqj1X2IYQ3/aQ==","signatures":[{"sig":"MEYCIQCn2i10Gxez1s8tJTqpwZna4glLIVF7pRcb8dvwQUyKPAIhAMBFj43Cv5UpVgWy2VJTqjsn9QXKEr2kvUfs5O2+j/R6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3710792},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./styles":"./src/styles/globals.css"},"gitHead":"143ae1db76006eb03c631470b58e3f70706397f8","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","clean":"rimraf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"tamnm2910","email":"tamnm2910@gmail.com"},"_npmVersion":"11.3.0","description":"Capy shared component library — shadcn/ui + Tailwind CSS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"clsx":"^2.1.1","sonner":"^2.0.7","date-fns":"^3.6.0","lucide-react":"^0.469.0","tailwind-merge":"^2.6.0","react-hook-form":"^7.80.0","react-day-picker":"^8.10.1","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tanstack/react-table":"^8.21.3","@radix-ui/react-avatar":"^1.2.0","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","@radix-ui/react-checkbox":"^1.3.5","@radix-ui/react-progress":"^1.1.10","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.10","@radix-ui/react-radio-group":"^1.4.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-alert-dialog":"^1.1.17","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","rimraf":"^6.0.1","typescript":"^5.7.3","@types/node":"^22.0.0","tailwindcss":"^3.4.17","@types/react":"^18.3.18","autoprefixer":"^10.4.20","@types/react-dom":"^18.3.5"},"peerDependencies":{"next":">=14.0.0","react":"^18.0.0","react-dom":"^18.0.0","tailwindcss":"^3.0.0"},"peerDependenciesMeta":{"next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.2_1782405996960_0.4231063497389109","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@capy-vn/ui","version":"1.0.0","author":{"name":"Tâm Nguyễn"},"license":"MIT","_id":"@capy-vn/ui@1.0.0","maintainers":[{"name":"tamnm2910","email":"tamnm2910@gmail.com"}],"dist":{"shasum":"ffd291796ba9ceaa96b97a51145a8f89d61e378c","tarball":"https://registry.npmjs.org/@capy-vn/ui/-/ui-1.0.0.tgz","fileCount":10,"integrity":"sha512-NLSifubc4TvO1gyxm0WRf96khPhvpt6uUuAcAoKzRZ3xhbTCyBqvSHqQsNhliJIaTaIChMICfI2vg2uMCkSmwQ==","signatures":[{"sig":"MEUCIQCFcazLXY6Adw0J41BlvN7i+Rn2rO2f6VHyliBtIhDhvQIgZyburgZM+Of9OJWOJVvgYWqlnTFKI84VIKvPaX4fUeo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2799577},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./styles":"./src/styles/globals.css"},"gitHead":"ac6850be9c0f0a4c9898e71407a8db7a435dc4ac","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","clean":"rimraf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"tamnm2910","email":"tamnm2910@gmail.com"},"_npmVersion":"11.3.0","description":"Capy shared component library — shadcn/ui + Tailwind CSS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"clsx":"^2.1.1","sonner":"^2.0.7","date-fns":"^3.6.0","lucide-react":"^0.469.0","tailwind-merge":"^2.6.0","react-hook-form":"^7.80.0","react-day-picker":"^9.0.0","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tanstack/react-table":"^8.21.3","@radix-ui/react-avatar":"^1.2.0","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","@radix-ui/react-checkbox":"^1.3.5","@radix-ui/react-progress":"^1.1.10","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.10","@radix-ui/react-radio-group":"^1.4.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-alert-dialog":"^1.1.17","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","rimraf":"^6.0.1","typescript":"^5.7.3","@types/node":"^22.0.0","tailwindcss":"^3.4.17","@types/react":"^19.0.0","autoprefixer":"^10.4.20","@types/react-dom":"^19.0.0"},"peerDependencies":{"next":">=15.0.0","react":"^19.0.0","react-dom":"^19.0.0","tailwindcss":"^3.0.0"},"peerDependenciesMeta":{"next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.0.0_1782517453132_0.48056176338057943","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@capy-vn/ui","version":"1.0.1","author":{"name":"Tâm Nguyễn"},"license":"MIT","_id":"@capy-vn/ui@1.0.1","maintainers":[{"name":"tamnm2910","email":"tamnm2910@gmail.com"}],"dist":{"shasum":"4a7819a7ed622cb608ff39615b126e433afc57cb","tarball":"https://registry.npmjs.org/@capy-vn/ui/-/ui-1.0.1.tgz","fileCount":10,"integrity":"sha512-+7xYePy/URcNk/sBsjZWl6Ln2v/cXOAsJ7HKqxS8oWk72skG7OKE8m+tFGTMjwsKdDC/bVvmZBWhrJ7JprzRtQ==","signatures":[{"sig":"MEYCIQCOCJVlQwUsx4TMRz7IiFpaerH59nH3baVVpPF+gI51iwIhAJTgvVRTuDRKx425kaX9uht8N7lJa1LHJMQ8AF38mVQG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2799577},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles":"./src/styles/globals.css"},"gitHead":"ac6850be9c0f0a4c9898e71407a8db7a435dc4ac","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","clean":"rimraf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"tamnm2910","email":"tamnm2910@gmail.com"},"_npmVersion":"11.3.0","description":"Capy shared component library — shadcn/ui + Tailwind CSS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"clsx":"^2.1.1","sonner":"^2.0.7","date-fns":"^3.6.0","lucide-react":"^0.469.0","tailwind-merge":"^2.6.0","react-hook-form":"^7.80.0","react-day-picker":"^9.0.0","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tanstack/react-table":"^8.21.3","@radix-ui/react-avatar":"^1.2.0","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","@radix-ui/react-checkbox":"^1.3.5","@radix-ui/react-progress":"^1.1.10","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.10","@radix-ui/react-radio-group":"^1.4.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-alert-dialog":"^1.1.17","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","rimraf":"^6.0.1","typescript":"^5.7.3","@types/node":"^22.0.0","tailwindcss":"^3.4.17","@types/react":"^19.0.0","autoprefixer":"^10.4.20","@types/react-dom":"^19.0.0"},"peerDependencies":{"next":">=15.0.0","react":"^19.0.0","react-dom":"^19.0.0","tailwindcss":"^3.0.0"},"peerDependenciesMeta":{"next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.0.1_1782519000573_0.6292323432272093","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@capy-vn/ui","version":"1.0.2","author":{"name":"Tâm Nguyễn"},"license":"MIT","_id":"@capy-vn/ui@1.0.2","maintainers":[{"name":"tamnm2910","email":"tamnm2910@gmail.com"}],"dist":{"shasum":"48dd7d3e75a3ac29c437c961ec9167d8bce805d9","tarball":"https://registry.npmjs.org/@capy-vn/ui/-/ui-1.0.2.tgz","fileCount":10,"integrity":"sha512-8qxKp4nyV+xvQ9gTkGNEeVs1cZ0qFSl2rV6L0fXf+kwWEK+wwQl7wlnIMuZ4uNbCeKgVXACh5dxDTtNC7AqoHQ==","signatures":[{"sig":"MEQCIGbyDZX/wCHklaJIoeyQvcArlMKZawOV4grHQIZ/NfbPAiBhrxuLVdRJ8EyzHiGEq8RquWpSfjZptfszmku15KV1SA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2807113},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles":"./src/styles/globals.css"},"gitHead":"20900faca3bb6d316806b1860ada2c8c4cc871e9","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","clean":"rimraf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"tamnm2910","email":"tamnm2910@gmail.com"},"_npmVersion":"11.3.0","description":"Capy shared component library — shadcn/ui + Tailwind CSS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"clsx":"^2.1.1","sonner":"^2.0.7","date-fns":"^3.6.0","lucide-react":"^0.469.0","tailwind-merge":"^2.6.0","react-hook-form":"^7.80.0","react-day-picker":"^9.0.0","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tanstack/react-table":"^8.21.3","@radix-ui/react-avatar":"^1.2.0","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","@radix-ui/react-checkbox":"^1.3.5","@radix-ui/react-progress":"^1.1.10","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.10","@radix-ui/react-radio-group":"^1.4.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-alert-dialog":"^1.1.17","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","rimraf":"^6.0.1","typescript":"^5.7.3","@types/node":"^22.0.0","tailwindcss":"^3.4.17","@types/react":"^19.0.0","autoprefixer":"^10.4.20","@types/react-dom":"^19.0.0"},"peerDependencies":{"next":">=15.0.0","react":"^19.0.0","react-dom":"^19.0.0","tailwindcss":"^3.0.0"},"peerDependenciesMeta":{"next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.0.2_1782557624120_0.3553911776608365","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@capy-vn/ui","version":"1.0.3","author":{"name":"Tâm Nguyễn"},"license":"MIT","_id":"@capy-vn/ui@1.0.3","maintainers":[{"name":"tamnm2910","email":"tamnm2910@gmail.com"}],"dist":{"shasum":"396cc33a5202173263107930df1f6fac2e81f533","tarball":"https://registry.npmjs.org/@capy-vn/ui/-/ui-1.0.3.tgz","fileCount":10,"integrity":"sha512-HL2yoirRqldk0Lr1zC9OecIqIPzMRVaYvv9J30lblSUWtk6nTNhESS6MRQc+PvS9ZYyJx4JWdHkfdMgA02PHLA==","signatures":[{"sig":"MEYCIQDty5F9Yo2p6nkmFn3ftHQtGPAs7jHtRkJ7kgioAt1BrgIhAIeH0Mg9WqUOoPNo4NWY0XQuFo6FjWA+ReTK+NfdiyKG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2815202},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles":"./src/styles/globals.css"},"gitHead":"21019da7c4bd30c3b8ec8cb53f9a477ab93844d4","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","clean":"rimraf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"tamnm2910","email":"tamnm2910@gmail.com"},"_npmVersion":"11.3.0","description":"Capy shared component library — shadcn/ui + Tailwind CSS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"clsx":"^2.1.1","sonner":"^2.0.7","date-fns":"^3.6.0","lucide-react":"^0.469.0","tailwind-merge":"^2.6.0","react-hook-form":"^7.80.0","react-day-picker":"^9.0.0","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tanstack/react-table":"^8.21.3","@radix-ui/react-avatar":"^1.2.0","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","@radix-ui/react-checkbox":"^1.3.5","@radix-ui/react-progress":"^1.1.10","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.10","@radix-ui/react-radio-group":"^1.4.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-alert-dialog":"^1.1.17","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","rimraf":"^6.0.1","typescript":"^5.7.3","@types/node":"^22.0.0","tailwindcss":"^3.4.17","@types/react":"^19.0.0","autoprefixer":"^10.4.20","@types/react-dom":"^19.0.0"},"peerDependencies":{"next":">=15.0.0","react":"^19.0.0","react-dom":"^19.0.0","tailwindcss":"^3.0.0"},"peerDependenciesMeta":{"next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ui_1.0.3_1782560924589_0.8593769057032823","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@capy-vn/ui","version":"1.0.4","description":"Capy shared component library — shadcn/ui + Tailwind CSS","author":{"name":"Tâm Nguyễn"},"license":"MIT","private":false,"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles":"./src/styles/globals.css"},"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsup","dev":"tsup --watch","type-check":"tsc --noEmit","lint":"eslint src --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0","clean":"rimraf dist"},"dependencies":{"@radix-ui/react-alert-dialog":"^1.1.17","@radix-ui/react-avatar":"^1.2.0","@radix-ui/react-checkbox":"^1.3.5","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-dropdown-menu":"^2.1.18","@radix-ui/react-label":"^2.1.10","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-progress":"^1.1.10","@radix-ui/react-radio-group":"^1.4.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-select":"^2.3.1","@radix-ui/react-separator":"^1.1.10","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-tooltip":"^1.2.10","@tanstack/react-table":"^8.21.3","class-variance-authority":"^0.7.1","clsx":"^2.1.1","lucide-react":"^0.469.0","date-fns":"^3.6.0","react-day-picker":"^9.0.0","react-hook-form":"^7.80.0","sonner":"^2.0.7","tailwind-merge":"^2.6.0"},"devDependencies":{"@types/node":"^22.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","autoprefixer":"^10.4.20","rimraf":"^6.0.1","tailwindcss":"^3.4.17","tsup":"^8.3.5","typescript":"^5.7.3"},"peerDependencies":{"next":">=15.0.0","react":"^19.0.0","react-dom":"^19.0.0","tailwindcss":"^3.0.0"},"peerDependenciesMeta":{"next":{"optional":true}},"publishConfig":{"access":"public"},"_id":"@capy-vn/ui@1.0.4","gitHead":"21019da7c4bd30c3b8ec8cb53f9a477ab93844d4","_nodeVersion":"22.14.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-deIFw6tgWL+A8jkgi+YjLCZ1wmMHNi8m3jARCp4UOu4ck+IWemIh1QG1V1h1sykHcFYlqx8c8G0ERGOIYJrPiQ==","shasum":"b6f7482a83cee301f645aa307fd8cee7e14d206a","tarball":"https://registry.npmjs.org/@capy-vn/ui/-/ui-1.0.4.tgz","fileCount":10,"unpackedSize":2815224,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHbPD8U9jqnTYe161ilmIbbHBAPDQi/l/8OevcmrZAajAiAJLxvqWg6VKIOvXIgesDz24f3V7kZQrOQ8hty6BJ/ftQ=="}]},"_npmUser":{"name":"tamnm2910","email":"tamnm2910@gmail.com"},"directories":{},"maintainers":[{"name":"tamnm2910","email":"tamnm2910@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ui_1.0.4_1782563020861_0.834751770505568"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-25T16:39:19.139Z","modified":"2026-06-27T12:23:41.158Z","0.1.0":"2026-06-25T16:39:19.467Z","0.1.1":"2026-06-25T16:44:29.090Z","0.1.2":"2026-06-25T16:46:37.191Z","1.0.0":"2026-06-26T23:44:13.318Z","1.0.1":"2026-06-27T00:10:00.751Z","1.0.2":"2026-06-27T10:53:44.294Z","1.0.3":"2026-06-27T11:48:44.762Z","1.0.4":"2026-06-27T12:23:41.048Z"},"author":{"name":"Tâm Nguyễn"},"license":"MIT","description":"Capy shared component library — shadcn/ui + Tailwind CSS","maintainers":[{"name":"tamnm2910","email":"tamnm2910@gmail.com"}],"readme":"# @capy-vn/ui\n\nThư viện component dùng chung cho các project frontend, xây dựng trên shadcn/ui + Radix UI + Tailwind CSS.\n\n---\n\n## Cài đặt\n\n```bash\n# npm\nnpm install @capy-vn/ui\n\n# yarn\nyarn add @capy-vn/ui\n\n# pnpm\npnpm add @capy-vn/ui\n```\n\n---\n\n## Setup\n\n### 1. Import CSS\n\nTrong `app/globals.css` hoặc `app/layout.tsx`:\n\n```css\n/* globals.css */\n@import \"@capy-vn/ui/styles\";\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n```\n\nHoặc trong `layout.tsx`:\n\n```tsx\nimport \"@capy-vn/ui/styles\";\n```\n\n### 2. Cấu hình Tailwind\n\nThêm path vào `tailwind.config.js` để Tailwind scan được class từ library:\n\n```js\n/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: [\n    \"./app/**/*.{ts,tsx}\",\n    \"./components/**/*.{ts,tsx}\",\n    \"./node_modules/@capy-vn/ui/dist/**/*.{js,mjs}\", // <-- thêm dòng này\n  ],\n  theme: {\n    extend: {},\n  },\n  plugins: [],\n};\n```\n\n### 3. Thêm Toaster (cho toast notifications)\n\nTrong root layout:\n\n```tsx\nimport { Toaster } from \"@capy-vn/ui\";\n\nexport default function RootLayout({ children }) {\n  return (\n    <html>\n      <body>\n        {children}\n        <Toaster />\n      </body>\n    </html>\n  );\n}\n```\n\n---\n\n## Sử dụng\n\n```tsx\nimport { Button, Input, Card, CardContent } from \"@capy-vn/ui\";\n\nexport function LoginCard() {\n  return (\n    <Card>\n      <CardContent className=\"space-y-4 p-6\">\n        <Input placeholder=\"Email\" type=\"email\" />\n        <Button className=\"w-full\">Đăng nhập</Button>\n      </CardContent>\n    </Card>\n  );\n}\n```\n\n### Form với react-hook-form\n\nCác component `Form*` đã tích hợp sẵn `react-hook-form`:\n\n```tsx\nimport { useForm } from \"react-hook-form\";\nimport { Form, FormInput, FormSelect, Button } from \"@capy-vn/ui\";\n\nexport function CreateUserForm() {\n  const form = useForm({ defaultValues: { name: \"\", role: \"\" } });\n\n  return (\n    <Form {...form}>\n      <form onSubmit={form.handleSubmit(console.log)} className=\"space-y-4\">\n        <FormInput name=\"name\" label=\"Tên\" placeholder=\"Nhập tên...\" />\n        <FormSelect\n          name=\"role\"\n          label=\"Vai trò\"\n          options={[\n            { value: \"admin\", label: \"Admin\" },\n            { value: \"user\", label: \"User\" },\n          ]}\n        />\n        <Button type=\"submit\">Tạo</Button>\n      </form>\n    </Form>\n  );\n}\n```\n\n---\n\n## Danh sách Components\n\n### UI Primitives\n\n| Component | Import |\n|-----------|--------|\n| `Button` | `@capy-vn/ui` |\n| `Input` | `@capy-vn/ui` |\n| `Textarea` | `@capy-vn/ui` |\n| `Label` | `@capy-vn/ui` |\n| `Checkbox` | `@capy-vn/ui` |\n| `Switch` | `@capy-vn/ui` |\n| `RadioGroup`, `RadioGroupItem` | `@capy-vn/ui` |\n| `Select`, `SelectTrigger`, `SelectContent`, `SelectItem` | `@capy-vn/ui` |\n| `SearchSelect` | `@capy-vn/ui` |\n| `MultiSelect` | `@capy-vn/ui` |\n| `NumberInput` | `@capy-vn/ui` |\n| `Slider` | `@capy-vn/ui` |\n| `OtpInput` | `@capy-vn/ui` |\n| `FileUpload` | `@capy-vn/ui` |\n| `Badge` | `@capy-vn/ui` |\n| `Avatar`, `AvatarImage`, `AvatarFallback` | `@capy-vn/ui` |\n| `Card`, `CardHeader`, `CardContent`, `CardFooter`, `CardTitle`, `CardDescription` | `@capy-vn/ui` |\n| `Alert`, `AlertTitle`, `AlertDescription` | `@capy-vn/ui` |\n| `Separator` | `@capy-vn/ui` |\n| `Progress` | `@capy-vn/ui` |\n| `Skeleton` | `@capy-vn/ui` |\n| `Accordion`, `AccordionItem`, `AccordionTrigger`, `AccordionContent` | `@capy-vn/ui` |\n| `Dialog`, `DialogTrigger`, `DialogContent`, `DialogHeader`, `DialogFooter` | `@capy-vn/ui` |\n| `AlertDialog`, `AlertDialogTrigger`, `AlertDialogContent`, ... | `@capy-vn/ui` |\n| `Sheet`, `SheetTrigger`, `SheetContent` | `@capy-vn/ui` |\n| `Popover`, `PopoverTrigger`, `PopoverContent` | `@capy-vn/ui` |\n| `DropdownMenu`, `DropdownMenuTrigger`, `DropdownMenuContent`, `DropdownMenuItem` | `@capy-vn/ui` |\n| `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent` | `@capy-vn/ui` |\n| `Tooltip`, `TooltipTrigger`, `TooltipContent`, `TooltipProvider` | `@capy-vn/ui` |\n| `ScrollArea` | `@capy-vn/ui` |\n| `Breadcrumb`, `BreadcrumbItem`, `BreadcrumbLink`, `BreadcrumbSeparator` | `@capy-vn/ui` |\n| `Calendar` | `@capy-vn/ui` |\n| `DatePicker` | `@capy-vn/ui` |\n| `DateRangePicker` | `@capy-vn/ui` |\n| `TimePicker` | `@capy-vn/ui` |\n| `DatetimePicker` | `@capy-vn/ui` |\n| `DatetimeRangePicker` | `@capy-vn/ui` |\n| `Toaster` | `@capy-vn/ui` |\n\n### Forms (tích hợp react-hook-form)\n\n| Component | Mô tả |\n|-----------|-------|\n| `FormInput` | Input field |\n| `FormTextarea` | Textarea field |\n| `FormCheckbox` | Checkbox field |\n| `FormSwitch` | Switch field |\n| `FormSelect` | Select dropdown |\n| `FormNumberInput` | Số nguyên / thập phân |\n| `FormSlider` | Range slider |\n| `FormOtpInput` | OTP input |\n| `FormMultiSelect` | Multi-select |\n| `FormFileUpload` | File upload |\n| `FormDatePicker` | Chọn ngày |\n| `FormTimePicker` | Chọn giờ |\n| `FormDatetimePicker` | Chọn ngày + giờ |\n| `FormDateRangePicker` | Chọn khoảng ngày |\n| `FormDatetimeRangePicker` | Chọn khoảng ngày + giờ |\n\nTất cả Form components nhận prop `name`, `label`, và `description` (optional hint text).\n\n### Layout\n\n| Component | Mô tả |\n|-----------|-------|\n| `PageLayout` | Layout trang đầy đủ với header/content |\n| `SidebarLayout` | Layout có sidebar |\n| `Container` | Wrapper có max-width và padding |\n| `Stack` | Flex stack (vertical) |\n| `HStack` | Flex stack ngang |\n| `VStack` | Flex stack dọc |\n\n### Navigation\n\n| Component | Mô tả |\n|-----------|-------|\n| `Pagination` | Phân trang với `usePagination` hook |\n| `Stepper` | Stepper multi-step |\n\n### Data Display\n\n| Component | Mô tả |\n|-----------|-------|\n| `DataTable` | Table với TanStack Table |\n| `StatCard` | Card hiển thị số liệu |\n| `EmptyState` | Màn hình trống |\n| `DescriptionList` | Danh sách key-value |\n| `Timeline` | Timeline sự kiện |\n\n### Feedback\n\n| Component | Mô tả |\n|-----------|-------|\n| `LoadingSpinner` | Spinner loading |\n| `LoadingOverlay` | Overlay loading toàn màn hình |\n| `ConfirmDialog` | Dialog xác nhận hành động |\n| `Result` | Trang trạng thái (success/error/warning) |\n\n---\n\n## Hooks\n\n```tsx\nimport { useDisclosure, useDebounce, usePagination, useLocalStorage } from \"@capy-vn/ui\";\n```\n\n| Hook | Mô tả |\n|------|-------|\n| `useDisclosure()` | Quản lý trạng thái open/close (modal, dropdown) |\n| `useDebounce(value, delay)` | Debounce giá trị |\n| `usePagination(options)` | Logic phân trang |\n| `useLocalStorage(key, initial)` | Đọc/ghi localStorage |\n\n---\n\n## Utilities\n\n```tsx\nimport { cn } from \"@capy-vn/ui\";\n\n// Kết hợp Tailwind class\n<div className={cn(\"base-class\", condition && \"conditional-class\")} />\n```\n\n---\n\n## Peer Dependencies\n\nProject sử dụng library cần có sẵn:\n\n```json\n{\n  \"react\": \"^19.0.0\",\n  \"react-dom\": \"^19.0.0\",\n  \"tailwindcss\": \"^3.0.0\"\n}\n```\n\nNext.js là optional — library hoạt động với bất kỳ React 19+ project nào.\n\n---\n\n## Cập nhật\n\n```bash\nnpm update @capy-vn/ui\n```\n\n---\n\n## License\n\nMIT © Tâm Nguyễn\n","readmeFilename":"README.md"}