{"_id":"@ariakit/react-utils","_rev":"14-be2b0552838c3b86bbbb77a10ce8aa24","name":"@ariakit/react-utils","dist-tags":{"latest":"0.2.6"},"versions":{"0.1.0":{"name":"@ariakit/react-utils","version":"0.1.0","keywords":["ariakit","react","utils"],"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","_id":"@ariakit/react-utils@0.1.0","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"homepage":"https://ariakit.com","bugs":{"url":"https://github.com/ariakit/ariakit/issues"},"dist":{"shasum":"70dd0470c90bed2379ab0dfb49e269af18bb39eb","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.1.0.tgz","fileCount":13,"integrity":"sha512-8Dyols5BT/ffNHJ7a8K8iD3KA/pW3DkNOSYacolqN+i52MiPgz14SwLI8elxxhq+k0Y963SYLC3X6+ZlgFeeyA==","signatures":[{"sig":"MEUCIErHRXs2IsTNzxvaTB+GhHgDlAC96WfCEzhhGAho2ZDpAiEA1EtY/KG0vpVHKSs/HktEMumXCSdcXkLNU/khIYzdmgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79701},"type":"module","_from":"file:/tmp/ariakit-tarballs/ariakit-react-utils-0.1.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"build":"ariakit build --index-only","clean":"ariakit clean"},"_npmUser":{"name":"diegohaz","email":"hazdiego@gmail.com"},"_resolved":"/tmp/ariakit-tarballs/ariakit-react-utils-0.1.0.tgz","_integrity":"sha512-8Dyols5BT/ffNHJ7a8K8iD3KA/pW3DkNOSYacolqN+i52MiPgz14SwLI8elxxhq+k0Y963SYLC3X6+ZlgFeeyA==","repository":{"url":"git+https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"_npmVersion":"11.4.2","description":"Ariakit React utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"@ariakit/store":"0.1.0","@ariakit/utils":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"18.3.1","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-utils_0.1.0_1779544275396_0.9909220864123911","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ariakit/react-utils","version":"0.1.1","keywords":["ariakit","react","utils"],"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","_id":"@ariakit/react-utils@0.1.1","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"homepage":"https://ariakit.com","dist":{"shasum":"7b8b9f4e3c982cc6821609bcb01f5f94a6e5e2a8","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.1.1.tgz","fileCount":13,"integrity":"sha512-rnRlbWx7qlsrHxFggBgnfeBK14WEmKTLnSmH4MwWwqGC5ufiKWe+XfPKSj0wb+jCDw+l1FS6wAM7g+rmSmxXVg==","signatures":[{"sig":"MEQCIHbpxxLu0ywSqugeqD1VFR03ilRXKS3gUc66CA4xtVvBAiBYR6PsdUBlZ/XEToDFH1oQRGZ0/kmNkViRSvYfLuNhpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariakit%2freact-utils@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79850},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"build":"ariakit build --index-only","clean":"ariakit clean"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2f1cb6f1-57b7-4be6-aeee-a211a2ad1a9a"}},"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@ariakit/store":"0.1.1","@ariakit/utils":"0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"18.3.1","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-utils_0.1.1_1779549282284_0.5111441720312939","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ariakit/react-utils","version":"0.1.2","keywords":["ariakit","react","utils"],"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","_id":"@ariakit/react-utils@0.1.2","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"homepage":"https://ariakit.com","dist":{"shasum":"b18f743e6b72c06d79d5f5a24b9fc6d8cad44d26","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.1.2.tgz","fileCount":13,"integrity":"sha512-Rnl6D1542Mqu80xK++oUv1JXS0PtNmKXd9nkdud5nyvySiBDTrmPqRW44/D+5GbuZrboreQuY3tPYwKL7a7onQ==","signatures":[{"sig":"MEUCIHiqm9ZCuJ6LJjOj03K+naDhoFSkS485Rk2/T2PY7jBtAiEA/S8eFFTocEZAzMpqRGrYHEaNGz2lePNtRcykRn/MXX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariakit%2freact-utils@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":95440},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"docs":"ariakit docs --write","build":"ariakit build --index-only","clean":"ariakit clean"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2f1cb6f1-57b7-4be6-aeee-a211a2ad1a9a"}},"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@ariakit/store":"0.1.2","@ariakit/utils":"0.1.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.6","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-utils_0.1.2_1780189922145_0.9559409833494015","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ariakit/react-utils","version":"0.1.3","keywords":["ariakit","react","utils"],"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","_id":"@ariakit/react-utils@0.1.3","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"homepage":"https://ariakit.com","dist":{"shasum":"e259394db33904eb454bc3c6b10f673f97f789ef","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.1.3.tgz","fileCount":13,"integrity":"sha512-eaqLU+7lknPWzcWK7CYQw9Mu52c6If3jc8wm08Fw/hobOCeeG97Z865PQeNYQMK7BYqb01ByVNaIPEWYwcPkfw==","signatures":[{"sig":"MEUCIQDwjZQhCBDNf48UMiW3ylYyDMK45pAOsWv73P29I4HRlwIgGpVrkE7A7Ia40/RGOeJS1hpK/2RlE0nWTE5lxiheUmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariakit%2freact-utils@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":97497},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"docs":"ariakit docs --write","build":"ariakit build --index-only","clean":"ariakit clean"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2f1cb6f1-57b7-4be6-aeee-a211a2ad1a9a"}},"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@ariakit/store":"0.1.3","@ariakit/utils":"0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.7","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-utils_0.1.3_1782186910245_0.3914323874899872","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ariakit/react-utils","version":"0.2.0","keywords":["ariakit","react","utils"],"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","_id":"@ariakit/react-utils@0.2.0","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"homepage":"https://ariakit.com","dist":{"shasum":"aeb71b3206aa869a5d9c7fd877ec70a2295de4e7","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.2.0.tgz","fileCount":13,"integrity":"sha512-tyIx/qxYY5i8ntGSzDYZ5Olak7zZ58QeEYjbbMNSZEywgtrQlKhZXkVnXK72UkGXmCLg7OrrTsesv8Qh6Bx2LQ==","signatures":[{"sig":"MEUCIDrNRnLMHghHNLycfsULGho6oeBYB0c54OWmo2iIuKCWAiEAsoC8zJ8X7RkUyw+cL2aLZRufyHQfKZiZrxoCjSdV73k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariakit%2freact-utils@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96016},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"docs":"ariakit docs --write","build":"ariakit build --index-only","clean":"ariakit clean"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2f1cb6f1-57b7-4be6-aeee-a211a2ad1a9a"}},"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{"@ariakit/store":"0.1.4","@ariakit/utils":"0.1.4"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.7","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-utils_0.2.0_1782773995253_0.833163533640582","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ariakit/react-utils","version":"0.2.1","keywords":["ariakit","react","utils"],"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","_id":"@ariakit/react-utils@0.2.1","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"homepage":"https://ariakit.com","dist":{"shasum":"e8a98e39ff0d8d0e57196528e3869257a61b1d50","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.2.1.tgz","fileCount":9,"integrity":"sha512-/oO+705+VcSTBe1tEnVIfPv1pbE2fzb/lkP8Y+5phU1VGrOj6/dc/irGrjQgRCeFozwyddmvqtua4glNW6oPTw==","signatures":[{"sig":"MEYCIQDtDCL1kE3mVUcozH9XHsBowz7D5LswFj82Fye1dooElAIhAIQA+n4LHgUgsos5CKJvKTXMXUv4edKpywSIjKvv/Fme","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariakit%2freact-utils@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":41109},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"docs":"ariakit docs --write","build":"ariakit build --index-only","clean":"ariakit clean"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2f1cb6f1-57b7-4be6-aeee-a211a2ad1a9a"}},"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@ariakit/store":"0.1.5","@ariakit/utils":"0.1.4"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.7","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-utils_0.2.1_1784082219068_0.5410647894624108","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@ariakit/react-utils","version":"0.2.2","keywords":["ariakit","react","utils"],"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","_id":"@ariakit/react-utils@0.2.2","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"homepage":"https://ariakit.com","dist":{"shasum":"b82c78f7db30a2c47e2c1fb4f25cac8bda586ca0","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.2.2.tgz","fileCount":13,"integrity":"sha512-C45KK/W9KxT3Ss+L8u4y0+WNxYLJRW2T+1mJKSKDTXnFPM8AmCJdrFWSlfr7kzci/hyWnWmlTCfjSf6g52C+hQ==","signatures":[{"sig":"MEQCIFuPPg97VUNP21iinCeD65GFocFM205FKvvPZjIQftd8AiAL0+cDcDadNzyLNVqb1WlZ6avUQa+7coqtad9rdlw1PQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariakit%2freact-utils@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94895},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"docs":"ariakit docs --write","build":"ariakit build --index-only","clean":"ariakit clean"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2f1cb6f1-57b7-4be6-aeee-a211a2ad1a9a"}},"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@ariakit/store":"0.1.6","@ariakit/utils":"0.1.4"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.7","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-utils_0.2.2_1784125036003_0.4939433828346096","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@ariakit/react-utils","version":"0.2.3","keywords":["ariakit","react","utils"],"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","_id":"@ariakit/react-utils@0.2.3","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"homepage":"https://ariakit.com","dist":{"shasum":"f8b1389e601a60ce663476d651c2b9bb33ff550a","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.2.3.tgz","fileCount":13,"integrity":"sha512-fDaheb/7QEusanZb2oRT7mO55GTpQUyBOdjvQF5RPh3/CM15lm0TejLKN5bl1obmU5HRuByvckQmQvSyr8n/dw==","signatures":[{"sig":"MEUCIQD3MAN7gUM5Z+sKAulB/Rhh7+7g5M+splufBGN3WVcfugIgTQuS6IquE4GzxlOADViPhqMJFQTMPhd6IdSskrojgBQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariakit%2freact-utils@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94982},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"docs":"ariakit docs --write","build":"ariakit build --index-only","clean":"ariakit clean"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2f1cb6f1-57b7-4be6-aeee-a211a2ad1a9a"}},"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@ariakit/store":"0.1.7","@ariakit/utils":"0.1.5"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.7","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-utils_0.2.3_1784826869266_0.24390828569783163","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@ariakit/react-utils","version":"0.2.4","keywords":["ariakit","react","utils"],"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","_id":"@ariakit/react-utils@0.2.4","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"homepage":"https://ariakit.com","dist":{"shasum":"b2f2154ce2b531382dd8d4cb34d605b9395b53a0","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.2.4.tgz","fileCount":13,"integrity":"sha512-MzW0Sqhooa4xHUaFXaDnENqwtaXORCBkYLmZPkVYPhJBg/kqI6UCJkkuJcnkSh708yBooi+EOh0EP/eEvWBsFQ==","signatures":[{"sig":"MEQCIAgEPR8cozv+HfSRQirDYWcVf0VYdvAMdTW3c6jjiHfsAiBAQXqyRyPK3FD3QuHZFUiIgtsOhRzi0Ylc9/IKJ+OXTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariakit%2freact-utils@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":97573},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"docs":"ariakit docs --write","build":"ariakit build --index-only","clean":"ariakit clean"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2f1cb6f1-57b7-4be6-aeee-a211a2ad1a9a"}},"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@ariakit/store":"0.1.8","@ariakit/utils":"0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.8","vitest":"4.1.10","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-utils_0.2.4_1786295803408_0.8707000030148322","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@ariakit/react-utils","version":"0.2.5","keywords":["ariakit","react","utils"],"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","_id":"@ariakit/react-utils@0.2.5","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"homepage":"https://ariakit.com","dist":{"shasum":"9822939a8e59734ee0df0d9ed7d856d0bc3412c5","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.2.5.tgz","fileCount":13,"integrity":"sha512-VfE0o5SH3TxEoivA8KgKd6Z+h1zDIYdRPEKxTCEOuBFwMlayGZbOxmmZGBZdmkg1M3GTf4iNfUfpFqAh0mUYqw==","signatures":[{"sig":"MEUCICcxVVR/HLpNDJ/48wtpSQM864526Psv9WlF5rPYe/dhAiEAl4xlm34vu88IsJbPVBCbWNRZVAPdh7DCkk2f4h0vIOA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICwq9fp2fexPpaucp6LOoV2UHc39wfZu6pF4DHKBe7n6AiBuiEY6KbULP6iOc9Pkwfccn2to6NReMjYada5pfCP3NQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariakit%2freact-utils@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":100214},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"docs":"ariakit docs --write","build":"ariakit build --index-only","clean":"ariakit clean"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2f1cb6f1-57b7-4be6-aeee-a211a2ad1a9a"}},"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@ariakit/store":"0.1.9","@ariakit/utils":"0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.8","vitest":"4.1.11","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-utils_0.2.5_1787568790485_0.5556809779809675","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"_id":"@ariakit/react-utils@0.2.6","dist":{"shasum":"7fc287e73122930d17254c1c6f57d81da4c2e8d1","tarball":"https://registry.npmjs.org/@ariakit/react-utils/-/react-utils-0.2.6.tgz","fileCount":15,"integrity":"sha512-pjHqtwu6CgBgXmkkZQPuXbtuZXcfV25kRkIokLdbE3vrytKdgqRjRAPQ+4Qamwz4n5M6kFnA2Iwd4BK+egatpw==","signatures":[{"sig":"MEYCIQCW5tKkH+doSHXYmNmlipV8/BtSfxe2lc+kAUocV5QQrQIhAON+WhSMO2JKqDd/fBJYDn8Mf3+apyZuM7IA/N3N71iA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCJ37R933DRinJkWpnRnIr+gmxJPMphLPrUnpfpAslreAIhAKBplVrkNSEsEvKXub/G+xm0FjXG3P7T3JCJFHt/msZy"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariakit%2freact-utils@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":100361},"name":"@ariakit/react-utils","type":"module","author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"license":"MIT","scripts":{"docs":"ariakit docs --write","build":"ariakit build --index-only","clean":"ariakit clean"},"version":"0.2.6","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2f1cb6f1-57b7-4be6-aeee-a211a2ad1a9a"}},"homepage":"https://ariakit.com","keywords":["ariakit","react","utils"],"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","directories":{},"maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"sideEffects":false,"dependencies":{"@ariakit/store":"0.1.10","@ariakit/utils":"0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.3.0","vitest":"5.0.0","@ariakit/scripts":"0.0.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-utils_0.2.6_1789415698252_0.10842855119446049"}}},"time":{"created":"2026-05-23T13:51:15.140Z","modified":"2026-09-14T19:54:58.722Z","0.0.1":"2022-10-08T02:55:47.382Z","0.1.0":"2026-05-23T13:51:15.540Z","0.1.1":"2026-05-23T15:14:42.501Z","0.1.2":"2026-05-31T01:12:02.271Z","0.1.3":"2026-06-23T03:55:10.379Z","0.2.0":"2026-06-29T22:59:55.395Z","0.2.1":"2026-07-15T02:23:39.194Z","0.2.2":"2026-07-15T14:17:16.162Z","0.2.3":"2026-07-23T17:14:29.443Z","0.2.4":"2026-08-09T17:16:43.577Z","0.2.5":"2026-08-24T10:53:10.608Z","0.2.6":"2026-09-14T19:54:58.360Z"},"author":{"url":"https://github.com/diegohaz","name":"Diego Haz","email":"hazdiego@gmail.com"},"license":"MIT","homepage":"https://ariakit.com","keywords":["ariakit","react","utils"],"repository":{"url":"https://github.com/ariakit/ariakit.git","type":"git","directory":"packages/ariakit-react-utils"},"description":"Ariakit React utilities","maintainers":[{"name":"diegohaz","email":"hazdiego@gmail.com"},{"name":"ariakit-bot","email":"hazdiego+ariakit@gmail.com"},{"name":"benrodrs","email":"benrodrs@gmail.com"},{"name":"daniguardiola","email":"hi+accounts@daniguardio.la"}],"readme":"# @ariakit/react-utils\n\n**Important:** This package is an internal dependency of Ariakit and does not follow semantic versioning, meaning breaking changes may occur in patch and minor versions. You probably want to use [`@ariakit/react`](https://npmjs.org/package/@ariakit/react) instead.\n\nShared React utilities used by Ariakit React packages.\n\n## Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API reference](#api-reference)\n\n## Installation\n\n```sh\nnpm i @ariakit/react-utils\n```\n\n## Usage\n\nImport helpers from the package root:\n\n```ts\nimport { useEvent } from \"@ariakit/react-utils\";\n```\n\nThis package is ESM-only and exposes a single public entrypoint.\n\n<!-- ariakit-docs:start -->\n\n## API reference\n\n- [Hooks](#hooks)\n  - [`useSafeLayoutEffect`](#usesafelayouteffect)\n  - [`useInitialValue`](#useinitialvalue)\n  - [`useLiveRef`](#useliveref)\n  - [`useEvent`](#useevent)\n  - [`useTransactionState`](#usetransactionstate)\n  - [`useMergeRefs`](#usemergerefs)\n  - [`useId`](#useid)\n  - [`useDeferredValue`](#usedeferredvalue)\n  - [`useTagName`](#usetagname)\n  - [`useAttribute`](#useattribute)\n  - [`useUpdateEffect`](#useupdateeffect)\n  - [`useUpdateLayoutEffect`](#useupdatelayouteffect)\n  - [`useForceUpdate`](#useforceupdate)\n  - [`useBooleanEvent`](#usebooleanevent)\n  - [`useWrapElement`](#usewrapelement)\n  - [`usePortalRef`](#useportalref)\n  - [`useMetadataProps`](#usemetadataprops)\n  - [`useIsMouseMoving`](#useismousemoving)\n- [General utilities](#general-utilities)\n  - [`setRef`](#setref)\n  - [`isValidElementWithRef`](#isvalidelementwithref)\n  - [`getRefProperty`](#getrefproperty)\n  - [`mergeProps`](#mergeprops)\n- [System utilities](#system-utilities)\n  - [`forwardRef`](#forwardref)\n  - [`memo`](#memo)\n  - [`createElement`](#createelement)\n  - [`createHook`](#createhook)\n  - [`createStoreContext`](#createstorecontext)\n- [Type utilities](#type-utilities)\n  - [`RenderProp`](#renderprop)\n  - [`WrapElement`](#wrapelement)\n  - [`Options`](#options)\n  - [`HTMLProps`](#htmlprops)\n  - [`Props`](#props)\n  - [`Hook`](#hook)\n\n### Hooks\n\nReact hooks for refs, events, ids, effects, and element metadata.\n\n#### `useSafeLayoutEffect`\n\n```ts\nconst useSafeLayoutEffect: typeof React.useLayoutEffect;\n```\n\n`React.useLayoutEffect` that fallbacks to `React.useEffect` on server side.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useInitialValue`\n\n```ts\nfunction useInitialValue<T>(value: T | (() => T)): T;\n```\n\nReturns a value that never changes even if the argument is updated.\n\nExample:\n\n```ts\nfunction Component({ prop }) {\n  const initialProp = useInitialValue(prop);\n}\n```\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useLiveRef`\n\n```ts\nfunction useLiveRef<T>(value: T): RefObject<T>;\n```\n\nCreates a `React.RefObject` that is constantly updated with the incoming value.\n\nExample:\n\n```ts\nfunction Component({ prop }) {\n  const propRef = useLiveRef(prop);\n}\n```\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useEvent`\n\n```ts\nfunction useEvent<T extends AnyFunction>(callback?: T): T;\n```\n\nCreates a stable callback function that has access to the latest state and can be used within event handlers and effect callbacks. Throws when used in the render phase.\n\nExample:\n\n```ts\nfunction Component(props) {\n  const onClick = useEvent(props.onClick);\n  React.useEffect(() => {}, [onClick]);\n}\n```\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useTransactionState`\n\n```ts\nfunction useTransactionState<T>(\n  callback?: ((state: SetStateAction<T | null>) => void) | null,\n): readonly [T | null, React.Dispatch<SetStateAction<T | null>>];\n```\n\nCreates a React state that calls a callback function whenever the state changes and rolls back to the previous state on cleanup.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useMergeRefs`\n\n```ts\nfunction useMergeRefs(\n  ...refs: Array<Ref<any> | undefined>\n): ((value: unknown) => (() => void) | undefined) | undefined;\n```\n\nMerges React Refs into a single memoized function ref so you can pass it to an element.\n\nExample:\n\n```ts\nconst Component = React.forwardRef((props, ref) => {\n  const internalRef = React.useRef();\n  return <div {...props} ref={useMergeRefs(internalRef, ref)} />;\n});\n```\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useId`\n\n```ts\nfunction useId(defaultId?: string): string | undefined;\n```\n\nGenerates a unique ID. Uses React's useId if available.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useDeferredValue`\n\n```ts\nfunction useDeferredValue<T>(value: T): T;\n```\n\nUses React's useDeferredValue if available.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useTagName`\n\n```ts\nfunction useTagName(\n  refOrElement?: RefObject<HTMLElement | null> | HTMLElement | null,\n  type?: string | ComponentType,\n): string | undefined;\n```\n\nReturns the tag name by parsing an element ref.\n\nExample:\n\n```ts\nfunction Component(props) {\n  const ref = React.useRef();\n  const tagName = useTagName(ref, \"button\"); // div\n  return <div ref={ref} {...props} />;\n}\n```\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useAttribute`\n\n```ts\nfunction useAttribute(\n  refOrElement: RefObject<HTMLElement | null> | HTMLElement | null,\n  attributeName: string,\n  defaultValue?: string,\n): string | undefined;\n```\n\nReturns the attribute value of an element.\n\nExample:\n\n```ts\nfunction Component(props) {\n  const ref = React.useRef();\n  const role = useAttribute(ref, \"role\", props.role);\n  return <div ref={ref} {...props} />;\n}\n```\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useUpdateEffect`\n\n```ts\nfunction useUpdateEffect(effect: EffectCallback, deps?: DependencyList): void;\n```\n\nA `React.useEffect` that will not run on the first render.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useUpdateLayoutEffect`\n\n```ts\nfunction useUpdateLayoutEffect(\n  effect: EffectCallback,\n  deps?: DependencyList,\n): void;\n```\n\nA `React.useLayoutEffect` that will not run on the first render.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useForceUpdate`\n\n```ts\nfunction useForceUpdate(): [never[], React.ActionDispatch<[]>];\n```\n\nA React hook similar to `useState` and `useReducer`, but with the only purpose of re-rendering the component.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useBooleanEvent`\n\n```ts\nfunction useBooleanEvent<T extends unknown[]>(\n  booleanOrCallback: boolean | ((...args: T) => boolean),\n): (...args: T) => boolean;\n```\n\nReturns an event callback similar to `useEvent`, but this also accepts a boolean value, which will be turned into a function.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useWrapElement`\n\n```ts\nfunction useWrapElement<P>(\n  props: P & { wrapElement?: WrapElement },\n  callback: WrapElement,\n  deps: DependencyList = [],\n): P & { wrapElement: WrapElement };\n```\n\nReturns props with an additional `wrapElement` prop.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `usePortalRef`\n\n```ts\nfunction usePortalRef(\n  portalProp = false,\n  portalRefProp?:\n    RefCallback<HTMLElement> | MutableRefObject<HTMLElement | null>,\n): {\n  portalRef: ((value: unknown) => (() => void) | undefined) | undefined;\n  portalNode: HTMLElement | null;\n  domReady: true | HTMLElement | null;\n};\n```\n\nMerges the portalRef prop and returns a `domReady` to be used in the components that use Portal underneath.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useMetadataProps`\n\n```ts\nfunction useMetadataProps<T, K extends keyof any>(\n  props: { onLoadedMetadataCapture?: AnyFunction & { [key in K]?: T } },\n  key: K,\n  value: T,\n): readonly [\n  (AnyFunction & { [key in K]?: T | undefined })[K] | undefined,\n  { readonly onLoadedMetadataCapture: any },\n];\n```\n\nA hook that passes metadata props around without leaking them to the DOM.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `useIsMouseMoving`\n\n```ts\nfunction useIsMouseMoving(): () => boolean;\n```\n\nReturns a function that checks whether the mouse is moving.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n### General utilities\n\nHelpers for working with refs, elements, and props.\n\n#### `setRef`\n\n```ts\nfunction setRef<T>(\n  ref: RefCallback<T> | MutableRefObject<T> | null | undefined,\n  value: T,\n): void | (() => void);\n```\n\nSets both a function and object React ref.\n\nReturns a callback ref cleanup function when one is provided.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `isValidElementWithRef`\n\n```ts\nfunction isValidElementWithRef<P extends { ref?: Ref<any> }>(\n  element: unknown,\n): element is ReactElement<P> & { ref?: Ref<any> };\n```\n\nChecks if an element is a valid React element with a ref.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `getRefProperty`\n\n```ts\nfunction getRefProperty(element: unknown): Ref<any> | undefined;\n```\n\nGets the ref property from a React element.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `mergeProps`\n\n```ts\nfunction mergeProps<T extends HTMLAttributes<any>>(base: T, overrides: T): T;\n```\n\nMerges two sets of props.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n### System utilities\n\nHelpers for creating and composing Ariakit React components.\n\n#### `forwardRef`\n\n```ts\nfunction forwardRef<T extends React.FC<any>>(render: T): T;\n```\n\nThe same as `React.forwardRef` but passes the `ref` as a prop and returns a component with the same generic type.\n\nProps holding `undefined` are dropped, so passing one behaves the same as omitting it and the component keeps the value it computes for itself.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `memo`\n\n```ts\nfunction memo<T extends React.FC<any>>(\n  Component: T,\n  propsAreEqual?: (\n    prevProps: Readonly<React.ComponentPropsWithoutRef<T>>,\n    nextProps: Readonly<React.ComponentPropsWithoutRef<T>>,\n  ) => boolean,\n): T;\n```\n\nThe same as `React.memo` but returns a component with the same generic type.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `createElement`\n\n```ts\nfunction createElement(\n  Type: React.ElementType,\n  props: Props<React.ElementType, Options>,\n): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;\n```\n\nCreates a React element that supports the `render` and `wrapElement` props.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `createHook`\n\n```ts\nfunction createHook<\n  T extends React.ElementType,\n  P extends AnyObject = EmptyObject,\n>(useProps: (props: Props<T, P>) => HTMLProps<T, P>): Hook<T, P>;\n```\n\nCreates a component hook that accepts props and returns props so they can be passed to a React element.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `createStoreContext`\n\n```ts\ntype StoreProvider<T extends Store> = React.ComponentType<{\n  value: T | undefined;\n  children?: React.ReactNode;\n}>;\n\nfunction createStoreContext<T extends Store>(\n  providers: StoreProvider<T>[] = [],\n  scopedProviders: StoreProvider<T>[] = [],\n): {\n  context: React.Context<T | undefined>;\n  scopedContext: React.Context<T | undefined>;\n  useContext: () => T | undefined;\n  useScopedContext: (onlyScoped?: boolean) => T | undefined;\n  useProviderContext: () => T | undefined;\n  ContextProvider: (\n    props: React.ComponentPropsWithoutRef<React.Provider<T | undefined>>,\n  ) => React.JSX.Element;\n  ScopedContextProvider: (\n    props: React.ComponentPropsWithoutRef<React.Provider<T | undefined>>,\n  ) => React.JSX.Element;\n};\n```\n\nCreates an Ariakit store context with hooks and provider components.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n### Type utilities\n\nShared types for Ariakit React components.\n\n#### `RenderProp`\n\n```ts\ntype RenderProp<P = React.HTMLAttributes<any> & { ref?: React.Ref<any> }> = (\n  props: P,\n) => React.ReactNode;\n```\n\nRender prop type.\n\nExample:\n\n```ts\nconst children: RenderProp = (props) => <div {...props} />;\n```\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `WrapElement`\n\n```ts\ntype WrapElement = (element: React.ReactElement) => React.ReactElement;\n```\n\nThe `wrapElement` prop.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `Options`\n\n```ts\ninterface Options {\n  wrapElement?: WrapElement;\n  /**\n   * Allows the component to be rendered as a different HTML element or React\n   * component. The value can be a React element or a function that takes in the\n   * original component props and gives back a React element with the props\n   * merged.\n   *\n   * Some Ariakit components detect the type of the underlying element when they\n   * mount. If the render element's type may change while the component is\n   * mounted, pass a\n   * [`key`](https://react.dev/learn/preserving-and-resetting-state) prop that\n   * changes with the element type so React remounts the component with the new\n   * element. Remounting resets uncontrolled state, so keep the relevant state\n   // ... 11 more lines\n   * for more details.\n   */\n  render?: RenderProp | React.ReactElement;\n}\n```\n\nCustom props including the `render` prop.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `HTMLProps`\n\n```ts\ntype HTMLProps<\n  T extends React.ElementType,\n  P extends AnyObject = EmptyObject,\n> = Omit<React.ComponentPropsWithRef<T>, keyof P> & {\n  [index: `data-${string}`]: unknown;\n};\n```\n\nHTML props based on the element type, excluding custom props.\n\nExample:\n\n```ts\ntype ButtonHTMLProps = HTMLProps<\"button\", { custom?: boolean }>;\n```\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `Props`\n\n```ts\ntype Props<T extends React.ElementType, P extends AnyObject = EmptyObject> = P &\n  HTMLProps<T, P>;\n```\n\nProps based on the element type, including custom props.\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n#### `Hook`\n\n```ts\ntype Hook<T extends React.ElementType, P extends AnyObject = EmptyObject> = <\n  ElementType extends React.ElementType = T,\n>(\n  props?: Props<ElementType, P>,\n) => HTMLProps<ElementType, P>;\n```\n\nA component hook that supports the `render` prop and returns HTML props based on the element type.\n\nExample:\n\n```ts\ntype UseButton = Hook<\"button\", { custom?: boolean }>;\n```\n\n<div align=\"right\">\n  <a href=\"#api-reference\">&uarr; back to top</a>\n</div>\n\n<!-- ariakit-docs:end -->\n","readmeFilename":""}