{"_id":"8bit-nes","_rev":"16-a5633d95baf05f25a46c6ef5b7e9557a","name":"8bit-nes","dist-tags":{"latest":"0.16.0"},"versions":{"0.1.0":{"name":"8bit-nes","version":"0.1.0","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.1.0","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"d7241488af1d4e923487e728b765a483f2d3655a","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.1.0.tgz","fileCount":15,"integrity":"sha512-TwXPxbUj99Zvlmsf+l2mL3Z/uN5QyjpsKpk7C88El3bUwNQdOsFaxJQL9BU6REku07lH0RAnxF/GILoDD7bSeg==","signatures":[{"sig":"MEYCIQDuFV/34IfM+zFFn5fqmIJMkhlJupN5PhZeZldQbHqzAQIhAPQ52rVw4+65W8Evr6NmlIMSZDjAZVscqv7wzOWSgtjv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":304153},"type":"module","_from":"file:8bit-nes-0.1.0.tgz","types":"./index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./package.json":"./package.json","./components.css":"./components.css","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --minify --format=esm --outfile=elements.min.js","check":"biome ci . && node --check elements.js","format":"biome check --write ."},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/3a942a40eb6c5ccef3d44da21d4c3361/8bit-nes-0.1.0.tgz","_integrity":"sha512-TwXPxbUj99Zvlmsf+l2mL3Z/uN5QyjpsKpk7C88El3bUwNQdOsFaxJQL9BU6REku07lH0RAnxF/GILoDD7bSeg==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.1.0_1784798603512_0.17086167247117245","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"8bit-nes","version":"0.3.0","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.3.0","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"4dd3cdf591c6d5b2c00d6fe720658ad3ae8160e8","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.3.0.tgz","fileCount":22,"integrity":"sha512-XM5Gno+sVJT3DwNySIzTYGEttQi30ZRPZeU7mHMmgzHMTaMMZTPurBrxKjQ5OSCiUacXH/1+C6wlCQZiY6h34g==","signatures":[{"sig":"MEQCIGX0Q79sMaduL6bEqtcMU4UNNzT6TohifJOTD4YPITzWAiBMjB+79VSkpOaAmGUvz3kz01h5yz0GDkpVQgXx5gboww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":753669},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.3.0.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js","check":"biome ci . && node --check elements.js","format":"biome check --write .","gen:llms":"node scripts/gen-llms.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/679e4c85896c94813b243db33d6ca315/8bit-nes-0.3.0.tgz","_integrity":"sha512-XM5Gno+sVJT3DwNySIzTYGEttQi30ZRPZeU7mHMmgzHMTaMMZTPurBrxKjQ5OSCiUacXH/1+C6wlCQZiY6h34g==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.3.0_1784988695883_0.3989999401981519","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"8bit-nes","version":"0.4.1","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.4.1","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"195a5c661214c0b3f129f6682874296ad5335615","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.4.1.tgz","fileCount":22,"integrity":"sha512-SyFJqZVKRv6mhWS+IoTTYwgcuoqS5jTQ46AgGiFKBNIOWDOiJEuoLwJDfOawoOdbyej7ZpluwCPrbkIaSplwuw==","signatures":[{"sig":"MEUCIA79TDwLAss+WL6POXZWZHVequmCG3DeKYl34C4eeNWSAiEAxdE6Zh/FUA+LKgggQ173Htwg7GFE4dOIZXs6Of/cZ9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":758180},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.4.1.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js","check":"biome ci . && node --check elements.js","format":"biome check --write .","gen:llms":"node scripts/gen-llms.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/78378ffc762cc029b89db2af86806386/8bit-nes-0.4.1.tgz","_integrity":"sha512-SyFJqZVKRv6mhWS+IoTTYwgcuoqS5jTQ46AgGiFKBNIOWDOiJEuoLwJDfOawoOdbyej7ZpluwCPrbkIaSplwuw==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.4.1_1784992648314_0.7222540603655851","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"8bit-nes","version":"0.5.0","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.5.0","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"dcdd53732ca8a00125a7f926fff6c62d8e6e8b3b","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.5.0.tgz","fileCount":22,"integrity":"sha512-Z45ZlnRZ8sl+53ncrIBpIF/BvZCC0O0ul3Ok6SakSdHsWRkxsT4Gmoev3A3wAq3nSVttu1zcH14asGwfzXVjwA==","signatures":[{"sig":"MEUCICTgV7VPo70YGfDMc7oJoo927/znxyvOgd1FF7KngdzsAiEAhX7O5qHz6yeGQAsaTElPETB03XG2bAlL08CKIgQxxPI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":772786},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.5.0.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js","check":"biome ci . && node --check elements.js","format":"biome check --write .","gen:llms":"node scripts/gen-llms.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/6a255a9b47f536c5ef8de0e55ca6b119/8bit-nes-0.5.0.tgz","_integrity":"sha512-Z45ZlnRZ8sl+53ncrIBpIF/BvZCC0O0ul3Ok6SakSdHsWRkxsT4Gmoev3A3wAq3nSVttu1zcH14asGwfzXVjwA==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.5.0_1784995601060_0.4387258293538916","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"8bit-nes","version":"0.6.0","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.6.0","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"9e5ca224e0ccb0921dce54aea3c4a0d52ff11d4e","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.6.0.tgz","fileCount":22,"integrity":"sha512-KB6e9wLKkTxhqmMOOt+f1JlKNcrKkxmluQBdJA4fz6sEDZapvfH1D5aEBz7/qHS/3dHrWjeXbPphaYyMFXEL3A==","signatures":[{"sig":"MEYCIQDFg3OfIhBWbNAnDnO+KBUijABmYNTRZ3t0+ASigG6ciQIhAMXSb5BCuy6r3R/d7F/4lFMiGH3gLq4U8L/toYEVX3So","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":854695},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.6.0.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js","check":"biome ci . && node --check elements.js","format":"biome check --write .","gen:llms":"node scripts/gen-llms.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/20fb8d3aadfcd8606d6c54636fb2de31/8bit-nes-0.6.0.tgz","_integrity":"sha512-KB6e9wLKkTxhqmMOOt+f1JlKNcrKkxmluQBdJA4fz6sEDZapvfH1D5aEBz7/qHS/3dHrWjeXbPphaYyMFXEL3A==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.6.0_1785031545012_0.36081229459894804","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"8bit-nes","version":"0.6.1","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.6.1","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"4e5ca07a8d8416d22369b268c0e173f260559add","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.6.1.tgz","fileCount":23,"integrity":"sha512-iSs+ceJGr/PgrP9ZzDld8WoSK8XiJaHS1AApgp7JLOcr2QhHbxIOXOgeuzksfphkdt0/SqcuUwOsvnCRLCpfEA==","signatures":[{"sig":"MEUCIE59XmMTWoFyOLPUMmCjKm1fGQJ0oPKZP40O12re1u49AiEA3TXDbrvcXvnGjn2Q3kG7hrUlQsLqJx9rwTENXWCy2NQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":861992},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.6.1.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./sri.json":"./sri.json","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js","format":"biome check --write .","gen:sri":"node scripts/gen-sri.mjs","gen:llms":"node scripts/gen-llms.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/5961f42a97f3bc57617e70340e27690b/8bit-nes-0.6.1.tgz","_integrity":"sha512-iSs+ceJGr/PgrP9ZzDld8WoSK8XiJaHS1AApgp7JLOcr2QhHbxIOXOgeuzksfphkdt0/SqcuUwOsvnCRLCpfEA==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.6.1_1785074385921_0.24868516068266033","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"8bit-nes","version":"0.7.0","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.7.0","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"a0ed44568eb5323b054ab95ad99da1daba58d5fc","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.7.0.tgz","fileCount":23,"integrity":"sha512-s2WiW6B6RVj7v9ushZbkNe9UcxMkfmkvfjnQXZr89uKN8n+RUzcJGbOFdz1xOjvXDhus/VD1r2o9yz/9HtYCbQ==","signatures":[{"sig":"MEUCICA0aKMvCRTfHMtEEb1I0/GfHli8C/tcwuCiIAIFjEL7AiEA5X6WXBFWS10wfhqKbHjlPOQLWr721T83Nw4cFuJWD0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":882481},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.7.0.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./sri.json":"./sri.json","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js","format":"biome check --write .","gen:sri":"node scripts/gen-sri.mjs","gen:llms":"node scripts/gen-llms.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/473ccc9cf2ce5cd7dac5cbd94ec6dae9/8bit-nes-0.7.0.tgz","_integrity":"sha512-s2WiW6B6RVj7v9ushZbkNe9UcxMkfmkvfjnQXZr89uKN8n+RUzcJGbOFdz1xOjvXDhus/VD1r2o9yz/9HtYCbQ==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.7.0_1785085278665_0.13883883744699954","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"8bit-nes","version":"0.7.1","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.7.1","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"6b55841fb16f4acaa3e1cc6dc711db0707e56f1a","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.7.1.tgz","fileCount":23,"integrity":"sha512-1GyVDwPANZKwNqSIURV5T58IM0A5s8imqaVRb2zRt90sK/iA/IDXZtqa4/nH5HK60A/zpCrVtGd1pn1aIGbfgQ==","signatures":[{"sig":"MEUCIFY/Ce200mDk+x94SdvIqrH3hPzsk9Xqc6rhdJGePgk6AiEAzXNbyw39qX+lsl7S+qUXsjReIrQgCNibSgmOKE+eYqk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":886357},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.7.1.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./sri.json":"./sri.json","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js && pnpm check:pins","format":"biome check --write .","gen:sri":"node scripts/gen-sri.mjs","gen:llms":"node scripts/gen-llms.mjs","check:pins":"node scripts/check-doc-pins.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/6a3fea3367fa685ce5027928079008bd/8bit-nes-0.7.1.tgz","_integrity":"sha512-1GyVDwPANZKwNqSIURV5T58IM0A5s8imqaVRb2zRt90sK/iA/IDXZtqa4/nH5HK60A/zpCrVtGd1pn1aIGbfgQ==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.7.1_1785131705152_0.7445363768775395","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"8bit-nes","version":"0.7.2","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.7.2","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"9f2efc0697b80f4994f795b6086b0f1a1464aaef","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.7.2.tgz","fileCount":23,"integrity":"sha512-55OaucqQGxIix6PTjNvjDdhHS165Xhtdn5bgUOcLREoY+KMKg9XcIZtxdYlp2IRUZFqaQojI+D6WiFuUQCqLnw==","signatures":[{"sig":"MEYCIQDwZvWOdz6dvwpSuWNs5OxRsPKPsmPgGs9hWxeo7Av4BgIhAJDyo98revhUTz9ZcNZPJ2ukVrb7SHBrs9e5l4HjTIYH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":887011},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.7.2.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./sri.json":"./sri.json","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js && pnpm check:pins","format":"biome check --write .","gen:sri":"node scripts/gen-sri.mjs","gen:llms":"node scripts/gen-llms.mjs","check:pins":"node scripts/check-doc-pins.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/c8f0edbcd91e6cbf4c8a7c07c3072c4d/8bit-nes-0.7.2.tgz","_integrity":"sha512-55OaucqQGxIix6PTjNvjDdhHS165Xhtdn5bgUOcLREoY+KMKg9XcIZtxdYlp2IRUZFqaQojI+D6WiFuUQCqLnw==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.7.2_1785138171279_0.12141771649736266","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"8bit-nes","version":"0.7.3","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.7.3","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"cc9ca0e61fb30231ef827bc62da85d57d6f15663","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.7.3.tgz","fileCount":23,"integrity":"sha512-7++IQOFsXDyO+ef2ixqBL+pFtwqH55s62g0/+PxaEMqSM0NS5N23m+ulI3CBoYtY/t4OrI6/l9Xit9hU3ARBOw==","signatures":[{"sig":"MEQCIDb0zJYw2ZBeTMNwjslV3O/wNEyYMCV74dNpXn6m32y4AiAaIP5G5gWq2NAgKMKe6OkML9KSx1+UyPi5uJ49J91RHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":888425},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.7.3.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./sri.json":"./sri.json","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js && pnpm check:pins","format":"biome check --write .","gen:sri":"node scripts/gen-sri.mjs","gen:llms":"node scripts/gen-llms.mjs","check:pins":"node scripts/check-doc-pins.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/5029952e717e54bdd6f21cbb744ea872/8bit-nes-0.7.3.tgz","_integrity":"sha512-7++IQOFsXDyO+ef2ixqBL+pFtwqH55s62g0/+PxaEMqSM0NS5N23m+ulI3CBoYtY/t4OrI6/l9Xit9hU3ARBOw==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.7.3_1785207422153_0.6562006057797778","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"8bit-nes","version":"0.8.0","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.8.0","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"e6ed4c90ceabe233963a082b9f2460ed44197ba1","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.8.0.tgz","fileCount":23,"integrity":"sha512-ssWFDXqJPpEbXuGkOAGMrYIcKtxE1ZSLnJFMgwnAAvlyKUGiAd3JJ5JfCbAZLHhnYcXP9cAr80tLRG6OeSUfsA==","signatures":[{"sig":"MEUCIQDBqh3peA9N53NMzBXELIooIZpe+Rab/GwqECCn9bKSXQIgZa98vXit4FlsM/3c93x0sbh/9m8NcylB0U9EtJ5IhoE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":900142},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.8.0.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./sri.json":"./sri.json","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js && pnpm check:pins","format":"biome check --write .","gen:sri":"node scripts/gen-sri.mjs","gen:llms":"node scripts/gen-llms.mjs","check:pins":"node scripts/check-doc-pins.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/18a70f23b5fdd24743e4999b438a6a0d/8bit-nes-0.8.0.tgz","_integrity":"sha512-ssWFDXqJPpEbXuGkOAGMrYIcKtxE1ZSLnJFMgwnAAvlyKUGiAd3JJ5JfCbAZLHhnYcXP9cAr80tLRG6OeSUfsA==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.8.0_1785237663354_0.4349679601632255","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"8bit-nes","version":"0.12.0","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.12.0","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"0c4daf40905ab35ec1b860cded489e38a7e990ea","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.12.0.tgz","fileCount":23,"integrity":"sha512-pV3C6Gc4QqOpnKYnydUyq3n46DSjcdEx2I7bHcx6Np+0xxqs7MV8HavzGZ1zGxzed2CKR6RAGTxCO7BK5Z/zIA==","signatures":[{"sig":"MEUCIQD2VgstbhKI5waMY3b5s6YYa91vnbXKqjnCatHTjfIgQAIgJG7cqkaNqdkUIjVyrrXMaMo3NpLCtDToGGa4fkElDIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":975833},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.12.0.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./sri.json":"./sri.json","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js && pnpm check:pins && pnpm check:scale","format":"biome check --write .","gen:sri":"node scripts/gen-sri.mjs","check:ui":"node scripts/ui-check.mjs","gen:llms":"node scripts/gen-llms.mjs","check:pins":"node scripts/check-doc-pins.mjs","check:scale":"node scripts/check-scale.mjs","check:mobile":"node scripts/mobile-check.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/b33e95e4f41ff5c9c1cba8e78ce97021/8bit-nes-0.12.0.tgz","_integrity":"sha512-pV3C6Gc4QqOpnKYnydUyq3n46DSjcdEx2I7bHcx6Np+0xxqs7MV8HavzGZ1zGxzed2CKR6RAGTxCO7BK5Z/zIA==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.12.0_1785291559395_0.0018147346885792892","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"8bit-nes","version":"0.13.0","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.13.0","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"f4a662b6cab7a88dd80bc71703f6fc2684eb0d95","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.13.0.tgz","fileCount":23,"integrity":"sha512-680VCMWJPy0DYKgEdMYPwdHMZTOrANs2BEkFkKtJSYACtB/isEOEFE758fPbH6AwYM/svi5jTpRziqBC7iR3ow==","signatures":[{"sig":"MEUCICvYZDu7NShkOV5fpAUyuSQbFtubylv7X+CO/zPg17unAiEAtRCDsBylMXO8MaWC883xiUTa375AY15BR7d6wEQ2DMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":981905},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.13.0.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./sri.json":"./sri.json","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js && pnpm check:pins && pnpm check:scale","format":"biome check --write .","gen:sri":"node scripts/gen-sri.mjs","check:ui":"node scripts/page-check.mjs scripts/ui-check.html && node scripts/page-check.mjs scripts/scale-check.html && node scripts/page-check.mjs scripts/spec-check.html","gen:llms":"node scripts/gen-llms.mjs","check:pins":"node scripts/check-doc-pins.mjs","check:scale":"node scripts/check-scale.mjs","check:viewport":"node scripts/viewport-check.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/113d256cedc3276e2ea0d2c464065392/8bit-nes-0.13.0.tgz","_integrity":"sha512-680VCMWJPy0DYKgEdMYPwdHMZTOrANs2BEkFkKtJSYACtB/isEOEFE758fPbH6AwYM/svi5jTpRziqBC7iR3ow==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.13.0_1785295398616_0.8973290708994917","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"8bit-nes","version":"0.14.0","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.14.0","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"5b9f1fc321abb0491ecab209592f4345bfc5dd61","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.14.0.tgz","fileCount":23,"integrity":"sha512-kzs1WLzrOomJmFJVT+S6LUnzyKOtRWl0UG3At7UGPbUl+rx4xZhjow4LhceSadwa2I2AoVQqdO1FHgKJkx8ccA==","signatures":[{"sig":"MEYCIQCwKo8LnMdzxaTj19zvWcEZO87wenulGjOt8hMsxdtOXgIhALpCyM9mBNiXIYXs1EPA/gLGkQgPRq14fv9iK8fHx7ay","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":989330},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.14.0.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./sri.json":"./sri.json","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js && pnpm check:pins && pnpm check:scale && pnpm check:contrast","format":"biome check --write .","gen:sri":"node scripts/gen-sri.mjs","check:ui":"node scripts/page-check.mjs scripts/ui-check.html && node scripts/page-check.mjs scripts/scale-check.html && node scripts/page-check.mjs scripts/spec-check.html","gen:llms":"node scripts/gen-llms.mjs","check:pins":"node scripts/check-doc-pins.mjs","check:scale":"node scripts/check-scale.mjs","check:contrast":"node scripts/check-contrast.mjs","check:viewport":"node scripts/viewport-check.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/1d708fef7faf01aa6958b56a85a05b8f/8bit-nes-0.14.0.tgz","_integrity":"sha512-kzs1WLzrOomJmFJVT+S6LUnzyKOtRWl0UG3At7UGPbUl+rx4xZhjow4LhceSadwa2I2AoVQqdO1FHgKJkx8ccA==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.14.0_1785318702326_0.8848873226918934","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"8bit-nes","version":"0.15.0","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"license":"MIT","_id":"8bit-nes@0.15.0","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"dist":{"shasum":"8be09a8038a1d5a74d2e8f96a1e2d276e86ec9c7","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.15.0.tgz","fileCount":23,"integrity":"sha512-6UqM5uWt/FKuq5P67LMlgqeKDLRkAhtx976KSuL7mgTHVisPGYVJtUWrW9pqMrpe8LdAJPTib3om45piXwDiHQ==","signatures":[{"sig":"MEUCIQDK/mQqRdcbtj0uG2QFIS2UrZFWceB5KezkuUTkZQPyIwIgQVQcozCR/9OFisDYVh4FdtaZUsoCvKZRtMxTN646BVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":997049},"main":"./elements.js","type":"module","_from":"file:8bit-nes-0.15.0.tgz","types":"./index.d.ts","unpkg":"./elements.min.js","module":"./elements.js","engines":{"node":">=20"},"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./all.css":"./all.css","./fonts/*":"./fonts/*","./base.css":"./base.css","./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./llms.txt":"./llms.txt","./sri.json":"./sri.json","./tokens.css":"./tokens.css","./all.min.css":"./all.min.css","./elements.js":"./elements.js","./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./package.json":"./package.json","./llms-full.txt":"./llms-full.txt","./components.css":"./components.css","./components.json":"./components.json","./elements.min.js":"./elements.min.js"},"scripts":{"demo":"pnpm dlx serve .","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js && pnpm check:pins && pnpm check:scale && pnpm check:contrast","format":"biome check --write .","gen:sri":"node scripts/gen-sri.mjs","check:ui":"node scripts/page-check.mjs scripts/ui-check.html && node scripts/page-check.mjs scripts/scale-check.html && node scripts/page-check.mjs scripts/spec-check.html","gen:llms":"node scripts/gen-llms.mjs","check:pins":"node scripts/check-doc-pins.mjs","check:scale":"node scripts/check-scale.mjs","check:contrast":"node scripts/check-contrast.mjs","check:viewport":"node scripts/viewport-check.mjs"},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"_resolved":"/tmp/9cca6740dba5c3aba0288e1e6c1d5f63/8bit-nes-0.15.0.tgz","_integrity":"sha512-6UqM5uWt/FKuq5P67LMlgqeKDLRkAhtx976KSuL7mgTHVisPGYVJtUWrW9pqMrpe8LdAJPTib3om45piXwDiHQ==","repository":{"url":"git+https://github.com/TuTranMVP/8bit-components.git","type":"git"},"_npmVersion":"10.9.8","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","directories":{},"sideEffects":["*.css","./elements.js","./elements.min.js"],"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.1","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/8bit-nes_0.15.0_1785404813570_0.32549936569505133","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"8bit-nes","version":"0.16.0","description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","license":"MIT","type":"module","main":"./elements.js","module":"./elements.js","unpkg":"./elements.min.js","sideEffects":["*.css","./elements.js","./elements.min.js"],"exports":{".":{"types":"./index.d.ts","default":"./elements.js"},"./elements.js":"./elements.js","./elements.min.js":"./elements.min.js","./icons":{"types":"./icons.d.ts","default":"./icons.js"},"./icons.js":{"types":"./icons.d.ts","default":"./icons.js"},"./icons.min.js":{"types":"./icons.d.ts","default":"./icons.min.js"},"./all.css":"./all.css","./all.min.css":"./all.min.css","./tokens.css":"./tokens.css","./base.css":"./base.css","./components.css":"./components.css","./components.json":"./components.json","./sri.json":"./sri.json","./llms.txt":"./llms.txt","./llms-full.txt":"./llms-full.txt","./fonts/*":"./fonts/*","./package.json":"./package.json"},"types":"./index.d.ts","repository":{"type":"git","url":"git+https://github.com/TuTranMVP/8bit-components.git"},"homepage":"https://github.com/TuTranMVP/8bit-components#readme","bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"publishConfig":{"access":"public","provenance":true},"engines":{"node":">=20"},"devDependencies":{"@biomejs/biome":"^2.0.0","esbuild":"0.28.1"},"scripts":{"gen:llms":"node scripts/gen-llms.mjs","gen:sri":"node scripts/gen-sri.mjs","build":"node scripts/gen-llms.mjs && esbuild all.css --bundle --minify --external:'*.woff2' --outfile=all.min.css && esbuild elements.js --bundle --minify --format=esm --outfile=elements.min.js && esbuild icons.js --minify --format=esm --outfile=icons.min.js && node scripts/gen-sri.mjs","check":"biome ci . && node --check elements.js && pnpm check:pins && pnpm check:scale && pnpm check:contrast","format":"biome check --write .","demo":"pnpm dlx serve .","check:pins":"node scripts/check-doc-pins.mjs","check:scale":"node scripts/check-scale.mjs","check:contrast":"node scripts/check-contrast.mjs","check:viewport":"node scripts/viewport-check.mjs","check:ui":"node scripts/page-check.mjs scripts/ui-check.html && node scripts/page-check.mjs scripts/scale-check.html && node scripts/page-check.mjs scripts/spec-check.html"},"_id":"8bit-nes@0.16.0","_integrity":"sha512-45QjKWeR9xW1vWidg8jtPcJxfzyMPqzCoAPC1Qb/OGsAE+p7MGbeWVulVO0iRuUBIae9QqLm3iRedPwHPzAq4Q==","_resolved":"/tmp/514797547d93cff01f48ab4a2b9bd794/8bit-nes-0.16.0.tgz","_from":"file:8bit-nes-0.16.0.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-45QjKWeR9xW1vWidg8jtPcJxfzyMPqzCoAPC1Qb/OGsAE+p7MGbeWVulVO0iRuUBIae9QqLm3iRedPwHPzAq4Q==","shasum":"7f99bf7c84ee692ceb5088331ce7d0ea4aa2c8d6","tarball":"https://registry.npmjs.org/8bit-nes/-/8bit-nes-0.16.0.tgz","fileCount":23,"unpackedSize":1008308,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/8bit-nes@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDInml5z/5/qQRzr/w/BGukvrVfJmFFUFWHQQxpu+i6/gIgP2cTb4S9QGKe4S9fcpZhw8Q8HOjnlmjlKG/gZKdoVWs="}]},"_npmUser":{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"},"directories":{},"maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/8bit-nes_0.16.0_1785481946487_0.87298854287963"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-23T09:23:23.337Z","modified":"2026-07-31T07:12:26.996Z","0.1.0":"2026-07-23T09:23:23.713Z","0.3.0":"2026-07-25T14:11:36.045Z","0.4.1":"2026-07-25T15:17:28.520Z","0.5.0":"2026-07-25T16:06:41.232Z","0.6.0":"2026-07-26T02:05:45.190Z","0.6.1":"2026-07-26T13:59:46.078Z","0.7.0":"2026-07-26T17:01:18.852Z","0.7.1":"2026-07-27T05:55:05.318Z","0.7.2":"2026-07-27T07:42:51.445Z","0.7.3":"2026-07-28T02:57:02.335Z","0.8.0":"2026-07-28T11:21:03.570Z","0.12.0":"2026-07-29T02:19:19.578Z","0.13.0":"2026-07-29T03:23:18.876Z","0.14.0":"2026-07-29T09:51:42.493Z","0.15.0":"2026-07-30T09:46:53.739Z","0.16.0":"2026-07-31T07:12:26.639Z"},"bugs":{"url":"https://github.com/TuTranMVP/8bit-components/issues"},"license":"MIT","homepage":"https://github.com/TuTranMVP/8bit-components#readme","keywords":["design-system","design-tokens","css","web-components","8bit","retro","nes","dark-theme","vue","react","nuxt"],"repository":{"type":"git","url":"git+https://github.com/TuTranMVP/8bit-components.git"},"description":"NES 8-bit retro-modern design system. Design tokens + class-based CSS components + light-DOM web components. Cross-framework: HTML, Vue 3, Nuxt, React.","maintainers":[{"name":"tonytmvp","email":"tony.tran.mvp@gmail.com"}],"readme":"# 8-BIT NES — component system\n\nNES arcade CRT, dark-only, modern-crisp. Cross-framework by design.\n\n## Install\n\nReusable across every project in the studio — install it into any repo, no build step.\n\n```bash\n# from npm — always the current release\npnpm add 8bit-nes\n\n# or straight from GitHub (a tag is a valid spec too)\npnpm add github:TuTranMVP/8bit-components#v0.16.0\n```\n\n```js\n// once, at app entry:\nimport \"8bit-nes/all.css\";   // tokens + base + components\nimport \"8bit-nes\";           // registers <nes-*> web components\n```\n\nOr granular: `8bit-nes/tokens.css`, `8bit-nes/base.css`, `8bit-nes/components.css`,\n`8bit-nes/elements.js`. The `exports` map keeps every entry addressable; `sideEffects` is\ndeclared so bundlers keep the CSS and the custom-element registration.\n\n> **Zero build, zero runtime deps.** It ships plain CSS + one ES module, so it drops into a\n> Vite/Nuxt/Next app, a plain HTML page, or another design-system package all the same.\n\n## CDN / no build\n\nNo bundler? Link the **minified, single-file** build — the three `@import`s are inlined, so\nit's one request instead of four. This is the whole recommended `<head>`, tuned for a cold\nvisit (copy it verbatim — every line earns its place):\n\n```html\n<!-- 1. one origin for every byte → one DNS + TLS handshake, warmed early -->\n<link rel=\"preconnect\" href=\"https://cdn.jsdelivr.net\" crossorigin>\n\n<!-- 2. fonts, at the exact URLs all.min.css resolves url() to → fetched once, in parallel\n        with the stylesheet instead of after it -->\n<link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\n  href=\"https://cdn.jsdelivr.net/npm/8bit-nes@0.16.0/fonts/nes-sans-var.woff2\">\n<link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\n  href=\"https://cdn.jsdelivr.net/npm/8bit-nes@0.16.0/fonts/nes-mono-400.woff2\">\n\n<!-- 3. the system: pinned version + byte-pinned integrity -->\n<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/8bit-nes@0.16.0/all.min.css\"\n  integrity=\"sha384-bnFVHVR0cb4DTlgB65iWy3avLsXlwZAz9CzgSZW8/U/+XnBxbko+ZgIiSs2kkSdi\"\n  crossorigin=\"anonymous\">\n<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/8bit-nes@0.16.0/elements.min.js\"\n  integrity=\"sha384-SfWC08i1nvFLoCQd9rUoNGTjMCXhZ97Cl7Hfx4EDrqj3Mkieuf/+q0Qwi6jeVItg\"\n  crossorigin=\"anonymous\"></script>\n```\n\nWhy it's shaped like that:\n\n- **Pin the version.** A pinned `@x.y.z` URL is immutable — jsDelivr serves it `max-age=31536000, immutable`,\n  so a repeat visit costs zero requests. A bare `/npm/8bit-nes/all.min.css` is a *mutable* alias:\n  it revalidates every 7 days and costs a redirect hop on the first hit. Bump the number to\n  upgrade; nothing silently changes underneath a shipped page. A `@0.7` range is the middle\n  ground (patches auto-adopt, still cached a week).\n- **Preload only the two fonts above the fold.** `nes-sans-var.woff2` (body) and\n  `nes-mono-400.woff2` (chrome/labels). The 700-weight mono is left to `font-display: swap`.\n  The preload `href` must match the CSS-resolved URL *character for character* — same version,\n  same path — or the browser downloads each font twice.\n- **`integrity` + `crossorigin`.** A pinned URL trusts the CDN not to swap the file; a hash\n  doesn't have to. Digests for every shipped asset (both minified entries, the granular CSS,\n  the fonts, the RAG artifacts) live in [`sri.json`](sri.json), generated from the build by\n  `scripts/gen-sri.mjs` and published at\n  [`/sri.json`](https://tutranmvp.github.io/8bit-components/sri.json) — read it, don't retype it:\n\n  ```js\n  const sri = await (await fetch(\"https://tutranmvp.github.io/8bit-components/sri.json\")).json();\n  sri.files[\"all.min.css\"]; // \"sha384-…\"  · sri.cdn is the matching pinned base URL\n  ```\n\n  The hashes above belong to the version pinned above. They change with every release — regenerate (`pnpm gen:sri`)\n  or re-fetch `sri.json` when you bump, or the browser will (correctly) refuse the file.\n- **Fonts don't need a separate request budget.** The whole system is 4 files: 75 kB CSS +\n  79 kB ESM + 2 woff2 (both subset with `unicode-range`), all Brotli'd by the CDN.\n\n`<script type=\"module\">` is deferred by definition, so it never blocks the parser — the\ncustom elements register on their own and upgrade whatever `<nes-*>` markup is already in the\nDOM. Nothing to call, no wrapper.\n\nCopy-paste starter, already wired exactly like the above:\n[`examples/cdn-starter.html`](examples/cdn-starter.html) — also live on the docs site at\n`/examples/cdn-starter.html`.\n\n> **unpkg instead?** Same paths (`https://unpkg.com/8bit-nes@0.16.0/all.min.css`) and the same\n> SRI digests — it's the identical npm tarball. Pick *one* origin per page, though: two CDNs\n> means two handshakes for no benefit.\n\n## For AI agents (RAG-ready)\n\nThis library is built to be consumed by AI coding agents in **other** repos — so they can retrieve\nthe *official* API and generate correct 8-BIT NES markup. Canonical, machine-readable docs follow the\n[llms.txt](https://llmstxt.org) convention and are generated from the docs source (never drift):\n\n| Artifact | URL | Use |\n|----------|-----|-----|\n| `llms.txt` | `https://tutranmvp.github.io/8bit-components/llms.txt` | discovery index (title, install, every component + deep link) |\n| `llms-full.txt` | `.../llms-full.txt` | complete flat-text reference to ingest/chunk for RAG (contract, rules, verified examples, all components) |\n| `components.json` | `.../components.json` | structured manifest — exact `{ id, name, category, selector, kind, description, docs }` per component |\n\nThey're also shipped **inside the npm package**, so an agent working in a consuming repo can read them\nstraight from `node_modules`:\n\n```js\nimport manifest from \"8bit-nes/components.json\" with { type: \"json\" };\n// or read node_modules/8bit-nes/llms-full.txt\n```\n\n`pnpm gen:llms` regenerates all three from `docs.js`; CI fails if the committed copies are stale.\n\n## Size & performance\n\n| File            | raw    | gzip   | notes                                             |\n|-----------------|--------|--------|---------------------------------------------------|\n| `all.min.css`   | ~33 kB | ~7 kB  | tokens + base + components, bundled & minified    |\n| `elements.min.js` | ~9 kB | ~4 kB | all six `<nes-*>` + helpers, minified ESM         |\n\n- **No-build / CDN** → the `.min` files above (fewest bytes, one request each).\n- **Bundler (Vite/Nuxt/Next)** → import the **sources** (`8bit-nes`, `8bit-nes/all.css`); your\n  pipeline minifies, and JS **tree-shakes** the named helpers you don't use (`toast`, `grantXP`,\n  `highlightCode`, …). The `<nes-*>` registration is a deliberate side effect (`sideEffects` set),\n  so importing the module always wires the components.\n- **CSS** is one layer set; drop what you don't need at the file level via the granular imports.\n- `pnpm build` (esbuild) regenerates the `.min` files; CI fails if the committed ones are stale.\n\nTwo checks need a browser, so they sit outside `pnpm check` (which stays hermetic for CI):\n\n- **`pnpm check:viewport`** — both ends of the breakpoint ladder on real viewports over CDP: a\n  390×844 phone with touch (every control hit-tested off centre, the 24px floor, the iOS 16px\n  entry floor) and a large desktop (the type step, the widened container, prose still measured,\n  the rail still beside the text).\n- **`pnpm check:ui`** — every fixture page in a real browser: the stateful components\n  (`ui-check`), the scales (`scale-check`), and the upstream spec items (`spec-check`). It fails\n  if a page reports a FAIL, throws, **or never reports at all**.\n\n`CHROME=/path/to/chrome` points them at your binary.\n\n## Release flow (maintainer)\n\n1. Bump `version` in `package.json` → commit.\n2. `git tag vX.Y.Z && git push --follow-tags`.\n3. GitHub Action `release.yml` gates on `pnpm check`, verifies tag == version, publishes to npm **with provenance**.\n\n## Files (ROI order — stop anywhere, still useful)\n\n| File                    | Layer              | Contains                                                                                      | Depends on         |\n|-------------------------|--------------------|-----------------------------------------------------------------------------------------------|--------------------|\n| `tokens.css`            | source of truth    | `:root` vars, 3 `@font-face`, `@layer` order                                                  | —                  |\n| `base.css`              | reset + primitives | reset, focus→gold, reduced-motion, `.pixel-box` (notch), elevation, accent mapper, motion     | tokens             |\n| `components.css`        | stateless recipes  | Element/Form/Feedback/Nav/Overlay/Data recipes (see catalog below)                            | tokens, base       |\n| `elements.js`           | stateful           | app: `<nes-quiz> <nes-hud> <nes-collapsible> <nes-sound> <nes-tabs> <nes-code>`; form: `<nes-form> <nes-number> <nes-rating> <nes-tags> <nes-pin> <nes-file> <nes-listbox> <nes-input-menu> <nes-select-menu>`; data: `<nes-tree>`; chat: `<nes-chat-prompt> <nes-chat-messages>`; editor: `<nes-editor>`; typography: `<nes-code-tree>`; visualize: `<nes-mermaid> <nes-walkthrough> <nes-zoom> <nes-annotate> <nes-compare>` + `store/bleep/grantXP/toast/enableMermaid` | tokens, components |\n| `icons.js`              | pixel icons        | tree-shakeable `<svg>`-string exports + `icon()` helper; `<nes-icon>` renders by name         | —                  |\n| `demo.html`             | gallery + test     | every component wired together                                                                | all                |\n| `docs.html` + `docs.js` | documentation site | Nuxt-UI-style sidebar + per-component pages (Usage / preview / API / a11y)                    | all                |\n\n**80% of the value is CSS.** `elements.js` is only for things that hold state.\n\n### Component catalog\n\n| Category   | Components                                                                     |\n|------------|--------------------------------------------------------------------------------|\n| Element    | Button · Badge · Chip · Card · Avatar · Kbd · Separator · Icon (`<nes-icon>` / `8bit-nes/icons`) · **Toolbar** (`.toolbar` — a row of actions that scrolls on a phone instead of reflowing under your thumb) · **Split view** (`<nes-split>` — two panes, one divider you can drag, arrow or double-click; `role=\"separator\"`, 44px hit area on touch) |\n| Form       | Input · Textarea · Select · Checkbox · CheckboxGroup · Radio · RadioGroup · Switch · Field · **Form** (`<nes-form>`) · Slider (`.range`) · Segmented control · Switcher (`<nes-switcher>` — ◀/▶ option cycler) · InputNumber (`<nes-number>`) · InputRating (`<nes-rating>`) · InputTags (`<nes-tags>`) · PinInput (`<nes-pin>`) · ColorPicker · InputDate · InputTime · FileUpload (`<nes-file>`) · Listbox (`<nes-listbox>`) · InputMenu (`<nes-input-menu>`) · SelectMenu (`<nes-select-menu>`) |\n| Feedback   | Alert (`.callout`) · Progress (`.pbar`) · Skeleton · **Toast** (`toast()` — text-safe by default, pauses while you read it, swipe-to-dismiss, UNDO action, `crit` interrupts) · Spinner · Meter · Empty state · Banner |\n| Navigation | Tabs (`<nes-tabs>`) · Breadcrumb · Pagination · Steps · Nav list · **Map of Content** (`<nes-toc>` — the live \"on this page\" index: builds itself from your headings, scroll-spy, mobile-first collapsible bar naming the current section → sticky rail when there's room; renders as the `.outline` recipe)                          |\n| Overlay    | Modal (`<dialog>`) · Dropdown (`<details>`) · Tooltip (`[data-tip]`) · Drawer (`<dialog>`) · **Popover** (`<nes-popover>` — an anchored panel in the **top layer**, so no ancestor's `overflow` can clip it; native popover API for Esc + light dismiss) · **Confirm** (`confirmDialog()` → `Promise<boolean>` — destructive confirm on `<dialog>.showModal()`, focus starts on Cancel) |\n| Data       | Table · Code block · Accordion (`<nes-collapsible>`) · Stat · Rating · Description list · Timeline · Prose · Tree (`<nes-tree>`)           |\n| Chat (AI)  | Chat (`.chat`) · ChatMessages (`<nes-chat-messages>`) · ChatMessage (`.msg`) · ChatPrompt (`<nes-chat-prompt>`) · ChatPromptSubmit (`.chat-submit`) · **Composer** (`.composer` + `.attach` — ChatGPT/Claude-Code-style prompt box: attachments, toolbar, model picker, send) · **Suggestions** (`.suggest` — starters / follow-ups) · **Citations** (`.cite` + `.sources` — grounded answers) · ChatReasoning · ChatTool · ChatShimmer · ChatPalette |\n| Agents (AI) | Agent (`.agent`) · Context usage (`.usage`) · Trace (`.trace`) · Feedback bar (`.feedback`) — AI-First WebUI primitives: a multi-agent status roster, a context/token-budget bar, an orchestration/reasoning trace (zero-JS `<details>`), and the human-in-the-loop feedback footer. Pure CSS recipes an agent can emit straight as HTML; one shared `data-state` vocabulary (queued/thinking/running/done/error) |\n| Editor (AI) | Editor (`<nes-editor>`) · EditorToolbar · EditorSuggestionMenu (`/` — incl. AI commands translate/improve/continue/fix/summarize) · EditorMentionMenu (`@`) · EditorEmojiMenu (`:`) · EditorDragHandle — VSCode-style Tab ghost + **bilingual mode** (`lang`/`target-lang`: write one language, Tab out the other) + word-count (`stats`) + AI hook, contenteditable, zero-dep |\n| Typography (MDC) | CodePreview (`.code-preview`) · CodeGroup (`<nes-tabs class=\"code-group\">`) · CodeCollapse (`<details class=\"code-collapse\">`) · CodeTree (`<nes-code-tree>`) · CardGroup (`.card-group`) · FieldGroup (`.field-group`) · Prompt (`.prompt`) · Terminal (`.terminal`) · Diff (`.diff`) · Tasklist (`.tasklist`) · code filename header (`<nes-code file>`) — render an AI agent's streamed Markdown/MDC output as on-brand HTML (the render target, not a parser) |\n| Visualize | Mermaid (`<nes-mermaid>`) · Walkthrough (`<nes-walkthrough>`, `autoplay`) · Lens (`<nes-tabs class=\"lens\">`) · Zoom (`<nes-zoom>`) · Annotate (`<nes-annotate>`) · Compare (`<nes-compare>`) · Legend (`.legend`) — render an AI agent's Mermaid diagrams on-brand + teach a concept step-by-step, then explore (pan/zoom), point at parts (hotspots), and compare A/B. Mermaid never bundled (BYO / lazy via `enableMermaid`); everything else is zero-dep pointer + CSS |\n| Second Brain | **Graph** (`<nes-graph>` — knowledge graph: force-laid-out nodes + edges, click a node to light its neighbourhood; wrap in `<nes-zoom>` to pan/zoom) · Note card (`.note`) · Backlinks (`.backlinks`) · Wiki-link (`.wikilink`, `.new` = unresolved) · Tag (`.tag`) · Properties (`.props`) · Outline (`.outline`) · Activity heatmap (`.heatmap`) · Board (`.board` — Kanban) · Command palette (`.palette`) · Search result (`.result`) · Note embed (`.embed` — transclusion) · Maturity (`.maturity` — 🌱🌿🌳) · Tag cloud (`.tag-cloud`) · Concept card (`.concept`) · Note stats (`.note-stats`) — Obsidian-style note/knowledge UI: vault cards, `[[links]]`, `#tags`, backlinks, frontmatter, kanban, quick-switcher, transclusion, digital-garden maturity, and a deterministic 0-dep knowledge graph. All stateless recipes bar the graph — an agent can emit them as HTML |\n| OpenCode (vibe coding) | **Workbench** (`.workbench` — 3-pane cloud-IDE shell: rail / main / side, stacks on mobile) · Repo bar (`.repobar`) · File tabs (`.filetabs`) · Status line (`.statusline`) · Sandbox (`.sandbox` — cloud dev container) · **Plan** (`.plan` — the agent's todo with live per-step state) · **Permission** (`.perm` — allow-once / always / deny gate, command shown verbatim) · Diff stat (`.diffstat`) · File change (`.filechange` — A/M/D/R) · Hunk (`.hunk` — reviewable slice, zero-JS `<details>`) · **DiffView** (`<nes-diff>` — unified diff → on-brand markup + `nes:diff` totals) · Checks (`.checks`) · Run bar (`.runbar`) · **Logs** (`<nes-logs>` — tail-following, ring-buffered, level-filtered stream) · **App preview** (`<nes-preview>` — framed iframe, URL bar, 375/768/full) · Stack trace (`.stacktrace` — your frames lit, vendor dimmed) · Checkpoints (`.ckpt` — rewind timeline) · Deploy (`.deploy`) — the WebUI shell around an agent that writes code, for Vibe-Coding tools on web/cloud. Each recipe owns one responsibility and composes with `.diff` / `.terminal` / `.tree` / `.trace` / `.btn` / `.input` / `.segment` instead of re-implementing them; three pieces hold state, the rest is HTML an agent can emit |\n\nRun the docs site locally with `pnpm demo`, then open `/docs.html`.\n\n## The contract\n\nEverything reads from `:root`. **Change the look in `tokens.css`, never in a component.**\nOne component = one accent: set `data-accent=\"blue|gold|cyan|purple|good|warn|crit\"` **on the\ncomponent** and its fill, dots, bars and borders follow via `--accent` / `--accent-d`. It applies\nto the element you put it on — a recipe declares its own `--accent`, so it keeps that rather than\ninheriting a wrapper's. Accent a row of components by setting the attribute on each.\n\n**The grid law.** Space lands on 4px steps (a `--sp-*` rung; `--sp-hair` 2px is the one\nsub-grid exception), size lands on 2px steps, **every type rung is an integer px** (9 · 11 · 12 ·\n14 · 16 · 17 · 26), weight is one of exactly three (`--fw-regular` 400 · `--fw-medium` 450 ·\n`--fw-bold` 700 — the only stops the bundled faces ship), `z-index` comes from one `--z-*` ladder,\nand exactly three widths switch a layout, always **mobile-first** (`min-width` only — the base\nblock is the phone) —\n`--bp-sm` 36rem, `--bp-lg` 56rem, `--bp-xl` 74rem. `pnpm check` fails the build on a value\nthat drifts off either grid, on a breakpoint outside the ladder, and on `max-width` (which\noverlaps `min-width` at exactly the same width). Box padding has three roles you can override\nto retune density in one line — `--pad-tight` 4/8, `--pad-snug` 8/12, `--pad-box` 12/16 — and\nthe app frame has `--gutter`, `--chrome-h`, `--nav-w`, `--rail-w`. Full table:\n[Layout & rhythm](https://tutranmvp.github.io/8bit-components/docs.html#/layout).\n\n## Signature\n\nThe **button** is the one bold element — but by **hard shadow** (`box-shadow: Npx Npx 0`, zero\nblur) + **press-in on `:active`**, not a corner trick. Every surface, buttons included, is a\n**square** 90° corner (never a radius, never a chamfer), hard border, hard shadow. Full rationale\nin [DESIGN.md](DESIGN.md).\n\n## Fonts (bundled, self-hosted)\n\n- `fonts/nes-mono-400.woff2` / `-700.woff2` — NES Mono: chrome, labels, numbers, code.\n- `fonts/nes-sans-var.woff2` — NES Sans variable (wght 300–700): body, đọc tiếng Việt có dấu.\n\n**Weights & styles.** NES Sans is variable so any weight **300–700** is real (regular 400, medium\n500, bold 700 all interpolate). NES Mono ships **400 + 700** (crisp static faces — it's chrome/code,\nso no separate medium by design). **Italic** works for both: neither ships an italic face, so the\nbrowser synthesizes oblique — `font-synthesis: style` keeps the real weights crisp (no faux-bold)\nwhile allowing the slant, which costs **0 bytes** vs a ~100 KB italic set. `<b>/<strong>` → 700,\n`<i>/<em>` → oblique.\n\nLatin + Vietnamese subset (~171KB tổng), full diacritic coverage verified. License: `fonts/LICENSE-FONTS.txt` (SIL OFL 1.1).\nZero-FOUT: preload 2 file critical — snippet trong comment đầu `tokens.css`.\n## Wire it up\n\n### Plain HTML\n```html\n<link rel=\"stylesheet\" href=\"tokens.css\">\n<link rel=\"stylesheet\" href=\"base.css\">\n<link rel=\"stylesheet\" href=\"components.css\">\n<script type=\"module\" src=\"elements.js\"></script>\n```\n\n### Vue 3.3+ / 3.5 (Vite) — verified\n\n**1.** Install: `pnpm add 8bit-nes`\n\n**2.** Tell the Vue compiler that `<nes-*>` are custom elements (required, or Vue errors \"failed to resolve component\"):\n```ts\n// vite.config.ts\nimport vue from '@vitejs/plugin-vue'\nexport default {\n  plugins: [vue({ template: { compilerOptions: { isCustomElement: (t) => t.startsWith('nes-') } } })],\n}\n```\n\n**3.** Import the CSS + register the elements **once** at the app entry:\n```ts\n// src/main.ts\nimport '8bit-nes/all.css'   // tokens + base + components\nimport '8bit-nes'           // registers every <nes-*> (side-effect)\n```\n> Vite auto-bundles the three woff2 fonts (the CSS references them with relative `url()`) — no font config.\n\n**4.** Use classes + `<nes-*>` in any `.vue`. Custom events bubble as `CustomEvent` — read `event.detail`:\n```vue\n<template>\n  <div data-size=\"lg\" style=\"display:flex;gap:.5rem;align-items:center\">\n    <button class=\"btn\" data-accent=\"cyan\">Save</button>\n    <input class=\"input\" />\n    <button class=\"btn icon\" aria-label=\"Go\"><nes-icon name=\"rocket\" /></button>\n  </div>\n  <nes-form @nes:submit=\"e => console.log(e.detail)\">    <!-- {data, form} -->\n    <label class=\"field\"><span class=\"label\">Name</span><input class=\"input\" name=\"name\" required /></label>\n    <button class=\"btn\" type=\"submit\">Submit</button>\n  </nes-form>\n</template>\n```\nNo two-way `v-model` on `<nes-*>`; bind via `@nes:change=\"v = $event.detail.value\"`. Inside `<nes-form>` the controls keep a hidden `<input name>` and submit with zero wiring.\n\n**Nuxt 3** — `customElements` needs the browser, so register in a **client** plugin:\n```ts\n// nuxt.config.ts\nexport default defineNuxtConfig({\n  css: ['8bit-nes/all.css'],\n  vue: { compilerOptions: { isCustomElement: (t) => t.startsWith('nes-') } },\n})\n// plugins/8bit.client.ts\nimport '8bit-nes'\n```\n\n### React 19\nNo wrapper needed — React 19 passes props and listens to custom-element events natively.\n```jsx\nimport './tokens.css'; import './base.css'; import './components.css'; import './elements.js';\n<nes-hud ns=\"quest\" per-level=\"150\" max-xp=\"600\" />\n<nes-quiz xp={50} onnes:answer={e => console.log(e.detail.correct)} />\n```\n(React < 19: use a small `ref` wrapper for the `nes:answer` event.)\n\n## Web components API\n\n```html\n<nes-sound></nes-sound>                     <!-- mute toggle, persists to localStorage -->\n\n<nes-collapsible open accent=\"gold\">\n  <span slot=\"head\">STAGE 1 · title</span>\n  ...body...\n</nes-collapsible>\n\n<nes-hud ns=\"quest\" per-level=\"400\" max-xp=\"1600\"></nes-hud>  <!-- listens on nes:xp bus -->\n\n<nes-quiz xp=\"50\">\n  <script type=\"application/json\">\n  { \"q\":\"...\", \"options\":[\"A\",\"B\"], \"answer\":1, \"explain\":\"...\" }\n  </script>\n</nes-quiz>                                  <!-- correct → +XP flies into the HUD -->\n```\n\n```html\n<nes-tabs>                                  <!-- roving-focus tabs, arrow keys -->\n  <section data-label=\"Install\" selected>…</section>\n  <section data-label=\"Usage\">…</section>\n</nes-tabs>\n```\n\n### Form module\n\nNative where it can be (Checkbox/Radio groups are a `.control-group` fieldset; ColorPicker is\n`<input type=\"color\" class=\"swatch\">`; Date/Time are themed native inputs). Stateful controls are\n`<nes-*>` that each keep a hidden `<input name>`, so they **submit inside any form with zero wiring**:\n\n```html\n<nes-form>                                  <!-- native validation → inline errors → nes:submit -->\n  <label class=\"field\"><span class=\"label\">Email <span class=\"req\">*</span></span>\n    <input class=\"input\" type=\"email\" name=\"email\" required></label>\n  <nes-tags name=\"labels\" value=\"agent,retro\"></nes-tags>       <!-- chip input -->\n  <nes-pin length=\"6\" name=\"otp\" numeric></nes-pin>             <!-- OTP → nes:complete -->\n  <nes-select-menu name=\"model\" placeholder=\"Choose model…\">    <!-- searchable single-select -->\n    <script type=\"application/json\">[{\"value\":\"opus\",\"label\":\"Opus 4.8\"}]</script>\n  </nes-select-menu>\n  <button class=\"btn\" type=\"submit\">CREATE</button>\n</nes-form>\n<script type=\"module\">\n  document.querySelector(\"nes-form\")\n    .addEventListener(\"nes:submit\", (e) => console.log(e.detail.data));  // {email, labels, otp, model}\n</script>\n```\n\nAlso: `<nes-number>` (stepper), `<nes-rating>` (star input), `<nes-file>` (drop zone),\n`<nes-listbox>`, `<nes-input-menu>` (free-text combobox). Custom events bubble: `nes:change`,\n`nes:submit`, `nes:invalid`, `nes:complete`.\n\nJS helpers (named exports): `store`, `bleep(seq)`, `SFX`, `setMute/isMuted`, `grantXP(n, el)`,\n`floatXP(el, text)`, `toast(msg, { accent, timeout })`.\n\n## Extend\n\nNew component → add a recipe in `components.css`, add a token in `tokens.css` if needed.\nKeep the Do/Don't: square 90° surfaces everywhere, buttons included (never a radius or chamfer),\nhard shadow not blur, smooth `--ease` easing (transform/opacity), one accent per block, dark text\non solid accents, everything via token. Full guidance in [DESIGN.md](DESIGN.md).\n","readmeFilename":"README.md"}