{"_id":"@remix-run/ui","_rev":"12-4e534e88f827ce6e261ffbb281ec9701","name":"@remix-run/ui","dist-tags":{"latest":"0.9.0"},"versions":{"0.0.0":{"name":"@remix-run/ui","version":"0.0.0","license":"MIT","_id":"@remix-run/ui@0.0.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"4a525ab5d5ca2dcca8ddfde19d31a435e261eb1f","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.0.0.tgz","fileCount":2,"integrity":"sha512-vmp9Jc0MZQxF5xJY7GXXLSCt2nRVnA5E5ket5y3eX/E11gAoWKuMPOD5flX4/ou27jTtVPT38sawT0SnQdmjLA==","signatures":[{"sig":"MEUCIQCMXepM18PgkUjG9FXffMdYE5PiJ1e8o4AYfZvF4Z+eYgIgWdY5y+OWNOyjdTqRix86/YbDERQfqKX2tLuqMyYu6I0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":451},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"11.12.1","description":"Placeholder package for Remix CI/OIDC setup","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.0.0_1777483391734_0.21500340041583854","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@remix-run/ui","version":"0.1.0","keywords":["remix","ui","theming","design-tokens","css-variables","mixins","glyphs","component-styling"],"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","_id":"@remix-run/ui@0.1.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"4c3ac84d1196f07e8000db8f0c3661365a0594b9","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.1.0.tgz","fileCount":273,"integrity":"sha512-XU1h9n6eKjAgUjM/FlNQCfPMuqxcELcKHCp4/PdcKBkAeewLZuMNb5XAWCdTTKx6jKv15uwJBWcfeiloTHfE6w==","signatures":[{"sig":"MEUCIFjm5VExgFIXKWcqXXym4/MlbVmsy/Fwg/ONXQjmahVTAiEAqIpzKLDd8X3eA3GXDjFml+yTtbyAq86mBQFP7ES/OKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1806309},"type":"module","_from":"file:remix-run-ui-0.1.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./menu":{"types":"./dist/components/menu/menu.d.ts","default":"./dist/components/menu/menu.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./glyph":{"types":"./dist/components/glyph/glyph.d.ts","default":"./dist/components/glyph/glyph.js"},"./theme":{"types":"./dist/theme/theme.d.ts","default":"./dist/theme/theme.js"},"./anchor":{"types":"./dist/components/anchor/anchor.d.ts","default":"./dist/components/anchor/anchor.js"},"./button":{"types":"./dist/components/button/button.d.ts","default":"./dist/components/button/button.js"},"./select":{"types":"./dist/components/select/select.d.ts","default":"./dist/components/select/select.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./listbox":{"types":"./dist/components/listbox/listbox.d.ts","default":"./dist/components/listbox/listbox.js"},"./popover":{"types":"./dist/components/popover/popover.d.ts","default":"./dist/components/popover/popover.js"},"./combobox":{"types":"./dist/components/combobox/combobox.d.ts","default":"./dist/components/combobox/combobox.js"},"./accordion":{"types":"./dist/components/accordion/accordion.d.ts","default":"./dist/components/accordion/accordion.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./separator":{"types":"./dist/components/separator/separator.d.ts","default":"./dist/components/separator/separator.js"},"./breadcrumbs":{"types":"./dist/components/breadcrumbs/breadcrumbs.d.ts","default":"./dist/components/breadcrumbs/breadcrumbs.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./scroll-lock":{"types":"./dist/utils/scroll-lock.d.ts","default":"./dist/utils/scroll-lock.js"},"./package.json":"./package.json","./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"}},"scripts":{"lint":"pnpm -w exec oxlint packages/ui -A all --quiet","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint:fix":"pnpm -w exec oxlint packages/ui -A all --fix --quiet","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"_resolved":"/tmp/681b78f22d6a0a7aad54ec1bb981d874/remix-run-ui-0.1.0.tgz","_integrity":"sha512-XU1h9n6eKjAgUjM/FlNQCfPMuqxcELcKHCp4/PdcKBkAeewLZuMNb5XAWCdTTKx6jKv15uwJBWcfeiloTHfE6w==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"11.11.0","description":"UI tokens, mixins, and glyphs for Remix components","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"@types/dom-navigation":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","playwright":"^1.59.0","typescript":"^5.9.3","@types/node":"^24.6.0","@vitest/browser":"^3.2.4","@vitest/coverage-v8":"^3.2.4","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.0_1777483757440_0.43698913982279386","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@remix-run/ui","version":"0.1.1","keywords":["remix","ui","theming","design-tokens","css-variables","mixins","glyphs","component-styling"],"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","_id":"@remix-run/ui@0.1.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"b27e40189165c13ff71bdfe69e094992717917eb","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.1.1.tgz","fileCount":272,"integrity":"sha512-yn5oL/uZ8izabJxjeKhVo9lBGhb+ZhOJHWk5Tu7YJL3RSxvP7BrO/ofrdWUcOXSsNxao3Lj+PF1lVmnTBf8nfQ==","signatures":[{"sig":"MEUCIQDl2+lUzNvPGi0iak4Q6b1dIie0NSmDk15e01pCtw+aaAIgNv1puwinwr6RCWfnBOJUe+2XU9C40Y+RDrTJkWI+hMw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1812089},"type":"module","_from":"file:remix-run-ui-0.1.1.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./menu":{"types":"./dist/components/menu/menu.d.ts","default":"./dist/components/menu/menu.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./glyph":{"types":"./dist/components/glyph/glyph.d.ts","default":"./dist/components/glyph/glyph.js"},"./theme":{"types":"./dist/theme/theme.d.ts","default":"./dist/theme/theme.js"},"./anchor":{"types":"./dist/components/anchor/anchor.d.ts","default":"./dist/components/anchor/anchor.js"},"./button":{"types":"./dist/components/button/button.d.ts","default":"./dist/components/button/button.js"},"./select":{"types":"./dist/components/select/select.d.ts","default":"./dist/components/select/select.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./listbox":{"types":"./dist/components/listbox/listbox.d.ts","default":"./dist/components/listbox/listbox.js"},"./popover":{"types":"./dist/components/popover/popover.d.ts","default":"./dist/components/popover/popover.js"},"./combobox":{"types":"./dist/components/combobox/combobox.d.ts","default":"./dist/components/combobox/combobox.js"},"./accordion":{"types":"./dist/components/accordion/accordion.d.ts","default":"./dist/components/accordion/accordion.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./separator":{"types":"./dist/components/separator/separator.d.ts","default":"./dist/components/separator/separator.js"},"./breadcrumbs":{"types":"./dist/components/breadcrumbs/breadcrumbs.d.ts","default":"./dist/components/breadcrumbs/breadcrumbs.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./scroll-lock":{"types":"./dist/utils/scroll-lock.d.ts","default":"./dist/utils/scroll-lock.js"},"./package.json":"./package.json","./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"}},"scripts":{"lint":"pnpm -w exec oxlint packages/ui -A all --quiet","test":"remix-test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint:fix":"pnpm -w exec oxlint packages/ui -A all --fix --quiet","typecheck":"tsc --noEmit","test:watch":"remix-test --watch","test:coverage":"remix-test --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"_resolved":"/tmp/177b0cbfca81bebbb6417092a1f82088/remix-run-ui-0.1.1.tgz","_integrity":"sha512-yn5oL/uZ8izabJxjeKhVo9lBGhb+ZhOJHWk5Tu7YJL3RSxvP7BrO/ofrdWUcOXSsNxao3Lj+PF1lVmnTBf8nfQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"11.11.0","description":"UI tokens, mixins, and glyphs for Remix components","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"@types/dom-navigation":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"playwright":"^1.59.0","typescript":"^5.9.3","@types/node":"^24.6.0","@remix-run/test":"0.3.0","@remix-run/assert":"0.2.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.1_1777576244858_0.31790153766615403","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@remix-run/ui","version":"0.1.2","keywords":["remix","ui","theming","design-tokens","css-variables","mixins","glyphs","component-styling"],"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","_id":"@remix-run/ui@0.1.2","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"47faff3911c880c9ec7b53918dac989fbc647ec1","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.1.2.tgz","fileCount":368,"integrity":"sha512-k7olhXoiLAOu4mqTiyM+oBPuCmVU2qsY9kO6oxLvS3nrcURKxHkmNVw2i/MPJ1/G2nm1dKJfqcoMXU04wu1Fbw==","signatures":[{"sig":"MEQCIA/+kzr2OeOEuTQS+gwOZp9YF83UsysS20RfG93RQplKAiAnX34x/68jLmmnxEs6NdwWk7xpyxCQVTBBzu2Jav0Idg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2010700},"type":"module","_from":"file:remix-run-ui-0.1.2.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./menu":{"types":"./dist/components/menu/menu.d.ts","default":"./dist/components/menu/menu.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./glyph":{"types":"./dist/components/glyph/glyph.d.ts","default":"./dist/components/glyph/glyph.js"},"./theme":{"types":"./dist/theme/theme.d.ts","default":"./dist/theme/theme.js"},"./anchor":{"types":"./dist/components/anchor/anchor.d.ts","default":"./dist/components/anchor/anchor.js"},"./button":{"types":"./dist/components/button/button.d.ts","default":"./dist/components/button/button.js"},"./select":{"types":"./dist/components/select/select.d.ts","default":"./dist/components/select/select.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./listbox":{"types":"./dist/components/listbox/listbox.d.ts","default":"./dist/components/listbox/listbox.js"},"./popover":{"types":"./dist/components/popover/popover.d.ts","default":"./dist/components/popover/popover.js"},"./combobox":{"types":"./dist/components/combobox/combobox.d.ts","default":"./dist/components/combobox/combobox.js"},"./accordion":{"types":"./dist/components/accordion/accordion.d.ts","default":"./dist/components/accordion/accordion.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./separator":{"types":"./dist/components/separator/separator.d.ts","default":"./dist/components/separator/separator.js"},"./breadcrumbs":{"types":"./dist/components/breadcrumbs/breadcrumbs.d.ts","default":"./dist/components/breadcrumbs/breadcrumbs.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./scroll-lock":{"types":"./dist/utils/scroll-lock.d.ts","default":"./dist/utils/scroll-lock.js"},"./package.json":"./package.json","./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"}},"scripts":{"lint":"pnpm -w exec oxlint packages/ui -A all --quiet","test":"remix-test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint:fix":"pnpm -w exec oxlint packages/ui -A all --fix --quiet","typecheck":"tsc --noEmit","test:watch":"remix-test --watch","test:coverage":"remix-test --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"_resolved":"/tmp/d94dc547cf37036b9cf9ae7984c85d35/remix-run-ui-0.1.2.tgz","_integrity":"sha512-k7olhXoiLAOu4mqTiyM+oBPuCmVU2qsY9kO6oxLvS3nrcURKxHkmNVw2i/MPJ1/G2nm1dKJfqcoMXU04wu1Fbw==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"11.12.1","description":"UI tokens, mixins, and glyphs for Remix components","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@types/dom-navigation":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"playwright":"^1.59.0","typescript":"^5.9.3","@types/node":"^24.6.0","@remix-run/test":"0.4.0","@remix-run/assert":"0.2.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.2_1779247233499_0.6431919821648371","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@remix-run/ui","version":"0.2.0","keywords":["remix","ui","theming","design-tokens","css-variables","mixins","glyphs","component-styling"],"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","_id":"@remix-run/ui@0.2.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"3439bc5620744c577ff70118606dcecab2b2247c","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.2.0.tgz","fileCount":368,"integrity":"sha512-KSqtZGRZVgGjX3uEsdBuIHElWcgVi6HS6QnIMrpAcuh/fDxceGwNyKaskujtTU4BQmm+PClYyVfkeNx2l+BaCg==","signatures":[{"sig":"MEQCIAkEv8rS9A3UV0tRRtbPzJ3QjgyARcsZFJJCgm3jMI34AiBzEjgMiVeGVNEzrj8x6kHWb6wGVlyoGngR7md8AXC8fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2019404},"type":"module","_from":"file:remix-run-ui-0.2.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./menu":{"types":"./dist/components/menu/menu.d.ts","default":"./dist/components/menu/menu.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./glyph":{"types":"./dist/components/glyph/glyph.d.ts","default":"./dist/components/glyph/glyph.js"},"./theme":{"types":"./dist/theme/theme.d.ts","default":"./dist/theme/theme.js"},"./anchor":{"types":"./dist/components/anchor/anchor.d.ts","default":"./dist/components/anchor/anchor.js"},"./button":{"types":"./dist/components/button/button.d.ts","default":"./dist/components/button/button.js"},"./select":{"types":"./dist/components/select/select.d.ts","default":"./dist/components/select/select.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./listbox":{"types":"./dist/components/listbox/listbox.d.ts","default":"./dist/components/listbox/listbox.js"},"./popover":{"types":"./dist/components/popover/popover.d.ts","default":"./dist/components/popover/popover.js"},"./combobox":{"types":"./dist/components/combobox/combobox.d.ts","default":"./dist/components/combobox/combobox.js"},"./accordion":{"types":"./dist/components/accordion/accordion.d.ts","default":"./dist/components/accordion/accordion.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./separator":{"types":"./dist/components/separator/separator.d.ts","default":"./dist/components/separator/separator.js"},"./breadcrumbs":{"types":"./dist/components/breadcrumbs/breadcrumbs.d.ts","default":"./dist/components/breadcrumbs/breadcrumbs.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./scroll-lock":{"types":"./dist/utils/scroll-lock.d.ts","default":"./dist/utils/scroll-lock.js"},"./package.json":"./package.json","./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"}},"scripts":{"lint":"pnpm -w exec oxlint packages/ui -A all --quiet","test":"remix-test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint:fix":"pnpm -w exec oxlint packages/ui -A all --fix --quiet","typecheck":"tsc --noEmit","test:watch":"remix-test --watch","test:coverage":"remix-test --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"_resolved":"/tmp/afb4d87ff8aaf8781584bd79127035fe/remix-run-ui-0.2.0.tgz","_integrity":"sha512-KSqtZGRZVgGjX3uEsdBuIHElWcgVi6HS6QnIMrpAcuh/fDxceGwNyKaskujtTU4BQmm+PClYyVfkeNx2l+BaCg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"11.12.1","description":"UI tokens, mixins, and glyphs for Remix components","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@types/dom-navigation":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"playwright":"^1.59.0","typescript":"^5.9.3","@types/node":"^24.6.0","@remix-run/test":"0.4.1","@remix-run/assert":"0.2.1","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.2.0_1779308198757_0.7789814669517139","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@remix-run/ui","version":"0.3.0","keywords":["remix","ui","theming","design-tokens","css-variables","mixins","glyphs","component-styling"],"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","_id":"@remix-run/ui@0.3.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"3175b13717c9894ce599b51d4a5578f0c846c072","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.3.0.tgz","fileCount":488,"integrity":"sha512-5zWmsnrls7UPioYg5vRNK3YQam5O3GGZBPONgi50f1Si3QPIdjNQvOEN2Qj1TcY3ehtLcsGgtBbba6AsXRR85A==","signatures":[{"sig":"MEUCIDpF9lxVLIoBCjUM9MhhQrrSewe+AAcl3REwn/9mkszIAiEAqBDPibcB+GL6EX9XXGAAuaiOP5gWacis7jP2rqmfQ5Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2405798},"type":"module","_from":"file:remix-run-ui-0.3.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./menu":{"types":"./dist/components/menu/menu.d.ts","default":"./dist/components/menu/menu.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./glyph":{"types":"./dist/components/glyph/glyph.d.ts","default":"./dist/components/glyph/glyph.js"},"./theme":{"types":"./dist/theme/theme.d.ts","default":"./dist/theme/theme.js"},"./anchor":{"types":"./dist/components/anchor/anchor.d.ts","default":"./dist/components/anchor/anchor.js"},"./button":{"types":"./dist/components/button/button.d.ts","default":"./dist/components/button/button.js"},"./select":{"types":"./dist/components/select/select.d.ts","default":"./dist/components/select/select.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./listbox":{"types":"./dist/components/listbox/listbox.d.ts","default":"./dist/components/listbox/listbox.js"},"./popover":{"types":"./dist/components/popover/popover.d.ts","default":"./dist/components/popover/popover.js"},"./combobox":{"types":"./dist/components/combobox/combobox.d.ts","default":"./dist/components/combobox/combobox.js"},"./accordion":{"types":"./dist/components/accordion/accordion.d.ts","default":"./dist/components/accordion/accordion.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./separator":{"types":"./dist/components/separator/separator.d.ts","default":"./dist/components/separator/separator.js"},"./breadcrumbs":{"types":"./dist/components/breadcrumbs/breadcrumbs.d.ts","default":"./dist/components/breadcrumbs/breadcrumbs.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./scroll-lock":{"types":"./dist/utils/scroll-lock.d.ts","default":"./dist/utils/scroll-lock.js"},"./package.json":"./package.json","./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"}},"scripts":{"lint":"pnpm -w exec oxlint packages/ui -A all --quiet","test":"remix-test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint:fix":"pnpm -w exec oxlint packages/ui -A all --fix --quiet","typecheck":"tsc --noEmit","test:watch":"remix-test --watch","test:coverage":"remix-test --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"_resolved":"/tmp/8aa2cb05e4daf65d40209234fdf2ba43/remix-run-ui-0.3.0.tgz","_integrity":"sha512-5zWmsnrls7UPioYg5vRNK3YQam5O3GGZBPONgi50f1Si3QPIdjNQvOEN2Qj1TcY3ehtLcsGgtBbba6AsXRR85A==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"11.13.0","description":"UI tokens, mixins, and glyphs for Remix components","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@types/dom-navigation":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"playwright":"^1.60.0","typescript":"^5.9.3","@types/node":"^24.6.0","@remix-run/test":"0.4.2","@remix-run/assert":"0.2.1","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.3.0_1780078565726_0.0333425050470042","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@remix-run/ui","version":"0.4.0","keywords":["remix","ui","headless","components","mixins","runtime","primitives"],"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","_id":"@remix-run/ui@0.4.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"800e6689c8c2c1ea09080a2947a44066c49a9776","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.4.0.tgz","fileCount":426,"integrity":"sha512-0whpy2s0V5ZHsErcEPESUZ7McmKQ3Nn1Ut5j4CkQVeos5VT3e1z/+osERMywUNTo2nyeUMpEMte5bFmaoleI3g==","signatures":[{"sig":"MEUCIEfSZZCxdVOwgzu227+LZ4C6YLIW3J/RcyU6phOtEQuBAiEAzuRz1/p2l3lnPQu+Q1NLx9swKVviwqk8sBYpS/dS3bY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2232972},"type":"module","_from":"file:remix-run-ui-0.4.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./menu":{"types":"./dist/menu/index.d.ts","default":"./dist/menu/index.js"},"./tabs":{"types":"./dist/tabs/index.d.ts","default":"./dist/tabs/index.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./input":{"types":"./dist/input/index.d.ts","default":"./dist/input/index.js"},"./radio":{"types":"./dist/radio/index.d.ts","default":"./dist/radio/index.js"},"./anchor":{"types":"./dist/anchor/index.d.ts","default":"./dist/anchor/index.js"},"./button":{"types":"./dist/button/index.d.ts","default":"./dist/button/index.js"},"./select":{"types":"./dist/select/index.d.ts","default":"./dist/select/index.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./toggle":{"types":"./dist/toggle/index.d.ts","default":"./dist/toggle/index.js"},"./listbox":{"types":"./dist/listbox/index.d.ts","default":"./dist/listbox/index.js"},"./popover":{"types":"./dist/popover/index.d.ts","default":"./dist/popover/index.js"},"./checkbox":{"types":"./dist/checkbox/index.d.ts","default":"./dist/checkbox/index.js"},"./combobox":{"types":"./dist/combobox/index.d.ts","default":"./dist/combobox/index.js"},"./accordion":{"types":"./dist/accordion/index.d.ts","default":"./dist/accordion/index.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./breadcrumbs":{"types":"./dist/breadcrumbs/index.d.ts","default":"./dist/breadcrumbs/index.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./package.json":"./package.json","./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./menu/primitives":{"types":"./dist/menu/primitives.d.ts","default":"./dist/menu/primitives.js"},"./tabs/primitives":{"types":"./dist/tabs/primitives.d.ts","default":"./dist/tabs/primitives.js"},"./select/primitives":{"types":"./dist/select/primitives.d.ts","default":"./dist/select/primitives.js"},"./toggle/primitives":{"types":"./dist/toggle/primitives.d.ts","default":"./dist/toggle/primitives.js"},"./combobox/primitives":{"types":"./dist/combobox/primitives.d.ts","default":"./dist/combobox/primitives.js"},"./accordion/primitives":{"types":"./dist/accordion/primitives.d.ts","default":"./dist/accordion/primitives.js"}},"scripts":{"lint":"pnpm -w exec oxlint packages/ui --max-warnings=0","test":"remix-test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint:fix":"pnpm -w exec oxlint packages/ui --fix --max-warnings=0","typecheck":"tsc --noEmit","test:watch":"remix-test --watch","test:coverage":"remix-test --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"_resolved":"/tmp/f86cdcc55fa87f36cab94aaea125bc19/remix-run-ui-0.4.0.tgz","_integrity":"sha512-0whpy2s0V5ZHsErcEPESUZ7McmKQ3Nn1Ut5j4CkQVeos5VT3e1z/+osERMywUNTo2nyeUMpEMte5bFmaoleI3g==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"11.13.0","description":"UI runtime, headless primitives, and styled components for Remix","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{"@types/dom-navigation":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"playwright":"^1.60.0","typescript":"^5.9.3","@types/node":"^24.6.0","@remix-run/test":"0.5.0","@remix-run/assert":"0.3.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.4.0_1782932512623_0.3829875292415852","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@remix-run/ui","version":"0.5.0","keywords":["remix","ui","headless","components","mixins","runtime","primitives"],"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","_id":"@remix-run/ui@0.5.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"74273e1547bbb33e42b233928b43940cb445d1f7","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.5.0.tgz","fileCount":454,"integrity":"sha512-Cc8GZcXMp/E/3xy6yUTPqCOgVo34GH9OHMM4mdx4RMadCK7C/XzAOJHqLWX1d+yEMl0d1YUK0WV3ZyzFVTOC/w==","signatures":[{"sig":"MEYCIQDIUzw7F52ES2zoDA/XZTr8T+RWWpxt8wppYNE2RYi+KwIhAIzOVHQvuAfq5Ow7+dKYecusFpRUd3JlAZTyd9YwMvHI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2373006},"type":"module","_from":"file:remix-run-ui-0.5.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./menu":{"types":"./dist/menu/index.d.ts","default":"./dist/menu/index.js"},"./tabs":{"types":"./dist/tabs/index.d.ts","default":"./dist/tabs/index.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./input":{"types":"./dist/input/index.d.ts","default":"./dist/input/index.js"},"./radio":{"types":"./dist/radio/index.d.ts","default":"./dist/radio/index.js"},"./anchor":{"types":"./dist/anchor/index.d.ts","default":"./dist/anchor/index.js"},"./button":{"types":"./dist/button/index.d.ts","default":"./dist/button/index.js"},"./select":{"types":"./dist/select/index.d.ts","default":"./dist/select/index.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./toggle":{"types":"./dist/toggle/index.d.ts","default":"./dist/toggle/index.js"},"./listbox":{"types":"./dist/listbox/index.d.ts","default":"./dist/listbox/index.js"},"./popover":{"types":"./dist/popover/index.d.ts","default":"./dist/popover/index.js"},"./checkbox":{"types":"./dist/checkbox/index.d.ts","default":"./dist/checkbox/index.js"},"./combobox":{"types":"./dist/combobox/index.d.ts","default":"./dist/combobox/index.js"},"./accordion":{"types":"./dist/accordion/index.d.ts","default":"./dist/accordion/index.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./breadcrumbs":{"types":"./dist/breadcrumbs/index.d.ts","default":"./dist/breadcrumbs/index.js"},"./dev/refresh":{"types":"./dist/dev/refresh.d.ts","default":"./dist/dev/refresh.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./package.json":"./package.json","./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./menu/primitives":{"types":"./dist/menu/primitives.d.ts","default":"./dist/menu/primitives.js"},"./tabs/primitives":{"types":"./dist/tabs/primitives.d.ts","default":"./dist/tabs/primitives.js"},"./select/primitives":{"types":"./dist/select/primitives.d.ts","default":"./dist/select/primitives.js"},"./toggle/primitives":{"types":"./dist/toggle/primitives.d.ts","default":"./dist/toggle/primitives.js"},"./combobox/primitives":{"types":"./dist/combobox/primitives.d.ts","default":"./dist/combobox/primitives.js"},"./accordion/primitives":{"types":"./dist/accordion/primitives.d.ts","default":"./dist/accordion/primitives.js"}},"scripts":{"lint":"pnpm -w exec oxlint packages/ui --max-warnings=0","test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint:fix":"pnpm -w exec oxlint packages/ui --fix --max-warnings=0","typecheck":"tsc --noEmit","test:watch":"remix test --watch","test:coverage":"remix test --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"_resolved":"/tmp/3fd95e1e73debdf6eb5225206189b829/remix-run-ui-0.5.0.tgz","_integrity":"sha512-Cc8GZcXMp/E/3xy6yUTPqCOgVo34GH9OHMM4mdx4RMadCK7C/XzAOJHqLWX1d+yEMl0d1YUK0WV3ZyzFVTOC/w==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"11.16.0","description":"UI runtime, headless primitives, and styled components for Remix","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@types/dom-navigation":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"playwright":"^1.60.0","typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.0","@remix-run/assert":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.5.0_1786666373823_0.4741426060845504","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@remix-run/ui","version":"0.6.0","keywords":["remix","ui","headless","components","mixins","runtime","primitives"],"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","_id":"@remix-run/ui@0.6.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"68ba2c163b9a02bc61b422d6681111ea2f24417f","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.6.0.tgz","fileCount":458,"integrity":"sha512-b3UvKt3KiyaO24Y+Etu0jl4wI6h7U9FvnLv+8EEN8BbsRczX+rPB+vAccCIy5fLjGEvw7neemHJgwuIsFhkyDA==","signatures":[{"sig":"MEYCIQDeY3emyQ1+Rwl2AIukqmavJF2M1HXeM2fm2c3xoe1uNgIhANPllOyZ6llc6CjDo/5qXEhAa64AIHwiGTVPZBGNfTl2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2394157},"type":"module","_from":"file:remix-run-ui-0.6.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./menu":{"types":"./dist/menu/index.d.ts","default":"./dist/menu/index.js"},"./tabs":{"types":"./dist/tabs/index.d.ts","default":"./dist/tabs/index.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./input":{"types":"./dist/input/index.d.ts","default":"./dist/input/index.js"},"./radio":{"types":"./dist/radio/index.d.ts","default":"./dist/radio/index.js"},"./anchor":{"types":"./dist/anchor/index.d.ts","default":"./dist/anchor/index.js"},"./button":{"types":"./dist/button/index.d.ts","default":"./dist/button/index.js"},"./select":{"types":"./dist/select/index.d.ts","default":"./dist/select/index.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./toggle":{"types":"./dist/toggle/index.d.ts","default":"./dist/toggle/index.js"},"./listbox":{"types":"./dist/listbox/index.d.ts","default":"./dist/listbox/index.js"},"./popover":{"types":"./dist/popover/index.d.ts","default":"./dist/popover/index.js"},"./checkbox":{"types":"./dist/checkbox/index.d.ts","default":"./dist/checkbox/index.js"},"./combobox":{"types":"./dist/combobox/index.d.ts","default":"./dist/combobox/index.js"},"./accordion":{"types":"./dist/accordion/index.d.ts","default":"./dist/accordion/index.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./breadcrumbs":{"types":"./dist/breadcrumbs/index.d.ts","default":"./dist/breadcrumbs/index.js"},"./dev/refresh":{"types":"./dist/dev/refresh.d.ts","default":"./dist/dev/refresh.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./package.json":"./package.json","./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./menu/primitives":{"types":"./dist/menu/primitives.d.ts","default":"./dist/menu/primitives.js"},"./tabs/primitives":{"types":"./dist/tabs/primitives.d.ts","default":"./dist/tabs/primitives.js"},"./select/primitives":{"types":"./dist/select/primitives.d.ts","default":"./dist/select/primitives.js"},"./toggle/primitives":{"types":"./dist/toggle/primitives.d.ts","default":"./dist/toggle/primitives.js"},"./combobox/primitives":{"types":"./dist/combobox/primitives.d.ts","default":"./dist/combobox/primitives.js"},"./accordion/primitives":{"types":"./dist/accordion/primitives.d.ts","default":"./dist/accordion/primitives.js"}},"scripts":{"lint":"pnpm -w exec oxlint packages/ui --max-warnings=0","test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint:fix":"pnpm -w exec oxlint packages/ui --fix --max-warnings=0","typecheck":"tsc --noEmit","test:watch":"remix test --watch","test:coverage":"remix test --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"_resolved":"/tmp/1bba7657b0643cb017b3ecb8669b60f5/remix-run-ui-0.6.0.tgz","_integrity":"sha512-b3UvKt3KiyaO24Y+Etu0jl4wI6h7U9FvnLv+8EEN8BbsRczX+rPB+vAccCIy5fLjGEvw7neemHJgwuIsFhkyDA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"11.17.0","description":"UI runtime, headless primitives, and styled components for Remix","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@types/dom-navigation":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"playwright":"^1.60.0","typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.0","@remix-run/assert":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.6.0_1786994206078_0.39824960164912926","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@remix-run/ui","version":"0.7.0","keywords":["remix","ui","headless","components","mixins","runtime","primitives"],"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","_id":"@remix-run/ui@0.7.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"48380769ebbc693676e779575ce1cd2c61fcdf29","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.7.0.tgz","fileCount":458,"integrity":"sha512-SPgbmHOnHAGxZiyJhW7wxGBnk7lYdY5GlYj1Chj5hpHH+3IAChpCcwUwniqbN8Wddwf6G4oitN/YhGFarqPIUg==","signatures":[{"sig":"MEUCIQDMjWS8VHOLpMMPW1lB3vEtaZhN6llr11C9fd6SlCEmiQIgQ01ePvdoc08EyUwc5dXak3pxZHL4fXGFDUV2xBDk3HI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2399321},"type":"module","_from":"file:/tmp/remix-publish-ui-QZNq77/remix-run-ui-0.7.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./menu":{"types":"./dist/menu/index.d.ts","default":"./dist/menu/index.js"},"./tabs":{"types":"./dist/tabs/index.d.ts","default":"./dist/tabs/index.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./input":{"types":"./dist/input/index.d.ts","default":"./dist/input/index.js"},"./radio":{"types":"./dist/radio/index.d.ts","default":"./dist/radio/index.js"},"./anchor":{"types":"./dist/anchor/index.d.ts","default":"./dist/anchor/index.js"},"./button":{"types":"./dist/button/index.d.ts","default":"./dist/button/index.js"},"./select":{"types":"./dist/select/index.d.ts","default":"./dist/select/index.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./toggle":{"types":"./dist/toggle/index.d.ts","default":"./dist/toggle/index.js"},"./listbox":{"types":"./dist/listbox/index.d.ts","default":"./dist/listbox/index.js"},"./popover":{"types":"./dist/popover/index.d.ts","default":"./dist/popover/index.js"},"./checkbox":{"types":"./dist/checkbox/index.d.ts","default":"./dist/checkbox/index.js"},"./combobox":{"types":"./dist/combobox/index.d.ts","default":"./dist/combobox/index.js"},"./accordion":{"types":"./dist/accordion/index.d.ts","default":"./dist/accordion/index.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./breadcrumbs":{"types":"./dist/breadcrumbs/index.d.ts","default":"./dist/breadcrumbs/index.js"},"./dev/refresh":{"types":"./dist/dev/refresh.d.ts","default":"./dist/dev/refresh.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./package.json":"./package.json","./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./menu/primitives":{"types":"./dist/menu/primitives.d.ts","default":"./dist/menu/primitives.js"},"./tabs/primitives":{"types":"./dist/tabs/primitives.d.ts","default":"./dist/tabs/primitives.js"},"./select/primitives":{"types":"./dist/select/primitives.d.ts","default":"./dist/select/primitives.js"},"./toggle/primitives":{"types":"./dist/toggle/primitives.d.ts","default":"./dist/toggle/primitives.js"},"./combobox/primitives":{"types":"./dist/combobox/primitives.d.ts","default":"./dist/combobox/primitives.js"},"./accordion/primitives":{"types":"./dist/accordion/primitives.d.ts","default":"./dist/accordion/primitives.js"}},"scripts":{"lint":"pnpm -w exec oxlint packages/ui --max-warnings=0","test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint:fix":"pnpm -w exec oxlint packages/ui --fix --max-warnings=0","typecheck":"tsc --noEmit","test:watch":"remix test --watch","test:coverage":"remix test --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"_resolved":"/tmp/remix-publish-ui-QZNq77/remix-run-ui-0.7.0.tgz","_integrity":"sha512-SPgbmHOnHAGxZiyJhW7wxGBnk7lYdY5GlYj1Chj5hpHH+3IAChpCcwUwniqbN8Wddwf6G4oitN/YhGFarqPIUg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"12.0.2","description":"UI runtime, headless primitives, and styled components for Remix","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@types/dom-navigation":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"playwright":"^1.60.0","typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.0","@remix-run/assert":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.7.0_1787005228884_0.8776453203867822","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@remix-run/ui","version":"0.8.0","keywords":["remix","ui","headless","components","mixins","runtime","primitives"],"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","_id":"@remix-run/ui@0.8.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"a7bdfb6437c823936114ebb129cf283b92b78294","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.8.0.tgz","fileCount":462,"integrity":"sha512-4OdZ3oj0zbyVVaCFT/x2vjK5YxpD63KpLONkLZ2QVKIEBcLjJUGSenp2f08BOzC8oythLHCJgzHLKKulYJpIQA==","signatures":[{"sig":"MEQCIFj/9JFyABLoQJoE+YCWKd4b5aWRdGo/oMgaPH6CYiWQAiBc66SSyZBCeFh0QPiEXxukwTcbcoDA2Ia7HlGUZ6qabA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2420950},"type":"module","_from":"file:/tmp/remix-publish-ui-jg4pNu/remix-run-ui-0.8.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./menu":{"types":"./dist/menu/index.d.ts","default":"./dist/menu/index.js"},"./tabs":{"types":"./dist/tabs/index.d.ts","default":"./dist/tabs/index.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./input":{"types":"./dist/input/index.d.ts","default":"./dist/input/index.js"},"./radio":{"types":"./dist/radio/index.d.ts","default":"./dist/radio/index.js"},"./anchor":{"types":"./dist/anchor/index.d.ts","default":"./dist/anchor/index.js"},"./button":{"types":"./dist/button/index.d.ts","default":"./dist/button/index.js"},"./select":{"types":"./dist/select/index.d.ts","default":"./dist/select/index.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./toggle":{"types":"./dist/toggle/index.d.ts","default":"./dist/toggle/index.js"},"./listbox":{"types":"./dist/listbox/index.d.ts","default":"./dist/listbox/index.js"},"./popover":{"types":"./dist/popover/index.d.ts","default":"./dist/popover/index.js"},"./checkbox":{"types":"./dist/checkbox/index.d.ts","default":"./dist/checkbox/index.js"},"./combobox":{"types":"./dist/combobox/index.d.ts","default":"./dist/combobox/index.js"},"./accordion":{"types":"./dist/accordion/index.d.ts","default":"./dist/accordion/index.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./breadcrumbs":{"types":"./dist/breadcrumbs/index.d.ts","default":"./dist/breadcrumbs/index.js"},"./dev/refresh":{"types":"./dist/dev/refresh.d.ts","default":"./dist/dev/refresh.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./package.json":"./package.json","./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./menu/primitives":{"types":"./dist/menu/primitives.d.ts","default":"./dist/menu/primitives.js"},"./tabs/primitives":{"types":"./dist/tabs/primitives.d.ts","default":"./dist/tabs/primitives.js"},"./select/primitives":{"types":"./dist/select/primitives.d.ts","default":"./dist/select/primitives.js"},"./toggle/primitives":{"types":"./dist/toggle/primitives.d.ts","default":"./dist/toggle/primitives.js"},"./combobox/primitives":{"types":"./dist/combobox/primitives.d.ts","default":"./dist/combobox/primitives.js"},"./accordion/primitives":{"types":"./dist/accordion/primitives.d.ts","default":"./dist/accordion/primitives.js"}},"scripts":{"lint":"pnpm -w exec oxlint packages/ui --max-warnings=0","test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint:fix":"pnpm -w exec oxlint packages/ui --fix --max-warnings=0","typecheck":"tsc --noEmit","test:watch":"remix test --watch","test:coverage":"remix test --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"_resolved":"/tmp/remix-publish-ui-jg4pNu/remix-run-ui-0.8.0.tgz","_integrity":"sha512-4OdZ3oj0zbyVVaCFT/x2vjK5YxpD63KpLONkLZ2QVKIEBcLjJUGSenp2f08BOzC8oythLHCJgzHLKKulYJpIQA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/ui"},"_npmVersion":"11.17.0","description":"UI runtime, headless primitives, and styled components for Remix","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@types/dom-navigation":"^1.0.7"},"_hasShrinkwrap":false,"devDependencies":{"playwright":"^1.60.0","typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.0","@remix-run/assert":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.8.0_1788202658004_0.9923913129836712","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@remix-run/ui","version":"0.9.0","description":"UI runtime, headless primitives, and styled components for Remix","author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/remix-run/remix.git","directory":"packages/ui"},"homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","type":"module","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./accordion":{"types":"./dist/accordion/index.d.ts","default":"./dist/accordion/index.js"},"./accordion/primitives":{"types":"./dist/accordion/primitives.d.ts","default":"./dist/accordion/primitives.js"},"./anchor":{"types":"./dist/anchor/index.d.ts","default":"./dist/anchor/index.js"},"./animation":{"types":"./dist/animation/index.d.ts","default":"./dist/animation/index.js"},"./breadcrumbs":{"types":"./dist/breadcrumbs/index.d.ts","default":"./dist/breadcrumbs/index.js"},"./button":{"types":"./dist/button/index.d.ts","default":"./dist/button/index.js"},"./checkbox":{"types":"./dist/checkbox/index.d.ts","default":"./dist/checkbox/index.js"},"./combobox":{"types":"./dist/combobox/index.d.ts","default":"./dist/combobox/index.js"},"./combobox/primitives":{"types":"./dist/combobox/primitives.d.ts","default":"./dist/combobox/primitives.js"},"./input":{"types":"./dist/input/index.d.ts","default":"./dist/input/index.js"},"./dev/refresh":{"types":"./dist/dev/refresh.d.ts","default":"./dist/dev/refresh.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./jsx-runtime":{"types":"./dist/jsx-runtime.d.ts","default":"./dist/jsx-runtime.js"},"./listbox":{"types":"./dist/listbox/index.d.ts","default":"./dist/listbox/index.js"},"./menu":{"types":"./dist/menu/index.d.ts","default":"./dist/menu/index.js"},"./menu/primitives":{"types":"./dist/menu/primitives.d.ts","default":"./dist/menu/primitives.js"},"./popover":{"types":"./dist/popover/index.d.ts","default":"./dist/popover/index.js"},"./radio":{"types":"./dist/radio/index.d.ts","default":"./dist/radio/index.js"},"./select":{"types":"./dist/select/index.d.ts","default":"./dist/select/index.js"},"./select/primitives":{"types":"./dist/select/primitives.d.ts","default":"./dist/select/primitives.js"},"./server":{"types":"./dist/server/stream.d.ts","default":"./dist/server/stream.js"},"./tabs":{"types":"./dist/tabs/index.d.ts","default":"./dist/tabs/index.js"},"./tabs/primitives":{"types":"./dist/tabs/primitives.d.ts","default":"./dist/tabs/primitives.js"},"./test":{"types":"./dist/test.d.ts","default":"./dist/test.js"},"./toggle":{"types":"./dist/toggle/index.d.ts","default":"./dist/toggle/index.js"},"./toggle/primitives":{"types":"./dist/toggle/primitives.d.ts","default":"./dist/toggle/primitives.js"},"./package.json":"./package.json"},"devDependencies":{"@types/node":"^24.6.0","playwright":"^1.60.0","typescript":"^7.0.2","@remix-run/assert":"0.3.0","@remix-run/test":"0.6.0"},"dependencies":{"@types/dom-navigation":"^1.0.7"},"keywords":["remix","ui","headless","components","mixins","runtime","primitives"],"scripts":{"build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","lint":"pnpm -w exec oxlint packages/ui --max-warnings=0","lint:fix":"pnpm -w exec oxlint packages/ui --fix --max-warnings=0","test":"remix test","test:coverage":"remix test --coverage","test:watch":"remix test --watch","typecheck":"tsc --noEmit"},"_id":"@remix-run/ui@0.9.0","bugs":{"url":"https://github.com/remix-run/remix/issues"},"_integrity":"sha512-M25PBhOnBmCluu+HGVGMbFxY0Ven/Tz/pESEL6CkGs1o4K8PdX6upVSHkytmsZ5V8Q+BBYL85zcGmH+mXESKrg==","_resolved":"/tmp/remix-publish-ui-wXhyvV/remix-run-ui-0.9.0.tgz","_from":"file:/tmp/remix-publish-ui-wXhyvV/remix-run-ui-0.9.0.tgz","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-M25PBhOnBmCluu+HGVGMbFxY0Ven/Tz/pESEL6CkGs1o4K8PdX6upVSHkytmsZ5V8Q+BBYL85zcGmH+mXESKrg==","shasum":"0d3fb84a8d6a85f7bf0292c046050ae62d0fdb88","tarball":"https://registry.npmjs.org/@remix-run/ui/-/ui-0.9.0.tgz","fileCount":474,"unpackedSize":2517639,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fui@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBCw+SwOAE5wZsOC4sKt1IFyTGefAJ5uX9tWhnBPsgnGAiAIgR5ZccshCwIeqjYaI7q6Uj4Sgw9Zd2jSLSWO2UZlXQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f0192f5-1ffe-4829-b6b8-a0ddb1533da2"}},"directories":{},"maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ui_0.9.0_1788908666723_0.9554303004457325"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-29T17:23:11.538Z","modified":"2026-09-08T23:04:27.290Z","0.0.0":"2026-04-29T17:23:11.901Z","0.1.0":"2026-04-29T17:29:17.593Z","0.1.1":"2026-04-30T19:10:45.129Z","0.1.2":"2026-05-20T03:20:33.678Z","0.2.0":"2026-05-20T20:16:39.001Z","0.3.0":"2026-05-29T18:16:05.872Z","0.4.0":"2026-07-01T19:01:52.804Z","0.5.0":"2026-08-14T00:12:54.011Z","0.6.0":"2026-08-17T19:16:46.281Z","0.7.0":"2026-08-17T22:20:29.085Z","0.8.0":"2026-08-31T18:57:38.141Z","0.9.0":"2026-09-08T23:04:26.918Z"},"bugs":{"url":"https://github.com/remix-run/remix/issues"},"author":{"name":"Ryan Florence","email":"rpflorence@gmail.com"},"license":"MIT","homepage":"https://github.com/remix-run/remix/tree/main/packages/ui#readme","keywords":["remix","ui","headless","components","mixins","runtime","primitives"],"repository":{"type":"git","url":"git+https://github.com/remix-run/remix.git","directory":"packages/ui"},"description":"UI runtime, headless primitives, and styled components for Remix","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"readme":"# ui\n\nRuntime UI primitives for Remix apps, including the component runtime, server rendering, frame hydration, reusable mixins, and headless first-party behavior primitives.\n\n## Features\n\n- Component runtime APIs for rendering, hydration, link and form frame navigation, and JSX\n- Server rendering APIs for streaming Remix UI trees and frames\n- `mix` composition with event, ref, CSS, and animation helpers\n- Headless behavior primitives for controls such as menus, listboxes, popovers, selects, and comboboxes\n- Lower-level utilities for keyboard events, typeahead search, refs, attributes, and CSS transition timing\n\n## Installation\n\n```sh\nnpm i remix\n```\n\n## Usage\n\nCompose behavior primitives with your own markup and styles:\n\n```tsx\nimport { css } from 'remix/ui'\nimport * as popover from 'remix/ui/popover'\n\nlet triggerCss = css({\n  border: '1px solid #d1d5db',\n  borderRadius: '6px',\n  padding: '6px 10px',\n})\n\nlet surfaceCss = css({\n  background: 'white',\n  border: '1px solid #d1d5db',\n  borderRadius: '6px',\n  padding: '8px',\n})\n\nfunction ViewOptions() {\n  let open = false\n\n  return () => (\n    <popover.Context>\n      <button\n        mix={[triggerCss, popover.anchor({ placement: 'bottom-end' }), popover.focusOnHide()]}\n        onClick={() => {\n          open = true\n        }}\n        type=\"button\"\n      >\n        View options\n      </button>\n      <div\n        mix={[\n          surfaceCss,\n          popover.surface({\n            open,\n            onHide() {\n              open = false\n            },\n          }),\n        ]}\n      >\n        Panel content\n      </div>\n    </popover.Context>\n  )\n}\n```\n\nButton styling is available as a composable mixin:\n\n```tsx\nimport button from 'remix/ui/button'\n\nfunction Actions() {\n  return () => <button mix={button({ tone: 'primary' })}>Create project</button>\n}\n```\n\n## Client Entry Loading\n\n`run()` hydrates client entries by calling `loadModule` for each component module:\n\n```tsx\nimport { run } from 'remix/ui'\n\nlet app = run({\n  async loadModule(moduleUrl, exportName) {\n    let mod = await import(moduleUrl)\n    return mod[exportName]\n  },\n})\n\nawait app.ready()\n```\n\nClient entries introduced after the initial document may depend on import maps added at runtime.\nWhen targeting browsers without native support for multiple import maps, use\n`remix/multiple-import-maps-polyfill` to load these modules and process their preloads:\n\n```tsx\nimport {\n  detectMultipleImportMapSupport,\n  importModule,\n  preloadShim,\n} from 'remix/multiple-import-maps-polyfill'\n\nlet app = run({\n  async loadModule(moduleUrl, exportName) {\n    let module = await importModule(moduleUrl)\n    let Component = module[exportName]\n    if (typeof Component !== 'function') {\n      throw new Error(`Unknown component: ${moduleUrl}#${exportName}`)\n    }\n    return Component\n  },\n  async processClientEntryPreloads(preloads) {\n    if (await detectMultipleImportMapSupport()) return preloads\n\n    preloadShim(preloads)\n    return []\n  },\n})\n```\n\n## Frame Navigation\n\nThe same runtime represents the current document as `app.frames.top` and intercepts eligible\nsame-origin links and forms through the browser's Navigation API. Those navigations fetch HTML with\nthe frame resolver and update the existing document in place instead of loading a new document.\nThis soft-navigation behavior applies even when the page only uses `clientEntry()` and does not\nrender an explicit `<Frame>`.\n\nFrame navigation requires both `window.navigation` and `NavigateEvent.sourceElement`. Browsers\nmissing either capability use document navigation for links, forms, and `navigate()`. Hydration and\nexplicit frame reloads still work.\n\nThe default resolver is equivalent to:\n\n```js\nasync function resolveFrame(src, options) {\n  let response = await fetch(src, {\n    body: getRequestBody(options),\n    headers: { Accept: 'text/html' },\n    method: options?.method,\n    signal: options?.signal,\n  })\n\n  let isHtml = response.headers.get('Content-Type')?.toLowerCase().includes('text/html')\n  if (response.status >= 500 || (response.status >= 300 && !isHtml)) {\n    throw new Error(`Failed to resolve frame: ${response.status} ${response.statusText}`.trimEnd())\n  }\n\n  return response\n}\n\nfunction getRequestBody(options) {\n  let formData = options?.formData\n  if (!formData || options?.method?.toLowerCase() === 'get') return\n\n  if (options?.encType === 'text/plain') {\n    let body = ''\n    for (let [name, value] of formData) {\n      name = normalizeLineBreaks(name)\n      value = normalizeLineBreaks(typeof value === 'string' ? value : value.name)\n      body += `${name}=${value}\\r\\n`\n    }\n    return new Blob([body], { type: 'text/plain' })\n  }\n\n  if (options?.encType !== 'application/x-www-form-urlencoded') return formData\n\n  let body = new URLSearchParams()\n  for (let [name, value] of formData) {\n    body.append(name, typeof value === 'string' ? value : value.name)\n  }\n  return body\n}\n\nfunction normalizeLineBreaks(value) {\n  return value.replace(/\\r\\n|\\r|\\n/g, '\\r\\n')\n}\n```\n\nThe default resolver requests HTML. GET form values are already encoded in `src`;\n`application/x-www-form-urlencoded` submissions use `URLSearchParams`, `text/plain` submissions use\nCRLF-delimited text, and `multipart/form-data` submissions use `FormData`. Pass a custom\n`resolveFrame` when the server requires additional headers, another body encoding, or a different\nresponse policy.\n\nAdd `data-rmx-document` to a link or form to leave that navigation to the browser. To keep all links\nand forms as document navigations while still hydrating client entries and using explicit frames,\nregister a listener before calling `run()`:\n\n```ts\nwindow.navigation?.addEventListener('navigate', (e) => e.stopImmediatePropagation())\n```\n\nThis prevents Remix from intercepting Navigation API events. Explicit frame reloads such as\n`handle.frame.reload()` continue to use the frame resolver.\n\nThe default resolver accepts `2xx` responses and `3xx` or `4xx` responses whose `Content-Type` includes `text/html`, ignoring case. It rejects other `3xx` or `4xx` responses and all `5xx` responses with an error containing their status and status text. A custom `resolveFrame` may return a `Response` with any status when it wants Remix UI to render the response body.\n\nForms remain ordinary HTML forms before the runtime starts. Add `data-rmx-target` to reload a named frame, or `data-rmx-document` to require a full-document submission:\n\n```tsx\nimport { Frame } from 'remix/ui'\n\nfunction AccountPage() {\n  return () => (\n    <>\n      <Frame name=\"account\" src=\"/account/edit\" />\n      <form action=\"/account/edit\" method=\"post\" data-rmx-target=\"account\">\n        <label for=\"display-name\">Display name</label>\n        <input id=\"display-name\" name=\"displayName\" required />\n        <button type=\"submit\">Save</button>\n      </form>\n    </>\n  )\n}\n```\n\nNative constraint validation and submitter overrides still apply. GET form values arrive in `src`; non-GET forms provide `formData`, `method`, and `encType` to the resolver. See [Frames](https://github.com/remix-run/remix/blob/main/packages/ui/docs/frames.md#form-navigation) for targeting, history behavior, request encoding, opt-outs, and server response guidance.\n\nUse `data-rmx-history=\"push|replace\"` on an enhanced anchor or form to control how the navigation updates history. This can override the automatic replacement used for non-GET form submissions to the current URL.\n\n## Single-page Applications\n\nUse `render` and `run` from `remix/spa` when every route runs in the browser and returns a Remix UI\ntree instead of an HTTP response body. The render middleware keeps the router's standard `Request`\nto `Response` contract while associating the response with a node for the top frame to render:\n\n```tsx\nimport { createRouter } from 'remix/router'\nimport { render, run } from 'remix/spa'\n\nlet router = createRouter({ middleware: [render()] })\n\nrouter.get('/', ({ render }) => render(<h1>Home</h1>))\nrouter.get('/about', ({ render }) => render(<h1>About</h1>))\n\nfunction LoadingPage() {\n  return () => <p role=\"status\">Loading…</p>\n}\n\nlet app = run(router, { fallback: <LoadingPage /> })\nawait app.ready()\n```\n\nThe optional `fallback` is a live Remix node displayed while the initial route loads.\n`app.ready()` resolves after the initial URL has replaced it with the routed node. The runtime then\nreuses frame navigation for same-origin links, forms, history traversal, redirects, cancellation,\nand `rmx-target`.\n\n## Preserving Client-Owned DOM\n\nUse `data-rmx-preserve-dom` on the smallest element whose live DOM should belong to client code after initial render, such as a custom element or third-party widget:\n\n```tsx\n<pagefind-ui data-rmx-key=\"search\" data-rmx-preserve-dom>\n  <button type=\"button\">Search</button>\n</pagefind-ui>\n```\n\nRemix UI still renders the element's children during SSR and still hydrates any initial client entries inside it. On later frame reloads, matched `data-rmx-preserve-dom` elements keep their current attributes and children instead of accepting incoming DOM updates. See [Preserving client-owned DOM](https://github.com/remix-run/remix/blob/main/packages/ui/docs/frames.md#preserving-client-owned-dom) for guidance and caveats.\n\n## Cascade Layers\n\nRemix UI emits generated `css(...)` rules under the `rmx` cascade layer. Unlayered CSS outranks layered CSS, so use explicit layer order when mixing Remix UI with global styles.\n\nPut layers that should lose to Remix UI before `rmx`:\n\n```css\n@layer base, rmx;\n\n@layer base {\n  button,\n  input,\n  textarea,\n  select {\n    font: inherit;\n    margin: 0;\n    padding: 0;\n  }\n}\n```\n\n## License\n\nSee [LICENSE](https://github.com/remix-run/remix/blob/main/LICENSE)\n","readmeFilename":"README.md"}