{"_id":"@alessiofrittoli/react-components","_rev":"7-e6f35de79c0ed70b8461531f7505d28f","name":"@alessiofrittoli/react-components","dist-tags":{"alpha":"1.1.0-alpha.1","latest":"1.2.0"},"versions":{"0.1.0":{"name":"@alessiofrittoli/react-components","version":"0.1.0","keywords":["react","react-components"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/react-components@0.1.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/react-components#readme","bugs":{"url":"https://github.com/alessiofrittoli/react-components/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"7b628ed651029ca8ce8ad5fd7ecc0766cb2e4adc","tarball":"https://registry.npmjs.org/@alessiofrittoli/react-components/-/react-components-0.1.0.tgz","fileCount":11,"integrity":"sha512-ihI4z4UTpQsGG0O2iWeJdc03qm8bOECjFju5A29F1Lb7IpNZA58d25FhQJO89pCNG5wLPWscet/uZI+C9iN32A==","signatures":[{"sig":"MEQCIBh2+7oVF5LJlejMegApKshqXnK58mQ8mlahgjmlf76TAiAxSrFwebz+LfLACyr67TslkQrRYQBDpkFthhxU3dJPrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18987},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./client":{"import":{"types":"./dist/client.d.mts","default":"./dist/client.mjs"},"require":{"types":"./dist/client.d.ts","default":"./dist/client.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"fd88ea6af9a3fbb825180f1a104d0e4ed710ace0","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hoc":"pnpm test:watch HOC/*","build:prod":"NODE_ENV=production tsup","test:watch":"jest --watchAll --verbose","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/react-components.git","type":"git"},"_npmVersion":"10.9.2","description":"Starter repository for developing node_modules","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","react":"^19","dotenv":"^16.5.0","eslint":"^9.26.0","globals":"^16.1.0","ts-jest":"^29.3.3","ts-node":"^10.9.2","react-dom":"^19","@eslint/js":"^9.26.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.18","http-server":"^14.1.1","@types/react":"^19","concurrently":"^9.1.2","@jest/globals":"^29.7.0","@eslint/compat":"^1.2.9","@eslint/eslintrc":"^3.3.1","@types/react-dom":"^19","typescript-eslint":"^8.32.1","eslint-plugin-react":"^7.37.5","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.1","@alessiofrittoli/node-scripts":"^2.5.0","eslint-plugin-react-server-components":"^1.2.0"},"peerDependencies":{"react":"^19","react-dom":"^19","@types/react":"^19","@types/react-dom":"^19"},"_npmOperationalInternal":{"tmp":"tmp/react-components_0.1.0_1747406577168_0.6560024304055114","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alessiofrittoli/react-components","version":"0.1.1","keywords":["react","react-components"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/react-components@0.1.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/react-components#readme","bugs":{"url":"https://github.com/alessiofrittoli/react-components/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"290a5af4e321b7e38abca9ee59dfb00920b8c25a","tarball":"https://registry.npmjs.org/@alessiofrittoli/react-components/-/react-components-0.1.1.tgz","fileCount":11,"integrity":"sha512-e+gDXcTvWjetVgVtz/MQ5wlaGf79QPpmU4S/dp0BSQymQBUGD18QjwUcPaonwuRK49LAbnQy+dA99XFYwjcpIg==","signatures":[{"sig":"MEUCIGZzoFxDP5brgODBJ1sFj2zqQlwj2rQMU7OzJB7GCxU7AiEAg43LDttoeY/3HCLGXmaNyJO7XgYZ46FyhoPELQAWyiI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18949},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./client":{"import":{"types":"./dist/client.d.mts","default":"./dist/client.mjs"},"require":{"types":"./dist/client.d.ts","default":"./dist/client.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"4300ad942fc7b636d9af25fa6d457356d225e07d","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hoc":"pnpm test:watch HOC/*","build:prod":"NODE_ENV=production tsup","test:watch":"jest --watchAll --verbose","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/react-components.git","type":"git"},"_npmVersion":"10.9.2","description":"TypeScript React Components","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","react":"^19","dotenv":"^16.5.0","eslint":"^9.26.0","globals":"^16.1.0","ts-jest":"^29.3.3","ts-node":"^10.9.2","react-dom":"^19","@eslint/js":"^9.26.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.18","http-server":"^14.1.1","@types/react":"^19","concurrently":"^9.1.2","@jest/globals":"^29.7.0","@eslint/compat":"^1.2.9","@eslint/eslintrc":"^3.3.1","@types/react-dom":"^19","typescript-eslint":"^8.32.1","eslint-plugin-react":"^7.37.5","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.1","@alessiofrittoli/node-scripts":"^2.5.0","eslint-plugin-react-server-components":"^1.2.0"},"peerDependencies":{"react":"^19","react-dom":"^19","@types/react":"^19","@types/react-dom":"^19"},"_npmOperationalInternal":{"tmp":"tmp/react-components_0.1.1_1747415684326_0.8907435186281685","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alessiofrittoli/react-components","version":"0.2.0","keywords":["react","react-components"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/react-components@0.2.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/react-components#readme","bugs":{"url":"https://github.com/alessiofrittoli/react-components/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"d9659f36dafad46b859054072459f9331f2b7d95","tarball":"https://registry.npmjs.org/@alessiofrittoli/react-components/-/react-components-0.2.0.tgz","fileCount":11,"integrity":"sha512-/aW9cvfuWN9wJKVFQNn6RrcmOGO6zSPyoJF58tIdIzkpJXwYlkvsp3fQPAP1rVhJ4OT5yGXZu+oyTCivuSqFhQ==","signatures":[{"sig":"MEQCIBrDH0/qQWa9/GGpGU2hJO3eLILWqvJdTe0qSQy6uj+uAiB6cC8ILmEzwhw5zVHFKnXoLRKdnlQBDtlOV0iSWpmjlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26960},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./client":{"import":{"types":"./dist/client.d.mts","default":"./dist/client.mjs"},"require":{"types":"./dist/client.d.ts","default":"./dist/client.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"db30148f056b402985af428fb8f7561584a27b60","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hoc":"pnpm test:watch HOC/*","build:prod":"NODE_ENV=production tsup","test:watch":"jest --watchAll --verbose","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/react-components.git","type":"git"},"_npmVersion":"11.4.0","description":"TypeScript React Components","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/react-api":"^1.0.0","@alessiofrittoli/react-hooks":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.5.0","react":"^19","dotenv":"^16.5.0","eslint":"^9.27.0","globals":"^16.1.0","ts-jest":"^29.3.4","ts-node":"^10.9.2","react-dom":"^19","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.18","http-server":"^14.1.1","@types/react":"^19","concurrently":"^9.1.2","@jest/globals":"^29.7.0","@eslint/compat":"^1.2.9","@eslint/eslintrc":"^3.3.1","@types/react-dom":"^19","typescript-eslint":"^8.32.1","eslint-plugin-react":"^7.37.5","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.1","@alessiofrittoli/node-scripts":"^2.5.0","eslint-plugin-react-server-components":"^1.2.0"},"peerDependencies":{"react":"^19","react-dom":"^19","@types/react":"^19","@types/react-dom":"^19"},"_npmOperationalInternal":{"tmp":"tmp/react-components_0.2.0_1747588464581_0.4875009597080384","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@alessiofrittoli/react-components","version":"1.0.0","keywords":["react","react-components"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/react-components@1.0.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/react-components#readme","bugs":{"url":"https://github.com/alessiofrittoli/react-components/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"40e2d51be38f95fba91189ca2bdc3bc664395fcd","tarball":"https://registry.npmjs.org/@alessiofrittoli/react-components/-/react-components-1.0.0.tgz","fileCount":11,"integrity":"sha512-KKFBkKnV29PSnXsyb1qJzQqYIbBOl/GJKF3EH92CiAsOVRIa1czv/oX3jPmVZ9ARzvQ8XJS52Lx3HPvv/w2Fgg==","signatures":[{"sig":"MEYCIQDJQCUmiDPZrpEPmQzwbfbxx9Zyiog2ZUNvQEeHqrToFAIhAMRIqysZAdo7kAjtxQ1jR8dr1irZhniSj+XDdGcoyiA3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27367},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./client":{"import":{"types":"./dist/client.d.mts","default":"./dist/client.mjs"},"require":{"types":"./dist/client.d.ts","default":"./dist/client.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"f1033782d825cc6c6e15f406556f9fcc087263aa","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hoc":"pnpm test:watch HOC/*","build:prod":"NODE_ENV=production tsup","test:watch":"jest --watchAll --verbose","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","actor":{"name":"alessiofrittoli","type":"user","email":"info@alessiofrittoli.it"},"email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/react-components.git","type":"git"},"_npmVersion":"11.4.0","description":"TypeScript React Components","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/react-api":"^1.0.0","@alessiofrittoli/react-hooks":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0","tsup":"^8.5.0","react":"^19","dotenv":"^16.5.0","eslint":"^9.29.0","globals":"^16.2.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","react-dom":"^19","@eslint/js":"^9.29.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.3","http-server":"^14.1.1","@types/react":"^19","concurrently":"^9.1.2","@jest/globals":"^30.0.0","@eslint/compat":"^1.3.0","@eslint/eslintrc":"^3.3.1","@types/react-dom":"^19","typescript-eslint":"^8.34.1","eslint-plugin-react":"^7.37.5","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","jest-environment-jsdom":"^30.0.0","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.1","@alessiofrittoli/node-scripts":"^2.6.0","eslint-plugin-react-server-components":"^1.2.0"},"peerDependencies":{"react":"^19","react-dom":"^19","@types/react":"^19","@types/react-dom":"^19"},"_npmOperationalInternal":{"tmp":"tmp/react-components_1.0.0_1750169857416_0.5099016718522498","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-alpha.1":{"name":"@alessiofrittoli/react-components","version":"1.1.0-alpha.1","keywords":["react","react-components"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/react-components@1.1.0-alpha.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/react-components#readme","bugs":{"url":"https://github.com/alessiofrittoli/react-components/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"7d399659b8b86a1b57980a42bd6fe702ec42cbc6","tarball":"https://registry.npmjs.org/@alessiofrittoli/react-components/-/react-components-1.1.0-alpha.1.tgz","fileCount":11,"integrity":"sha512-XBvRWcdOQa0Ey/AMSRVN+yId/6WySBxYdLYEVQhJ9R4nR8t3M9K2IzQwRHJPibL0CvF7vgE8ZOdgM3fWdTCI1Q==","signatures":[{"sig":"MEYCIQCN12w51M7lqVOi8xBx4TAXgQTGmJP7c/E1j3vmTtBq+AIhAOZ9kedkMJnqDCsAC7l2/yhSE8TrBAablKpPPejIbupp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28589},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./client":{"import":{"types":"./dist/client.d.mts","default":"./dist/client.mjs"},"require":{"types":"./dist/client.d.ts","default":"./dist/client.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"af13e5a8bd6f92c43be64c027c60db3df0807520","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:hoc":"pnpm test:watch HOC/*","build:prod":"NODE_ENV=production tsup","test:watch":"jest --watchAll --verbose","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","actor":{"name":"alessiofrittoli","type":"user","email":"info@alessiofrittoli.it"},"email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/react-components.git","type":"git"},"_npmVersion":"11.4.0","description":"TypeScript React Components","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/react-api":"^1.0.0","@alessiofrittoli/react-hooks":"^3.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.0.4","tsup":"^8.5.0","react":"^19","dotenv":"^17.1.0","eslint":"^9.30.1","globals":"^16.3.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","react-dom":"^19","@eslint/js":"^9.30.1","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.12","http-server":"^14.1.1","@types/react":"^19","concurrently":"^9.2.0","@jest/globals":"^30.0.4","@eslint/compat":"^1.3.1","@eslint/eslintrc":"^3.3.1","@types/react-dom":"^19","typescript-eslint":"^8.36.0","eslint-plugin-react":"^7.37.5","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","jest-environment-jsdom":"^30.0.4","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.1","@alessiofrittoli/node-scripts":"^2.6.0","eslint-plugin-react-server-components":"^1.2.0"},"peerDependencies":{"react":"^19","react-dom":"^19","@types/react":"^19","@types/react-dom":"^19"},"_npmOperationalInternal":{"tmp":"tmp/react-components_1.1.0-alpha.1_1752073935564_0.02618228350572771","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alessiofrittoli/react-components","version":"1.1.0","keywords":["react","react-components"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/react-components@1.1.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/react-components#readme","bugs":{"url":"https://github.com/alessiofrittoli/react-components/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"6e36923831712bbc564e4f0209ba9351f93cc48d","tarball":"https://registry.npmjs.org/@alessiofrittoli/react-components/-/react-components-1.1.0.tgz","fileCount":11,"integrity":"sha512-RKbPp5NiI6Mqsb2H/cCasid7JQ3NzcUK+isUccux8xREH/ajgk8pqeSfpcYFwt4VaAxITz27Q26/s+2HlWIQTA==","signatures":[{"sig":"MEQCIBm8G+pw3TVLlI0kdExR70ROPvcg16eUV7P3hOzegdSKAiAZn+U3xQme3jSNlCcFx0MpibFVGk35UM32yVaKRcCMqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28626},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./client":{"import":{"types":"./dist/client.d.mts","default":"./dist/client.mjs"},"require":{"types":"./dist/client.d.ts","default":"./dist/client.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"fcb715573c9a1c76ed9e7d90c83556fb3ae10636","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:hoc":"pnpm test:watch HOC/*","build:prod":"cross-env NODE_ENV=production tsup","test:watch":"jest --watchAll --verbose","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/react-components.git","type":"git"},"_npmVersion":"11.4.0","description":"TypeScript React Components","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/react-api":"^1.1.0","@alessiofrittoli/react-hooks":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.4","tsup":"^8.5.0","react":"^19","dotenv":"^17.2.0","eslint":"^9.31.0","globals":"^16.3.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","cross-env":"^7.0.3","react-dom":"^19","@eslint/js":"^9.31.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.15","http-server":"^14.1.1","@types/react":"^19","concurrently":"^9.2.0","@jest/globals":"^30.0.4","@eslint/compat":"^1.3.1","@eslint/eslintrc":"^3.3.1","@types/react-dom":"^19","typescript-eslint":"^8.37.0","eslint-plugin-react":"^7.37.5","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","jest-environment-jsdom":"^30.0.4","@testing-library/jest-dom":"^6.6.3","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.1","@alessiofrittoli/node-scripts":"^3.1.0","eslint-plugin-react-server-components":"^1.2.0"},"peerDependencies":{"react":"^19","react-dom":"^19","@types/react":"^19","@types/react-dom":"^19"},"_npmOperationalInternal":{"tmp":"tmp/react-components_1.1.0_1753103399784_0.7960327320073928","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@alessiofrittoli/react-components","version":"1.2.0","description":"TypeScript React Components","author":{"name":"Alessio Frittoli","email":"info@alessiofrittoli.it","url":"https://alessiofrittoli.it"},"license":"MIT","funding":[{"type":"github","url":"https://github.com/sponsors/alessiofrittoli"}],"keywords":["react","react-components"],"homepage":"https://github.com/alessiofrittoli/react-components#readme","bugs":{"url":"https://github.com/alessiofrittoli/react-components/issues","email":"info@alessiofrittoli.it"},"repository":{"type":"git","url":"git+https://github.com/alessiofrittoli/react-components.git"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./client":{"types":"./dist/client.d.mts","default":"./dist/client.mjs"},"./HOC/*":{"types":"./dist/HOC/*/index.d.mts","default":"./dist/HOC/*/index.mjs"},"./HOC/*/*":{"types":"./dist/HOC/*/*.d.mts","default":"./dist/HOC/*/*.mjs"}},"sideEffects":false,"scripts":{"//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","dev":"cross-env NODE_ENV=development tsup --watch","build:prod":"cross-env NODE_ENV=production tsup","build":"pnpm lint && pnpm test:ci && pnpm build:prod","lint":"eslint","release":"node scripts/release.js --verbose --npm","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","test":"jest --verbose","test:watch":"jest --watchAll --verbose","test:ci":"jest --ci --verbose","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","test:hoc":"pnpm test:watch HOC/*"},"devDependencies":{"@alessiofrittoli/node-scripts":"^3.2.0","@eslint/compat":"^2.0.0","@eslint/eslintrc":"^3.3.3","@eslint/js":"^9.39.1","@jest/globals":"^30.2.0","@testing-library/dom":"^10.4.1","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.0","@testing-library/user-event":"^14.6.1","@types/jest":"^30.0.0","@types/node":"^24.10.1","@types/react":"^19","@types/react-dom":"^19","concurrently":"^9.2.1","cross-env":"^10.1.0","dotenv":"^17.2.3","eslint":"^9.39.1","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-server-components":"^1.2.0","globals":"^16.5.0","http-server":"^14.1.1","jest":"^30.2.0","jest-environment-jsdom":"^30.2.0","react":"^19","react-dom":"^19","ts-jest":"^29.4.6","ts-node":"^10.9.2","tsup":"^8.5.1","typescript":"^5.9.3","typescript-eslint":"^8.48.1"},"dependencies":{"@alessiofrittoli/react-api":"^1.2.0","@alessiofrittoli/react-hooks":"^3.4.0"},"peerDependencies":{"@types/react":"^19","@types/react-dom":"^19","react":"^19","react-dom":"^19"},"_id":"@alessiofrittoli/react-components@1.2.0","gitHead":"317921ee8fed2c83e570205e7ea26f89cf3a032b","_nodeVersion":"22.15.0","_npmVersion":"11.5.2","dist":{"integrity":"sha512-jZnO+eSBm5NEnDegWwjBQvPPSHjRzjjh4Ww/lsZnq0B8YBLKKU7xr1CX5tr0ASaRHayI2Ts1NCDIb7ze7uhJkQ==","shasum":"a43e39f0b58f0455f67fe36ab7c5cf76f3b8e994","tarball":"https://registry.npmjs.org/@alessiofrittoli/react-components/-/react-components-1.2.0.tgz","fileCount":22,"unpackedSize":30942,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCWwiZMTfscm+xQZ6xFA4EoU9bIYDjntTCyJj9SeBvhBwIgQ0kK37URz1Degq7bLrH1l8tJC+eah/ztn2LSMLXsIIk="}]},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"directories":{},"maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-components_1.2.0_1764850037582_0.787534612037543"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-16T14:42:57.043Z","modified":"2025-12-04T12:07:17.910Z","0.1.0":"2025-05-16T14:42:57.340Z","0.1.1":"2025-05-16T17:14:44.498Z","0.2.0":"2025-05-18T17:14:24.765Z","1.0.0":"2025-06-17T14:17:37.587Z","1.1.0-alpha.1":"2025-07-09T15:12:15.773Z","1.1.0":"2025-07-21T13:09:59.954Z","1.2.0":"2025-12-04T12:07:17.720Z"},"bugs":{"url":"https://github.com/alessiofrittoli/react-components/issues","email":"info@alessiofrittoli.it"},"author":{"name":"Alessio Frittoli","email":"info@alessiofrittoli.it","url":"https://alessiofrittoli.it"},"license":"MIT","homepage":"https://github.com/alessiofrittoli/react-components#readme","keywords":["react","react-components"],"repository":{"type":"git","url":"git+https://github.com/alessiofrittoli/react-components.git"},"description":"TypeScript React Components","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"readme":"# React Components 🧩\n\n[![NPM Latest Version][version-badge]][npm-url] [![Coverage Status][coverage-badge]][coverage-url] [![Socket Status][socket-badge]][socket-url] [![NPM Monthly Downloads][downloads-badge]][npm-url] [![Dependencies][deps-badge]][deps-url]\n\n[![GitHub Sponsor][sponsor-badge]][sponsor-url]\n\n[version-badge]: https://img.shields.io/npm/v/%40alessiofrittoli%2Freact-components\n[npm-url]: https://npmjs.org/package/%40alessiofrittoli%2Freact-components\n[coverage-badge]: https://coveralls.io/repos/github/alessiofrittoli/react-components/badge.svg\n[coverage-url]: https://coveralls.io/github/alessiofrittoli/react-components\n[socket-badge]: https://socket.dev/api/badge/npm/package/@alessiofrittoli/react-components\n[socket-url]: https://socket.dev/npm/package/@alessiofrittoli/react-components/overview\n[downloads-badge]: https://img.shields.io/npm/dm/%40alessiofrittoli%2Freact-components.svg\n[deps-badge]: https://img.shields.io/librariesio/release/npm/%40alessiofrittoli%2Freact-components\n[deps-url]: https://libraries.io/npm/%40alessiofrittoli%2Freact-components\n[sponsor-badge]: https://img.shields.io/static/v1?label=Fund%20this%20package&message=%E2%9D%A4&logo=GitHub&color=%23DB61A2\n[sponsor-url]: https://github.com/sponsors/alessiofrittoli\n\n## TypeScript React Components\n\n### Table of Contents\n\n- [Getting started](#getting-started)\n- [API Reference](#api-reference)\n  - [High Order Components](#high-order-components)\n    - [`<InView />`](#inview-)\n    - [`<Portal />`](#portal-)\n    - [`<Stack />`](#stack-)\n    - [`WithGenerator`](#withgenerator)\n- [Development](#development)\n  - [Install depenendencies](#install-depenendencies)\n  - [Build the source code](#build-the-source-code)\n  - [ESLint](#eslint)\n  - [Jest](#jest)\n- [Contributing](#contributing)\n- [Security](#security)\n- [Credits](#made-with-)\n\n---\n\n### Getting started\n\nRun the following command to start using `react-components` in your projects:\n\n```bash\nnpm i @alessiofrittoli/react-components\n```\n\nor using `pnpm`\n\n```bash\npnpm i @alessiofrittoli/react-components\n```\n\n---\n\n### API Reference\n\n#### Components\n\n##### High Order Components\n\n###### `<InView />`\n\nA React higher-order component that renders its children based on their visibility within the viewport.\n\nThis Component uses [`useInView`](https://npmjs.com/package/@alessiofrittoli/react-hooks#useinview) hook under-the-hood so it may worth to take a look at the useInView [`API Reference`](https://npmjs.com/package/@alessiofrittoli/react-hooks#useinview) for a deep understanding on how it actually works.\n\n<details>\n\n<summary style=\"cursor:pointer\">Component Props</summary>\n\n| Property      | Type                                                | Default | Description                                                                                                                                                    |\n| ------------- | --------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `mountInView` | `boolean`                                           | `true`  | Indicates whether to mount/unmount children when in view.                                                                                                      |\n| `children`    | `FunctionChildren<[ result: UseInViewReturnType ]>` | -       | A React.ReactNode or a callable function that returns a React.ReactNode.                                                                                       |\n| `root`        | `Element\\|Document\\|false\\|null`                    | -       | (Optional) Identifies the `Element` or `Document` whose bounds are treated as the bounding box of the viewport for the Element which is the observer's target. |\n| `margin`      | `MarginType`                                        | -       | (Optional) A string, formatted similarly to the CSS margin property's value, which contains offsets for one or more sides of the root's bounding box.          |\n| `amount`      | `'all'\\|'some'\\|number\\|number[]`                   | -       | (Optional) The intersecting target thresholds.                                                                                                                 |\n|               |                                                     |         | Threshold can be set to:                                                                                                                                       |\n|               |                                                     |         | - `all` - `1` will be used.                                                                                                                                    |\n|               |                                                     |         | - `some` - `0.5` will be used.                                                                                                                                 |\n|               |                                                     |         | - `number`                                                                                                                                                     |\n|               |                                                     |         | - `number[]`                                                                                                                                                   |\n| `once`        | `boolean`                                           | -       | (Optional) By setting this to `true` the observer will be disconnected after the target Element enters the viewport.                                           |\n| `initial`     | `boolean`                                           | -       | (Optional) Initial value. This value is used while server rendering then will be updated in the client based on target visibility. Default: `false`.           |\n| `enable`      | `boolean`                                           | -       | (Optional) Defines the initial observation activity. Use the returned `setEnabled` to update this state. Default: `true`.                                      |\n| `onIntersect` | `OnIntersectStateHandler`                           | -       | (Optional) A custom callback executed when target element's visibility has crossed one or more thresholds.                                                     |\n|               |                                                     |         | This callback is awaited before any state update.                                                                                                              |\n|               |                                                     |         | If an error is thrown the React State update won't be fired.                                                                                                   |\n|               |                                                     |         | ⚠️ Wrap your callback with `useCallback` to avoid unnecessary `IntersectionObserver` recreation.                                                               |\n| `onEnter`     | `OnIntersectHandler`                                | -       | (Optional) A custom callback executed when target element is entering the viewport.                                                                            |\n|               |                                                     |         | This callback is awaited before any state update.                                                                                                              |\n|               |                                                     |         | If an error is thrown the React State update won't be fired.                                                                                                   |\n|               |                                                     |         | ⚠️ Wrap your callback with `useCallback` to avoid unnecessary `IntersectionObserver` recreation.                                                               |\n| `onExit`      | `OnIntersectHandler`                                | -       | (Optional) A custom callback executed when target element is exiting the viewport.                                                                             |\n|               |                                                     |         | This callback is awaited before any state update.                                                                                                              |\n|               |                                                     |         | If an error is thrown the React State update won't be fired.                                                                                                   |\n|               |                                                     |         | ⚠️ Wrap your callback with `useCallback` to avoid unnecessary `IntersectionObserver` recreation.                                                               |\n| `...`         | `React.ComponentProps<'div'>`                       | -       | (Optional) Props added to the internal observed HTMLDivElement.                                                                                                |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Basic usage\n\n```tsx\n\"use client\";\n\n// ClientComponent.tsx\nconst ClientComponent: React.FC = () => {\n  useEffect(() => {\n    console.log(\"ClientComponent entered viewport.\");\n    return () => {\n      console.log(\"ClientComponent exited viewport.\");\n    };\n  }, []);\n\n  return <div>ClientComponent</div>;\n};\n\n// ServerComponent.tsx\n\nimport { InView } from \"@alessiofrittoli/react-components/client\";\n// or\nimport { InView } from \"@alessiofrittoli/react-components/HOC/InView\";\n\nconst ServerComponent: React.FC = () => (\n  <InView>\n    <ClientComponent />\n  </InView>\n);\n```\n\n---\n\n###### Server-Render initial value\n\nBy default `<InView />` mounts/unmounts its children based on intersection within the viewport.\nIf your component renders important SEO informations, mounting/unmounting your component only when is in the viewport may not the best option since\nthe rendered content won't be part of the server-rendered web page.\n\nTo ensure your content is delivered in the server-rendered web page, you may want to set the `initial` prop to `true`.\n\n```tsx\nimport { InView } from \"@alessiofrittoli/react-components/client\";\n// or\nimport { InView } from \"@alessiofrittoli/react-components/HOC/InView\";\n\nconst Component: React.FC = () => (\n  <InView initial>\n    <h1>I&apos;ll be in the source page!</h1>\n  </InView>\n);\n```\n\nAlternatively you can set the `mountInView` prop to `false`, which prevents the mount/unmount life-cycle, and then pass a callable function as `children`.\n\nBy passing a callable function as `children` you'll earn access to the [`useInView`](https://npmjs.com/package/@alessiofrittoli/react-hooks#useinview) result data.\n\n```tsx\nimport { InView } from \"@alessiofrittoli/react-components/client\";\n// or\nimport { InView } from \"@alessiofrittoli/react-components/HOC/InView\";\n\nconst Component: React.FC = () => (\n  <InView mountInView={false}>\n    {({ inView, enabled, isExiting, setEnabled, setInView, observer }) => (\n      <h1\n        style={{\n          opacity: inView ? 1 : 0,\n          transition: \"opacity 1s ease\",\n        }}\n      >\n        I&apos;ll be in the source page!\n      </h1>\n    )}\n  </InView>\n);\n```\n\n</details>\n\n---\n\n###### `<Portal />`\n\nThe Portal React Component allows you to easly leverage the `createPortal` API exported by React.\n\n<details>\n\n<summary style=\"cursor:pointer\">Component Props</summary>\n\n| Property   | Type              | Description                                                                                 |\n| ---------- | ----------------- | ------------------------------------------------------------------------------------------- |\n| `selector` | `string`          | A valid CSS selector string targeting a DOM element where `children` will be injected into. |\n| `children` | `React.ReactNode` | (Optional) The Component children rendered inside the queried DOM element if found.         |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```tsx\nimport { Portal } from \"@alessiofrittoli/react-components\";\n// or\nimport { Portal } from \"@alessiofrittoli/react-components/HOC/Portal\";\n\nexport const MyComponent: React.FC<> = () => (\n  <Portal selector=\"#target\">Content inside target DOM element.</Portal>\n);\n```\n\n</details>\n\n---\n\n###### `<Stack />`\n\nEasily stack components avoiding creating a big Component stack pyramid.\n\n<details>\n\n<summary style=\"cursor:pointer\">Component Props</summary>\n\n| Property     | Type               | Description                                                                                   |\n| ------------ | ------------------ | --------------------------------------------------------------------------------------------- |\n| `components` | `StackComponent[]` | An Array of Components or Component and props. The Component must accept and return children. |\n| `children`   | `React.ReactNode`  | (Optional) The Component children.                                                            |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Basic usage\n\n```tsx\nimport { Stack } from \"@alessiofrittoli/react-components\";\n// or\nimport { Stack } from \"@alessiofrittoli/react-components/HOC/Stack\";\n\nexport const ProviderExample: React.FC<React.PropsWithChildren> = ({\n  children,\n}) => {\n  // ...\n  return <div>{children}</div>;\n};\n\nexport const AppProviders: React.FC<React.PropsWithChildren> = ({\n  children,\n}) => (\n  <Stack\n    components={[\n      ProviderExample,\n      AppProvider1,\n      AppProvider2,\n      AppProvider3,\n      // ...\n    ]}\n  >\n    {children}\n  </Stack>\n);\n```\n\n---\n\n###### Component with props\n\nUse `StackComponent<typeof ComponentReference>` to add type safety to the passed props.\n\n```tsx\nimport { Stack, type StackComponent } from \"@alessiofrittoli/react-components\";\n// or\nimport {\n  Stack,\n  type StackComponent,\n} from \"@alessiofrittoli/react-components/HOC/Stack\";\n\ntype ProviderExampleProps = React.PropsWithChildren<{\n  /** Example required prop */\n  className: string;\n}>;\n\nexport const ProviderExample: React.FC<React.PropsWithChildren> = ({\n  className,\n  children,\n}) => <div className={className}>{children}</div>;\n\nexport const AppProviders: React.FC<React.PropsWithChildren> = ({\n  children,\n}) => (\n  <Stack\n    components={[\n      [ProviderExample, { className: \"some-class-name\" }] as StackComponent<\n        typeof ProviderExample\n      >,\n      AppProvider1,\n      AppProvider2,\n      AppProvider3,\n      // ...\n    ]}\n  >\n    {children}\n  </Stack>\n);\n```\n\n</details>\n\n---\n\n###### `WithGenerator`\n\nTransform your generator function into a React.js Component.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type Parameters</summary>\n\n| Parameter | Default   | Description      |\n| --------- | --------- | ---------------- |\n| `T`       | `unknown` | Component types. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type                                                                                | Description                   |\n| --------- | ----------------------------------------------------------------------------------- | ----------------------------- |\n| `fn`      | `( props: T ) => AsyncGenerator<React.ReactNode, React.ReactNode, React.ReactNode>` | The async generator function. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Stream Content from a React Component\n\n```tsx\nimport { WithGenerator } from \"@alessiofrittoli/react-components\";\n// or\nimport { WithGenerator } from \"@alessiofrittoli/react-components/HOC/WithGenerator\";\n\ninterface StepProps {\n  someProp: string;\n}\n\nexport const Steps = WithGenerator<StepProps>(async function* ({ someProp }) {\n  let i = 0;\n\n  yield (\n    <h1>\n      Step {++i} - {someProp}\n    </h1>\n  );\n\n  // simulate an async task by awaiting a void Promise\n  await new Promise<void>((resolve) => setTimeout(resolve, 2000));\n\n  yield (\n    <h1>\n      Step {++i} - {someProp}\n    </h1>\n  );\n\n  // simulate an async task by awaiting a void Promise\n  await new Promise<void>((resolve) => setTimeout(resolve, 2000));\n\n  return (\n    <h1>\n      Step {++i} - {someProp} - Stream finished\n    </h1>\n  );\n});\n```\n\n</details>\n\n---\n\n### Development\n\n#### Install depenendencies\n\n```bash\nnpm install\n```\n\nor using `pnpm`\n\n```bash\npnpm i\n```\n\n#### Build the source code\n\nRun the following command to test and build code for distribution.\n\n```bash\npnpm build\n```\n\n#### [ESLint](https://www.npmjs.com/package/eslint)\n\nwarnings / errors check.\n\n```bash\npnpm lint\n```\n\n#### [Jest](https://npmjs.com/package/jest)\n\nRun all the defined test suites by running the following:\n\n```bash\n# Run tests and watch file changes.\npnpm test:watch\n\n# Run tests in a CI environment.\npnpm test:ci\n```\n\n- See [`package.json`](./package.json) file scripts for more info.\n\nRun tests with coverage.\n\nAn HTTP server is then started to serve coverage files from `./coverage` folder.\n\n⚠️ You may see a blank page the first time you run this command. Simply refresh the browser to see the updates.\n\n```bash\ntest:coverage:serve\n```\n\n---\n\n### Contributing\n\nContributions are truly welcome!\n\nPlease refer to the [Contributing Doc](./CONTRIBUTING.md) for more information on how to start contributing to this project.\n\nHelp keep this project up to date with [GitHub Sponsor][sponsor-url].\n\n[![GitHub Sponsor][sponsor-badge]][sponsor-url]\n\n---\n\n### Security\n\nIf you believe you have found a security vulnerability, we encourage you to **_responsibly disclose this and NOT open a public issue_**. We will investigate all legitimate reports. Email `security@alessiofrittoli.it` to disclose any security vulnerabilities.\n\n### Made with ☕\n\n<table style='display:flex;gap:20px;'>\n  <tbody>\n    <tr>\n      <td>\n        <img alt=\"avatar\" src='https://avatars.githubusercontent.com/u/35973186' style='width:60px;border-radius:50%;object-fit:contain;'>\n      </td>\n      <td>\n        <table style='display:flex;gap:2px;flex-direction:column;'>\n          <tbody>\n              <tr>\n                <td>\n                  <a href='https://github.com/alessiofrittoli' target='_blank' rel='noopener'>Alessio Frittoli</a>\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  <small>\n                    <a href='https://alessiofrittoli.it' target='_blank' rel='noopener'>https://alessiofrittoli.it</a> |\n                    <a href='mailto:info@alessiofrittoli.it' target='_blank' rel='noopener'>info@alessiofrittoli.it</a>\n                  </small>\n                </td>\n              </tr>\n          </tbody>\n        </table>\n      </td>\n    </tr>\n  </tbody>\n</table>\n","readmeFilename":"README.md"}