{"_id":"@arnelirobles/rnxjs","_rev":"37-6d64a1c555244972ec60e85824507af4","name":"@arnelirobles/rnxjs","dist-tags":{"latest":"2.1.0"},"versions":{"0.1.0":{"name":"@arnelirobles/rnxjs","version":"0.1.0","keywords":["vanilla","javascript","framework","components","bootstrap","rnxjs"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.0","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"dist":{"shasum":"2416f8e7f055ab4dd03a58f209e041e3ba8d1d94","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.0.tgz","fileCount":27,"integrity":"sha512-igo+wpmvOR8qeGgHP+E/LLBEwh7ZXpfV4I+25bmG1soqZ+vg4m5PEolxcW92edJVSMP1tVpdqbpYS3AvKcPQVg==","signatures":[{"sig":"MEUCIBvBkljhkzfnLZCDrTaITftyHV+/iNzooKDduIkMJ9ahAiEAlY6RdobxUi4/zwpL/7p/MUT0UlVg0oYQ/+GFA0iQzBU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17855},"main":"index.js","type":"module","_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"_npmVersion":"10.9.2","description":"Minimalist Vanilla JS component system that doesn't promise anything.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.0_1742810657122_0.9033006886346286","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@arnelirobles/rnxjs","version":"0.1.1","keywords":["vanilla","javascript","framework","components","bootstrap","rnxjs"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.1","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"dist":{"shasum":"e363544dff4b74def49eb532f16f8a67ce2928ab","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.1.tgz","fileCount":27,"integrity":"sha512-DG66gX9Mm/OAs/HIXr7bS0svlnE61hWwmhNMIUOeaanAUYdvjltXIULF1SWW4nngFF/xvaVZlltUDQTMpcD8rg==","signatures":[{"sig":"MEYCIQDgl+tV9plMKkDYxYDE+k3GVBPM9tvnVwtwIbegYWqLOAIhAOwPyUwOMiGWGdBk/NmPMXHvhywQeArnfYlcma+aXoYT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18037},"main":"index.js","type":"module","_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"_npmVersion":"10.9.2","description":"Minimalist Vanilla JS component system that doesn't promise anything.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.1_1742811208972_0.3954337823232812","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@arnelirobles/rnxjs","version":"0.1.2","keywords":["vanilla","javascript","framework","components","bootstrap","rnxjs"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.2","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"dist":{"shasum":"1779d260fffc5491f05961a5654bc066ff8e6878","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.2.tgz","fileCount":27,"integrity":"sha512-6X7VVA0LnrO1W6kxJ2Isaj4lZGrsZcz7Om8Xb8muYfVVDX2Zpq5I+kTT+9T6XZGGq+Xop0J2STDeZZh0kg2tdA==","signatures":[{"sig":"MEUCIQDRxg2hNKGkVSuwMyEM1pthjQcmujByY00EAsjZ51OzcAIgAJVqP4PmlGjoptCU1WHvpzJSYdc+0GgGstx2SLXX6uY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17943},"main":"index.js","type":"module","_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"_npmVersion":"10.9.2","description":"Minimalist Vanilla JS component system that doesn't promise anything.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.2_1742812312576_0.8203484725098447","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@arnelirobles/rnxjs","version":"0.1.3","keywords":["vanilla","javascript","framework","components","bootstrap","rnxjs"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.3","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"dist":{"shasum":"71307305c103d4d16bdbc4e031b89e12c4698dff","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.3.tgz","fileCount":27,"integrity":"sha512-DYR+DnThEf2xAPDfs7RuoKSawsjSaxxaFU1fnpmwfBGsaM3SfEOYczpmX8Eskl6iHZCZrV/EoUk9ccehnbuHAw==","signatures":[{"sig":"MEUCIA/HuF3g/phwGvF/qkNhYbkeD4tMrS2l7RS28KFu4TT7AiEAjORT+WqS9WI1gKad6YAN3Ev6L4IyhYb0PvlOwfbtFag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18851},"main":"index.js","type":"module","_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"_npmVersion":"10.9.2","description":"Minimalist Vanilla JS component system that doesn't promise anything.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.3_1742816667271_0.3654697501053643","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@arnelirobles/rnxjs","version":"0.1.4","keywords":["vanilla","javascript","framework","components","bootstrap","rnxjs"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.4","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"dist":{"shasum":"dfa8635400a7c393d7493fbe6b49cb463c154df9","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.4.tgz","fileCount":28,"integrity":"sha512-VihoVuVgjmWqLkleJTa5aD4Jlsxa3Dju+JJIVzt5MA8HDkyaaanGaJ2smensoGKhtw+m8OjseyqfiCK0YdA84w==","signatures":[{"sig":"MEQCIDpyf+1XqTrmkF/dEZ/ri4E5UGEEhrEOzJKiAA7r2R9kAiAa9rNyyibfaK86Ui248xzsAkH6og0E1cvsJNbXkvifOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19509},"main":"index.js","type":"module","gitHead":"f946330bcb43dfdacd56297faaf2f9daf26d5b03","scripts":{"test":"echo 'No tests yet. Skipping.'"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"_npmVersion":"10.8.2","description":"Minimalist Vanilla JS component system that doesn't promise anything.","directories":{},"_nodeVersion":"20.19.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.4_1742860747498_0.9070359499562453","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@arnelirobles/rnxjs","version":"0.1.5","keywords":["vanilla","javascript","framework","components","bootstrap","rnxjs"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.5","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"dist":{"shasum":"0cddd87fe40a8b2e9c985fdf77109c4cf2d90980","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.5.tgz","fileCount":29,"integrity":"sha512-kd0pCX8KqgiwCcBcV1iY39Admm+CwH2tm5Y0IocU5rhEpj+oeGmCxsKQwoURJl7jgmmFcOWMrkZ7lzEz1LJnyA==","signatures":[{"sig":"MEUCIFjijHj/eYFWcIxJ+TVl6ogw4/YOiT6Q6Qjt2zAY1P7YAiEApryGQSzwNBuujHj8eF8VSzNOJ9Sl2xDjMrBoW5kzdX4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21937},"main":"index.js","type":"module","gitHead":"986c491ea995e2ee99816587a96cc706422c0315","scripts":{"test":"echo 'No tests yet. Skipping.'"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"_npmVersion":"10.8.2","description":"Minimalist Vanilla JS component system that doesn't promise anything.","directories":{},"_nodeVersion":"20.19.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.5_1742862049789_0.502157655031015","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@arnelirobles/rnxjs","version":"0.1.6","keywords":["vanilla","javascript","framework","components","bootstrap","rnxjs"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.6","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"dist":{"shasum":"bda010076bb31a134bb6954eafcad72863bc55ed","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.6.tgz","fileCount":34,"integrity":"sha512-CVW2LUwLaxeJXI21VVmCE0zX56MynglYoP9frzI1bayrIslNbgxW/ytbwq0Yzne9tectf6lswPDQsN4S+rrb4A==","signatures":[{"sig":"MEYCIQD8Yea1hdIQa7UCKPM8KEjBbbtuRXRtwYaV2VWywQJmKgIhANsClD4nH8QKk5tGKeP/GZHTVUIWrLsV2oVp3rEmi1fz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107223},"main":"index.js","type":"module","unpkg":"dist/rnx.global.js","gitHead":"e6e1b73fe9c5ebc470e40b541098342be0124246","scripts":{"test":"echo 'No tests yet. Skipping.'","build":"node build.js"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","_npmVersion":"10.9.4","description":"Minimalist Vanilla JS component system that doesn't promise anything.","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.6_1764167451955_0.20843456382414383","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@arnelirobles/rnxjs","version":"0.1.7","keywords":["vanilla","javascript","framework","components","bootstrap","rnxjs"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.7","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"dist":{"shasum":"42688eefba4101cef1b442af1b100910cb965cfd","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.7.tgz","fileCount":39,"integrity":"sha512-rHA74MvNXrgQpue1d42fy9FngoHU2ma4PIZ0RFIlWMLw+wpP442VrMeziZzjTAf3heV4qL+H8DnTVYC3Bu4ZuA==","signatures":[{"sig":"MEQCIB162etgU8MuL4i+EQ2faxSRJcgP6l1vx5nLUeOmB5PIAiA2DtEE53AFsGEOJ44IzjH4P4CsgY47ol8bMrzzjmssag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171225},"main":"index.js","type":"module","unpkg":"dist/rnx.global.js","gitHead":"90d01a83f02e1d5a13ba1c55e07a77872d856ab7","scripts":{"test":"echo 'No tests yet. Skipping.'","build":"node build.js"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","_npmVersion":"10.9.4","description":"Minimalist Vanilla JS component system with reactive data binding.","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.7_1764417532397_0.19165461139078976","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@arnelirobles/rnxjs","version":"0.1.8","keywords":["vanilla","javascript","framework","components","bootstrap","rnxjs"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.8","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"dist":{"shasum":"783b50123a71811cf04422d040f3c8a880f5b5f5","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.8.tgz","fileCount":39,"integrity":"sha512-PshiVEpxFigsWgJDiDTP3Stc9pCQwLTPM2Eul0t5U6PoIJWKz37nNSHmRWoo54ghEZbJeROlZ0Ulin3BMCtbyQ==","signatures":[{"sig":"MEQCIA5H/8/5Lt3y1cTbJehP7qqkHt/5EdKWPrV9p1GLPYijAiB8w3dc72HWLChgC/Oz+bYDQeJJ492iyjxQ6732BHGOig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172860},"main":"index.js","type":"module","unpkg":"dist/rnx.global.js","gitHead":"a434a4620c9fbf6e11e0515bfc0648ec2a5cb2bd","scripts":{"test":"echo 'No tests yet. Skipping.'","build":"node build.js"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","_npmVersion":"10.9.4","description":"Minimalist Vanilla JS component system with reactive data binding.","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.8_1764428521351_0.23051500677796755","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@arnelirobles/rnxjs","version":"0.1.9","keywords":["vanilla","javascript","framework","components","bootstrap","rnxjs"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.9","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"dist":{"shasum":"0218af76978f97ce3e3c76dd9fbec1d0b8c6adb0","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.9.tgz","fileCount":39,"integrity":"sha512-5r2rxHvtCIgMTehJ9ZWT0ZyYL7QWE0dpUBUUm95acpKOYj+QAlQnC9EQlSWhWl4azTm9YYWz5sR4Z5kfPgaf2w==","signatures":[{"sig":"MEUCIGjuZcOlSYLZewxuxkZtUE6KKUgZrm8ICCbnED3h/sulAiEAwweGKeyuUA8jR3335BJpSMDHw56/FynFb14g1fv2RDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":243831},"main":"index.js","type":"module","unpkg":"dist/rnx.global.js","gitHead":"a434a4620c9fbf6e11e0515bfc0648ec2a5cb2bd","scripts":{"test":"vitest run","build":"node build.js","test:ui":"vitest --ui","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","_npmVersion":"10.9.4","description":"Minimalist Vanilla JS component system with reactive data binding.","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.4","esbuild":"^0.27.0","happy-dom":"^12.10.3","@vitest/ui":"^1.0.4","@vitest/coverage-v8":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.9_1764657904204_0.7371794022727081","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@arnelirobles/rnxjs","version":"0.1.10","keywords":["vanilla-js","javascript","framework","reactive","components","bootstrap","rnxjs","data-binding","two-way-binding","reactive-state","state-management","web-components","ui-framework","no-build","cdn","lightweight","minimal-framework","spa","single-page-app","dom-manipulation","event-driven","proxy-based","zero-dependencies"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.1.10","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"homepage":"https://github.com/arnelirobles/rnxjs#readme","bugs":{"url":"https://github.com/arnelirobles/rnxjs/issues"},"dist":{"shasum":"5f9175cf248e806dcb42d462a45a78c5f7d875de","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.1.10.tgz","fileCount":40,"integrity":"sha512-XRR9Z5BMamLlpvzkgqi9H+eFlNF0srg841/k27sJDNuiPFAuKe4jWRuOI8BW0hTNT/fXIgK1zL20RFF6RWLuLg==","signatures":[{"sig":"MEYCIQDfNhtyAwpbvITtxClhZoClqeWpy8r0MCgdX0HgFuMWTAIhAPvlDCLNI/T+P8FHmkKewd5YanLEJwviElo9vTCWaFhX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253089},"main":"index.js","type":"module","types":"index.d.ts","unpkg":"dist/rnx.global.js","funding":{"url":"https://ko-fi.com/arnelirobles","type":"ko-fi"},"gitHead":"af5f4d5f8196df287eadef9e224d731cc7ee0dd1","scripts":{"test":"vitest run","build":"node build.js","test:ui":"vitest --ui","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","repository":{"url":"git+https://github.com/arnelirobles/rnxjs.git","type":"git"},"_npmVersion":"10.9.4","description":"Minimalist Vanilla JS component system with reactive data binding.","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.4","esbuild":"^0.27.0","happy-dom":"^12.10.3","@vitest/ui":"^1.0.4","@vitest/coverage-v8":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.1.10_1764692142856_0.9959913046387632","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@arnelirobles/rnxjs","version":"0.2.0","keywords":["vanilla-js","javascript","framework","reactive","components","bootstrap","rnxjs","data-binding","two-way-binding","reactive-state","state-management","web-components","ui-framework","no-build","cdn","lightweight","minimal-framework","spa","single-page-app","dom-manipulation","event-driven","proxy-based","zero-dependencies"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.2.0","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"homepage":"https://github.com/arnelirobles/rnxjs#readme","bugs":{"url":"https://github.com/arnelirobles/rnxjs/issues"},"dist":{"shasum":"497546c63a52cf8f7e66de4ba389abb5aa35cb12","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.2.0.tgz","fileCount":40,"integrity":"sha512-a5/12FtofLbczGtq9O+YN5L3WqZhjwqYrGoxBgItD5uKwWKk3zkXNpx9mzE9XFg54QnsR+dftoZ+8m7hdYO6Ww==","signatures":[{"sig":"MEUCIQC01+FcQAcRWadwL697jDOoG90yPhOBWO6vJbiP/nh9/QIgJv63lOPutQmPgLdccf5/UXIyCyEETj3Pddv5qikFyng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269940},"main":"index.js","type":"module","types":"index.d.ts","unpkg":"dist/rnx.global.js","funding":{"url":"https://ko-fi.com/arnelirobles","type":"ko-fi"},"gitHead":"af5f4d5f8196df287eadef9e224d731cc7ee0dd1","scripts":{"test":"vitest run","build":"node build.js","test:ui":"vitest --ui","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","repository":{"url":"git+https://github.com/arnelirobles/rnxjs.git","type":"git"},"_npmVersion":"10.9.4","description":"Minimalist Vanilla JS component system with reactive data binding.","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.4","esbuild":"^0.27.0","happy-dom":"^12.10.3","@vitest/ui":"^1.0.4","@vitest/coverage-v8":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.2.0_1764692898305_0.04456615909948525","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@arnelirobles/rnxjs","version":"0.2.1","keywords":["bootstrap","vanilla-js","javascript","framework","reactive","components","rnxjs","django","laravel","rails","no-build","admin-dashboard","internal-tools","data-binding","web-components"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.2.1","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"homepage":"https://github.com/arnelirobles/rnxjs#readme","bugs":{"url":"https://github.com/arnelirobles/rnxjs/issues"},"dist":{"shasum":"a631dc1683624157aaf4c17cc56e6e3e32f70bcf","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.2.1.tgz","fileCount":40,"integrity":"sha512-vpfO7rxPuL+atAVE8aB7EfO8nYt5CW/Fh8TTxlNwaO4YZ4N2Aa44OcD6hB9JLMYpj2Ut+cFLZhsLGM/42uTZqA==","signatures":[{"sig":"MEUCIQDyilXfmTF2pEiqOAnCzjyQ6jzOXGjWsCt98YdPPQ8DaAIgIlDxQbJBqr62DPLLVLbFQwhD2gVwcH1/rqPKdlkQF8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269219},"main":"index.js","type":"module","types":"index.d.ts","unpkg":"dist/rnx.global.js","funding":{"url":"https://ko-fi.com/arnelirobles","type":"ko-fi"},"gitHead":"76d2c1657ae47f5608a451471b2d95dd342ca32a","scripts":{"test":"vitest run","build":"node build.js","test:ui":"vitest --ui","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","repository":{"url":"git+https://github.com/arnelirobles/rnxjs.git","type":"git"},"_npmVersion":"10.9.4","description":"The Bootstrap-Native Framework for Production Apps. Zero build step, reactive components for Backend Devs & Internal Tools.","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.4","esbuild":"^0.27.0","happy-dom":"^12.10.3","@vitest/ui":"^1.0.4","@vitest/coverage-v8":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.2.1_1764942144521_0.8452154919220309","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@arnelirobles/rnxjs","version":"0.2.2","keywords":["bootstrap","vanilla-js","javascript","framework","reactive","components","rnxjs","django","laravel","rails","no-build","admin-dashboard","internal-tools","data-binding","web-components"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.2.2","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"homepage":"https://github.com/arnelirobles/rnxjs#readme","bugs":{"url":"https://github.com/arnelirobles/rnxjs/issues"},"dist":{"shasum":"d9a206dcbd49fb5e90d1896d7c9046d9db0bb97f","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.2.2.tgz","fileCount":45,"integrity":"sha512-5hkDTtLSQmq1VVEz9exDd/dnRzVegT9f0xV9ofXs6zPtvrHy9Xfw+708Gby8dAAQaxmUxmKp+pm6AJM2mdYi7Q==","signatures":[{"sig":"MEQCIHpE7Wz2dpf9dWXVDzOhv976f24BtYjsWUvPTROIP4/wAiAE142wd+YWSolrjAMzw2RiWbG1HOMGa+4VT8LZbcBV5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":300299},"main":"index.js","type":"module","types":"index.d.ts","unpkg":"dist/rnx.global.js","exports":{".":{"import":"./dist/rnx.esm.js","require":"./index.js"},"./dist/*":"./dist/*"},"funding":{"url":"https://ko-fi.com/arnelirobles","type":"ko-fi"},"gitHead":"714b7abf49327e91cd412cac75635fe50bfff2ed","scripts":{"test":"vitest run","build":"node build.js","test:ui":"vitest --ui","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","repository":{"url":"git+https://github.com/arnelirobles/rnxjs.git","type":"git"},"_npmVersion":"10.9.4","description":"The Bootstrap-Native Framework for Production Apps. Zero build step, reactive components for Backend Devs & Internal Tools.","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.4","esbuild":"^0.27.0","happy-dom":"^12.10.3","@vitest/ui":"^1.0.4","@playwright/test":"^1.57.0","@vitest/coverage-v8":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.2.2_1764945011263_0.07801418452677078","host":"s3://npm-registry-packages-npm-production"}},"0.3.14":{"name":"@arnelirobles/rnxjs","version":"0.3.14","keywords":["bootstrap","vanilla-js","javascript","framework","reactive","components","rnxjs","django","laravel","rails","no-build","admin-dashboard","internal-tools","data-binding","web-components"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.3.14","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"homepage":"https://github.com/arnelirobles/rnxjs#readme","bugs":{"url":"https://github.com/arnelirobles/rnxjs/issues"},"dist":{"shasum":"44f52dab9c1515689210fe2408a6ebc23bc0afd9","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.3.14.tgz","fileCount":61,"integrity":"sha512-dZo3Gejr7ApLueP2DZkri/C/YWd/6vMc6odKggrK3QEUfAtZpB/+LwfQBf/NvfcAxp5tT8uxPj/Ewqv1o7sL8Q==","signatures":[{"sig":"MEUCIQDMSo+3mV1OaRQFLqSJC05qxnrNNfCQLXKu2eF9ArksWQIgAxsow4ZqP5bZtqAqOGe94PxIBNerNpkvjryRAedG3TQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":485010},"main":"index.js","type":"module","types":"index.d.ts","unpkg":"dist/rnx.global.js","exports":{".":{"import":"./dist/rnx.esm.js","require":"./index.js"},"./css/*":"./css/*","./dist/*":"./dist/*","./css/bootstrap-m3-theme.css":"./css/bootstrap-m3-theme.css"},"funding":{"url":"https://ko-fi.com/arnelirobles","type":"ko-fi"},"gitHead":"0625acaf9285fa5adf304146eb442fbdd2333a4f","scripts":{"test":"vitest run","build":"node build.js","test:ui":"vitest --ui","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","repository":{"url":"git+https://github.com/arnelirobles/rnxjs.git","type":"git"},"_npmVersion":"10.9.4","description":"The Bootstrap-Native Framework for Production Apps. Zero build step, reactive components for Backend Devs & Internal Tools.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"bootstrap-icons":"^1.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.4","esbuild":"^0.27.0","happy-dom":"^12.10.3","@vitest/ui":"^1.0.4","@playwright/test":"^1.57.0","@vitest/coverage-v8":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.3.14_1765124002241_0.9142614870869963","host":"s3://npm-registry-packages-npm-production"}},"0.3.16":{"name":"@arnelirobles/rnxjs","version":"0.3.16","keywords":["bootstrap","vanilla-js","javascript","framework","reactive","components","rnxjs","django","laravel","rails","no-build","admin-dashboard","internal-tools","data-binding","web-components"],"author":{"name":"Arnel Isiderio Robles"},"license":"MIT","_id":"@arnelirobles/rnxjs@0.3.16","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"homepage":"https://github.com/arnelirobles/rnxjs#readme","bugs":{"url":"https://github.com/arnelirobles/rnxjs/issues"},"dist":{"shasum":"a028e91511346107457a032ce9d31e109d11d153","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-0.3.16.tgz","fileCount":61,"integrity":"sha512-aK5H16c3Gu/MIh7BrpQisGZ34Z4YHS33MOVnCelKRPSH0JmYbll3n6O582VYEFhqBdMeorYYHGmFtl1c3SaghA==","signatures":[{"sig":"MEUCIQCZ73qzXbAz+Oj0OFU9f2K7uZYE+2HOVpoNsh4nlSVEdQIgJIi4cCmlZHe6wzlgcLCyC1cxGC+16Oa0WnipwzEmCp8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":486649},"main":"index.js","type":"module","types":"index.d.ts","unpkg":"dist/rnx.global.js","exports":{".":{"import":"./dist/rnx.esm.js","require":"./index.js"},"./css/*":"./css/*","./dist/*":"./dist/*","./css/bootstrap-m3-theme.css":"./css/bootstrap-m3-theme.css"},"funding":{"url":"https://ko-fi.com/arnelirobles","type":"ko-fi"},"gitHead":"ff8b39ee2ceea39aee4182a994e16c3aecdef8ce","scripts":{"test":"vitest run","build":"node build.js","test:ui":"vitest --ui","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","repository":{"url":"git+https://github.com/arnelirobles/rnxjs.git","type":"git"},"_npmVersion":"10.9.4","description":"The Bootstrap-Native Framework for Production Apps. Zero build step, reactive components for Backend Devs & Internal Tools.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"bootstrap-icons":"^1.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.4","esbuild":"^0.27.0","happy-dom":"^12.10.3","@vitest/ui":"^1.0.4","@playwright/test":"^1.57.0","@vitest/coverage-v8":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_0.3.16_1765187437943_0.8900635233188943","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@arnelirobles/rnxjs","version":"1.0.0","keywords":["bootstrap","vanilla-js","javascript","framework","reactive","components","rnxjs","django","laravel","rails","no-build","admin-dashboard","internal-tools","data-binding","web-components"],"author":{"name":"Arnel Isiderio Robles"},"license":"MPL-2.0","_id":"@arnelirobles/rnxjs@1.0.0","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"homepage":"https://github.com/BaryoDev/rnxjs#readme","bugs":{"url":"https://github.com/BaryoDev/rnxjs/issues"},"dist":{"shasum":"3dd7831f5abfab3022f72ad28481b5327e23d92f","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-1.0.0.tgz","fileCount":105,"integrity":"sha512-yOG4CxLr61VSnFnU8MRW/A3pr4pxgHi3O9pPiIu1nux8JUyFoSflVEffAX/zm+cJe2sS4PyQPl8Olr1LERJaZg==","signatures":[{"sig":"MEQCICfEQ075KlQjnTehNRwwlrX41jrD2HLw6qypfi+njdj/AiBp3WmCEpWmJPH0o/NtSkvJM72ey2blgOJLdcNgqBy3OQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1419996},"main":"index.js","type":"module","types":"index.d.ts","unpkg":"dist/rnx.global.js","exports":{".":{"import":"./dist/rnx.esm.js","require":"./index.js"},"./css/*":"./css/*","./dist/*":"./dist/*","./css/bootstrap-m3-theme.css":"./css/bootstrap-m3-theme.css"},"funding":{"url":"https://ko-fi.com/arnelirobles","type":"ko-fi"},"gitHead":"18708492d977b4f308e03dcd2969d7ea2b1fe81f","scripts":{"test":"vitest run","build":"node build.js","test:ui":"vitest --ui","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","repository":{"url":"git+https://github.com/BaryoDev/rnxjs.git","type":"git"},"_npmVersion":"10.9.4","description":"The Bootstrap-Native Framework for Production Apps. Zero build step, reactive components for Backend Devs & Internal Tools.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"bootstrap-icons":"^1.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","esbuild":"^0.27.0","happy-dom":"^20.0.11","@vitest/ui":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","@playwright/test":"^1.57.0","@vitest/coverage-v8":"^4.0.16"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_1.0.0_1766759984050_0.3781060092412234","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@arnelirobles/rnxjs","version":"2.0.0","keywords":["bootstrap","vanilla-js","javascript","framework","reactive","components","rnxjs","django","laravel","rails","no-build","admin-dashboard","internal-tools","data-binding","web-components"],"author":{"name":"Arnel Isiderio Robles"},"license":"MPL-2.0","_id":"@arnelirobles/rnxjs@2.0.0","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"homepage":"https://github.com/BaryoDev/rnxjs#readme","bugs":{"url":"https://github.com/BaryoDev/rnxjs/issues"},"dist":{"shasum":"89b634df9551963f5e676508382b5a741417e503","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-2.0.0.tgz","fileCount":111,"integrity":"sha512-AVt3wxaKpxSZ8fxDShjBd4fAq0G83AE5U0z7/aP34u1IEQMQ1Eb3FCa9nMDvQ4fvh2jCXAGJ8zNey4vqbPCG2w==","signatures":[{"sig":"MEYCIQDc1UrxWEOrfhSUjZf3/t169/aOA3WdBmbRCj0VRKH8mgIhAL8TTxwA8xEAVrc+2lZOZ904hmYTQnAcqMrKs+S9+bzZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2182541},"main":"index.js","type":"module","types":"index.d.ts","unpkg":"dist/rnx.global.js","exports":{".":{"import":"./dist/rnx.esm.js","require":"./index.js"},"./css/*":"./css/*","./dist/*":"./dist/*","./css/bootstrap-m3-theme.css":"./css/bootstrap-m3-theme.css"},"funding":{"url":"https://ko-fi.com/arnelirobles","type":"ko-fi"},"gitHead":"ba7fcf88359f111baf251f7cbd10ef35c1f97ca9","scripts":{"test":"vitest run","build":"node build.js","test:ui":"vitest --ui","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"arnelirobles","email":"arnelirobles@gmail.com"},"jsdelivr":"dist/rnx.global.js","repository":{"url":"git+https://github.com/BaryoDev/rnxjs.git","type":"git"},"_npmVersion":"10.9.4","description":"The Bootstrap-Native Framework for Production Apps. Zero build step, reactive components for Backend Devs & Internal Tools.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"bootstrap-icons":"^1.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","esbuild":"^0.27.0","happy-dom":"^20.0.11","@vitest/ui":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","@playwright/test":"^1.57.0","@vitest/coverage-v8":"^4.0.16"},"_npmOperationalInternal":{"tmp":"tmp/rnxjs_2.0.0_1784033716106_0.4280385180358517","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"_id":"@arnelirobles/rnxjs@2.1.0","bugs":{"url":"https://github.com/BaryoDev/rnxjs/issues"},"dist":{"shasum":"4b1912d26b465261c74d4f1c50218553fa2a042f","tarball":"https://registry.npmjs.org/@arnelirobles/rnxjs/-/rnxjs-2.1.0.tgz","fileCount":99,"integrity":"sha512-+lhX8QfOxm7j6tWOsneHUPYxbTZtF0WdPtPOtb8GC9n1GlRNsDcmw+bbny4e7Sw1CCRtkleHQu5eY9qPp0DS/Q==","signatures":[{"sig":"MEUCIHKAlhxv1pF6sNFgf7U4gWXRKKeeuLRqQLcArdXovcMKAiEAkjD7z6ZdGyFemmE6IaTIxiUPzoePottqaQcM55efFmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCSKPZIW7flMUPVA//uGnhJHLROynGEn+5gr5gA4NXp3AIhAKFgGelm2axMTymO0ruHLqIKgbVBX7FR7femZWfFR4j3"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arnelirobles%2frnxjs@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2191256},"main":"index.js","name":"@arnelirobles/rnxjs","type":"module","types":"index.d.ts","unpkg":"dist/rnx.global.js","author":{"name":"Arnel Isiderio Robles"},"exports":{".":{"import":"./dist/rnx.esm.js","require":"./index.js"},"./css/*":"./css/*","./dist/*":"./dist/*","./css/rnx.css":"./css/rnx.css","./css/bootstrap-m3-theme.css":"./css/bootstrap-m3-theme.css"},"funding":{"url":"https://ko-fi.com/arnelirobles","type":"ko-fi"},"gitHead":"4c737fccbd9fe0efc97d5922366e6d348b68d5f1","license":"MPL-2.0","scripts":{"test":"vitest run","build":"node build.js","test:ui":"vitest --ui","test:watch":"vitest","test:coverage":"vitest run --coverage"},"version":"2.1.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:48a71374-3cbe-4d1e-bbad-a7d80c39806f"}},"homepage":"https://github.com/BaryoDev/rnxjs#readme","jsdelivr":"dist/rnx.global.js","keywords":["bootstrap","vanilla-js","javascript","framework","reactive","components","rnxjs","django","laravel","rails","no-build","admin-dashboard","internal-tools","data-binding","web-components"],"repository":{"url":"git+https://github.com/BaryoDev/rnxjs.git","type":"git"},"_npmVersion":"12.0.2","description":"The Bootstrap-Native Framework for Production Apps. Zero build step, reactive components for Backend Devs & Internal Tools.","directories":{},"maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"bootstrap-icons":"^1.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","esbuild":"^0.27.0","happy-dom":"^20.0.11","@vitest/ui":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","@playwright/test":"^1.57.0","@vitest/coverage-v8":"^4.0.16"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rnxjs_2.1.0_1789712407357_0.23956408010631658"}}},"time":{"created":"2025-03-24T10:04:16.669Z","modified":"2026-09-18T06:20:08.113Z","0.1.0":"2025-03-24T10:04:17.294Z","0.1.1":"2025-03-24T10:13:29.153Z","0.1.2":"2025-03-24T10:31:52.750Z","0.1.3":"2025-03-24T11:44:27.489Z","0.1.4":"2025-03-24T23:59:07.697Z","0.1.5":"2025-03-25T00:20:49.954Z","0.1.6":"2025-11-26T14:30:52.162Z","0.1.7":"2025-11-29T11:58:52.597Z","0.1.8":"2025-11-29T15:02:01.572Z","0.1.9":"2025-12-02T06:45:04.392Z","0.1.10":"2025-12-02T16:15:43.042Z","0.2.0":"2025-12-02T16:28:18.535Z","0.2.1":"2025-12-05T13:42:24.654Z","0.2.2":"2025-12-05T14:30:11.421Z","0.3.2":"2025-12-07T11:47:57.259Z","0.3.3":"2025-12-07T12:16:30.678Z","0.3.4":"2025-12-07T12:31:53.803Z","0.3.5":"2025-12-07T12:58:20.548Z","0.3.6":"2025-12-07T14:05:15.301Z","0.3.7":"2025-12-07T14:14:43.279Z","0.3.8":"2025-12-07T14:18:43.458Z","0.3.9":"2025-12-07T14:21:12.272Z","0.3.10":"2025-12-07T14:31:23.650Z","0.3.14":"2025-12-07T16:13:22.426Z","0.3.16":"2025-12-08T09:50:38.099Z","1.0.0":"2025-12-26T14:39:44.247Z","2.0.0":"2026-07-14T12:55:16.271Z","2.1.0":"2026-09-18T06:20:07.488Z"},"bugs":{"url":"https://github.com/BaryoDev/rnxjs/issues"},"author":{"name":"Arnel Isiderio Robles"},"license":"MPL-2.0","homepage":"https://github.com/BaryoDev/rnxjs#readme","keywords":["bootstrap","vanilla-js","javascript","framework","reactive","components","rnxjs","django","laravel","rails","no-build","admin-dashboard","internal-tools","data-binding","web-components"],"repository":{"url":"git+https://github.com/BaryoDev/rnxjs.git","type":"git"},"description":"The Bootstrap-Native Framework for Production Apps. Zero build step, reactive components for Backend Devs & Internal Tools.","maintainers":[{"name":"arnelirobles","email":"arnelirobles@gmail.com"}],"readme":"# rnxJS\n\n**Sortable tables, date pickers, modals, and 43 more components. In a script tag, in the template you already have.**\n\nNo Node. No build step. No frontend toolchain. Drop them into a Django, Rails or Laravel template, or plain HTML.\n\n[![npm version](https://img.shields.io/npm/v/@arnelirobles/rnxjs)](https://www.npmjs.com/package/@arnelirobles/rnxjs)\n[![npm downloads](https://img.shields.io/npm/dm/@arnelirobles/rnxjs)](https://www.npmjs.com/package/@arnelirobles/rnxjs)\n[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@arnelirobles/rnxjs)](https://bundlephobia.com/package/@arnelirobles/rnxjs)\n[![License](https://img.shields.io/npm/l/@arnelirobles/rnxjs)](https://github.com/BaryoDev/rnxjs/blob/main/LICENSE)\n\n```html\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5/dist/css/bootstrap.min.css\" rel=\"stylesheet\">\n<script src=\"https://cdn.jsdelivr.net/npm/@arnelirobles/rnxjs/dist/rnx.global.js\"></script>\n\n<DataTable sortable filterable></DataTable>\n```\n\nThat is the whole setup. No `npm install`, no bundler, no `package.json`.\n\nLink `rnx.css` as well and that markup renders like this, with no styling of\nyour own:\n\n![An admin dashboard built with rnxJS: metric cards, a sortable data table and an action panel](docs/media/dashboard.png)\n\nEvery screen above is rnxJS components in a plain HTML file. There is a live\nversion at [playground.baryo.dev/rnxjs](https://playground.baryo.dev/rnxjs/).\n\n## Who this is for\n\nYou write Django, Rails, Laravel or Express. You need an admin screen with a sortable table and a date picker by Friday. You do not want to stand up a separate React repo, learn a build pipeline, and maintain two deployments to get there.\n\nrnxJS gives you the components without the toolchain. It renders into the templates you already serve.\n\n**Not for you if:** you are building a large single-page application. Use a real framework. rnxJS is for server-rendered apps that need interactive pieces.\n\n---\n\n## The 46 components\n\n**Data and tables**\n`DataTable` `VirtualList` `List` `Pagination` `StatCard` `Search` `Autocomplete`\n\n**Forms**\n`Input` `Textarea` `Select` `Checkbox` `Radio` `Switch` `Slider` `DatePicker` `FileUpload` `FormGroup` `SegmentedButton` `Chips`\n\n**Navigation**\n`NavigationBar` `NavigationDrawer` `Sidebar` `TopAppBar` `Breadcrumb` `Tabs` `Stepper` `Dropdown`\n\n**Feedback and state**\n`Alert` `Toast` `Modal` `Tooltip` `Spinner` `ProgressBar` `Skeleton` `EmptyState` `ErrorState` `ErrorBoundary` `Badge`\n\n**Layout**\n`Container` `Row` `Column` `Card` `Accordion`\n\n**Actions**\n`Button` `FAB` `Icon`\n\nFull reference with props and examples: [Component Library](./docs/COMPONENTS.md)\n\n---\n\n## Styling and customization\n\nComponents come unstyled by default and take their look from a stylesheet.\nLink `rnx.css` and you get a considered default without making any decisions:\n\n```html\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5/dist/css/bootstrap.min.css\" rel=\"stylesheet\">\n<link href=\"https://cdn.jsdelivr.net/npm/@arnelirobles/rnxjs/css/rnx.css\" rel=\"stylesheet\">\n```\n\nEverything below is optional. Take it in the order that suits you: most people\nnever get past the first step.\n\n### 1. Change the colours and shapes\n\n`rnx.css` is built entirely from CSS custom properties. Set them in your own\nstylesheet, after the link above, and every one of the 46 components follows.\nNo JavaScript, no build step, no forking:\n\n```css\n:root {\n  --rnx-primary: #7c3aed;\n  --rnx-border-radius: 12px;\n  --rnx-font-family: \"Inter\", system-ui, sans-serif;\n}\n```\n\nThat is the whole of theming for most projects. Buttons, tables, inputs,\nmodals, the focus rings and the page furniture all recolour together.\n\nThe full list lives in [`css/themes/base.css`](./css/themes/base.css). The ones\nworth knowing:\n\n| Token | Controls |\n|---|---|\n| `--rnx-primary` | the accent, everywhere |\n| `--rnx-success` `--rnx-danger` `--rnx-warning` | status colours, deliberately separate from the accent |\n| `--rnx-background` `--rnx-surface` | the page, and the panels on it |\n| `--rnx-text-primary` `--rnx-text-secondary` | ink |\n| `--rnx-border-color` `--rnx-border-radius` | lines and corners |\n| `--rnx-font-family` `--rnx-font-family-display` `--rnx-font-family-monospace` | body, headings, code |\n\nA dark theme is the same tokens under a media query:\n\n```css\n@media (prefers-color-scheme: dark) {\n  :root {\n    --rnx-background: #0f1418;\n    --rnx-surface: #161d23;\n    --rnx-text-primary: #e6ecf1;\n    --rnx-border-color: #26313a;\n  }\n}\n```\n\n### 2. Override one component\n\nEvery component accepts `className`, and those classes are applied last so they\nwin:\n\n```html\n<Button variant=\"primary\" label=\"Save\" className=\"my-save-button\" />\n```\n\n```css\n.my-save-button { letter-spacing: 0.04em; text-transform: uppercase; }\n```\n\n### 3. Replace the class map\n\nIf you are not using Bootstrap at all, a theme is a map of class strings per\ncomponent. This is how the built-in Tailwind theme works:\n\n```javascript\nimport { registerTheme, setTheme } from '@arnelirobles/rnxjs';\n\nregisterTheme({\n  name: 'my-theme',\n  components: {\n    button: {\n      base: 'my-btn',\n      variants: { primary: 'my-btn-primary' },\n      sizes: { sm: 'my-btn-sm', md: '', lg: 'my-btn-lg' }\n    }\n  }\n});\nsetTheme('my-theme');\n```\n\nComponents are theme-agnostic, so the same markup renders correctly under any\nregistered theme:\n\n```html\n<Button variant=\"primary\" label=\"Save changes\"></Button>\n<!-- bootstrap: class=\"btn btn-primary\" -->\n<!-- tailwind:  class=\"inline-flex items-center ... bg-indigo-600 text-white ...\" -->\n```\n\nSwitch with `setTheme('bootstrap')` or `setTheme('tailwind')`.\n\n### What is not supported yet\n\nChanging a component's internal markup. `Autocomplete` and `VirtualList` accept\na `renderItem` function; nothing else does. Slots are\n[tracked separately](https://github.com/BaryoDev/rnxjs/issues/30).\n\n---\n\n## Zero to Hero: Build Your First App\n\nWelcome to rnxJS! In this 5-minute tutorial, we'll build a reactive **Employee Directory** with a search filter. No Webpack, no Bundlers, just HTML and JS.\n\n### Step 1: The Setup (`index.html`)\n\nCreate an `index.html` file and include Bootstrap + rnxJS.\n\n```html\n<!DOCTYPE html>\n<html>\n<head>\n    <title>rnxJS App</title>\n    <!-- 1. Bootstrap CSS -->\n    <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css\" rel=\"stylesheet\">\n    <!-- 2. Bootstrap Icons (needed for the icon prop) -->\n    <link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n    <!-- 3. rnxJS M3 Theme (Optional, for Material Styling) -->\n    <link href=\"https://cdn.jsdelivr.net/npm/@arnelirobles/rnxjs/css/bootstrap-m3-theme.css\" rel=\"stylesheet\">\n</head>\n<body class=\"bg-light\">\n\n    <!-- App Container -->\n    <Container class=\"py-5\" id=\"app\">\n        <!-- We will put our content here -->\n    </Container>\n\n    <!-- 4. rnxJS Library -->\n    <script src=\"https://cdn.jsdelivr.net/npm/@arnelirobles/rnxjs/dist/rnx.global.js\"></script>\n    <script src=\"app.js\"></script>\n</body>\n</html>\n```\n\n### Step 2: The Logic (`app.js`)\n\nCreate `app.js`. We'll initialize our **Reactive State**.\n\n```javascript\n// app.js\nconst { createReactiveState, autoRegisterComponents, loadComponents } = rnx;\n\n// 1. Define your data model\nconst state = createReactiveState({\n    searchQuery: '',\n    employees: [\n        { id: 1, name: 'Alice Johnson', role: 'Engineer', dept: 'Tech' },\n        { id: 2, name: 'Bob Smith', role: 'Designer', dept: 'Creative' },\n        { id: 3, name: 'Charlie Kim', role: 'Manager', dept: 'Sales' },\n    ],\n    // Computed property (derived state works by manually updating or logical getters)\n    // For simplicity in rnxJS v0, we handle filtering in the view or listeners\n});\n\n// 2. Register Bootstrap Components\nautoRegisterComponents();\n\n// 3. Hydrate the DOM\nloadComponents(document.body, state);\n```\n\n### Step 3: The UI\n\nUpdate the `<Container>` in `index.html`. We use `data-bind` to sync inputs and text.\n\n```html\n<Container class=\"py-5\" id=\"app\">\n    <Card class=\"mb-4\">\n        <h2 class=\"mb-3\">Employee Directory</h2>\n        \n        <!-- Search Input: Two-way binding to 'searchQuery' -->\n        <FormGroup>\n            <Input \n                placeholder=\"Search employees...\" \n                data-bind=\"searchQuery\" \n            />\n            <small class=\"text-muted\">\n                Searching for: <span data-bind=\"searchQuery\" class=\"fw-bold\"></span>\n            </small>\n        </FormGroup>\n    </Card>\n\n    <Row id=\"employee-list\">\n        <!-- We will render the list here dynamically -->\n    </Row>\n\n    <!-- Floating Action Button -->\n    <FAB icon=\"add\" variant=\"primary\" onclick=\"alert('Add Employee Clicked!')\"></FAB>\n</Container>\n```\n\n### Step 4: Making it Dynamic\n\nrnxJS works great with vanilla JS logic. Let's add a listener to filter the list.\n\n```javascript\n// Add this to app.js\n\nfunction renderList() {\n    const listContainer = document.getElementById('employee-list');\n    const query = state.searchQuery.toLowerCase();\n    \n    // Filter logic\n    const filtered = state.employees.filter(emp => \n        emp.name.toLowerCase().includes(query) || \n        emp.role.toLowerCase().includes(query)\n    );\n\n    // Vanilla JS rendering (fast and simple)\n    listContainer.innerHTML = filtered.map(emp => `\n        <div class=\"col-md-4 mb-3\">\n            <div class=\"card h-100\">\n                <div class=\"card-body\">\n                    <h5 class=\"card-title\">${emp.name}</h5>\n                    <h6 class=\"card-subtitle mb-2 text-muted\">${emp.dept}</h6>\n                    <p class=\"card-text\">${emp.role}</p>\n                </div>\n            </div>\n        </div>\n    `).join('');\n}\n\n// Subscribe to search changes to re-render\nstate.subscribe('searchQuery', renderList);\n\n// Initial render\nrenderList();\n```\n\n🎉 **That's it!** You have a reactive app with search and Bootstrap styling.\n\n---\n\n## Core Concepts & API\n\n### 1. Reactive State\nThe heart of rnxJS is the `createReactiveState` function. It wraps your object in a Proxy to detect changes.\n\n```javascript\nconst state = rnx.createReactiveState({\n    user: { name: 'Arnel', points: 100 },\n    items: ['Apple', 'Banana']\n});\n```\n\n**Key Features:**\n- **Deeply Nested**: Works on `state.user.name`.\n- **Arrays**: `push`, `pop`, `splice` trigger updates automatically.\n- **`state.subscribe(path, callback)`**: Listen for changes.\n    - Path examples: `'user.name'`, `'items'`, `'items.0'`.\n- **`state.$unsubscribeAll()`**: Cleanup all listeners (useful for Single Page Apps).\n\n### 2. Data Binding (`data-bind`)\nConnect your DOM to State without event listeners.\n\n| Element                  | Binding Type | Behavior                                                |\n| :----------------------- | :----------- | :------------------------------------------------------ |\n| `<input>`, `<textarea>`  | **Two-Way**  | Updates state on typing; updates value on state change. |\n| `<select>`               | **Two-Way**  | Updates selection state.                                |\n| `<checkbox>`             | **Two-Way**  | Binds to boolean state.                                 |\n| `<div>`, `<span>`, `<p>` | **One-Way**  | Updates `textContent` when state changes.               |\n\n**Validation (`data-rule`)**:\nAdd rules to inputs to populate `state.errors`.\n```html\n<input data-bind=\"email\" data-rule=\"required|email\" />\n<span class=\"text-danger\" data-bind=\"errors.email\"></span>\n```\nRules: `required`, `email`, `numeric`, `min:5`, `max:10`, `pattern:^A.*`.\n\n### 3. Components (`rnxJS Components`)\nrnxJS provides **46 production-ready** components.\n\n**Standard**: `<Button>`, `<Card>`, `<Modal>`, `<Alert>`, `<Badge>`, `<Spinner>`, `<Toast>`.\n**Forms**: `<Input>`, `<Checkbox>`, `<Radio>`, `<Select>`, `<Textarea>`, `<Switch>`, `<Slider>`, `<FileUpload>`.\n**Layout**: `<Container>`, `<Row>`, `<Column>`, `<Sidebar>`.\n**Material (M3)**: `<FAB>`, `<Chips>`, `<NavigationDrawer>`, `<TopAppBar>`, `<List>`, `<Icon>`.\n**Advanced**: `<DataTable>`, `<Dropdown>`, `<ProgressBar>`, `<Stepper>`, `<Tooltip>`, `<Tabs>`, `<Accordion>`, `<Pagination>`.\n\n**Usage:**\n1. **Auto Register**: `rnx.autoRegisterComponents()` registers all of them.\n2. **Manual Register**: `rnx.registerComponent('MyBtn', Button)`.\n3. **Props**: Attributes are passed as props. `data-bind` works on components too!\n   ```html\n   <Input label=\"Name\" data-bind=\"user.name\" />\n   <!-- Renders a labeled input group bound to user.name -->\n   ```\n\n### 4. Lifecycle Hooks\nWhen creating custom components, use hooks to manage resources.\n\n```javascript\nconst component = createComponent(templateFn, props);\n\ncomponent.useEffect((self) => {\n    console.log('Mounted!');\n    \n    const interval = setInterval(() => console.log('Tick'), 1000);\n    \n    // Return cleanup function (called on unmount)\n    return () => clearInterval(interval);\n});\n\ncomponent.onUnmount(() => {\n    console.log('Destroyed');\n});\n```\n\n---\n\n## Project Structure\n\nFor a clean codebase, we recommend this folder structure:\n\n```text\n/\n├── index.html        # Entry point\n├── css/\n│   └── styles.css    # Custom styles / overlays\n├── js/\n│   ├── app.js        # Main logic (State init, Load)\n│   ├── components/   # Custom components\n│   │   └── UserCard.js\n│   └── utils/        # Helpers\n└── assets/\n```\n\n### Building Custom Components\nCreate reusable functional components:\n\n```javascript\n// js/components/UserCard.js\nimport { createComponent } from '@arnelirobles/rnxjs';\n\nexport function UserCard({ name, role }) {\n    // Template\n    const template = (state) => `\n        <div class=\"card shadow-sm\">\n            <div class=\"card-body\">\n                <h3>${name}</h3>\n                <p class=\"text-muted\">${role}</p>\n            </div>\n        </div>\n    `;\n\n    return createComponent(template);\n}\n\n// Register it\nimport { registerComponent } from '@arnelirobles/rnxjs';\nregisterComponent('UserCard', UserCard);\n```\n\nUse it in HTML: `<UserCard name=\"John\" role=\"Dev\"></UserCard>`\n\n---\n\n## Installation Options\n\n### 1. CDN (recommended)\n\nUse `unpkg` or `jsdelivr`.\n\n```html\n<!-- Library -->\n<script src=\"https://cdn.jsdelivr.net/npm/@arnelirobles/rnxjs/dist/rnx.global.js\"></script>\n\n<!-- M3 Theme CSS -->\n<link href=\"https://cdn.jsdelivr.net/npm/@arnelirobles/rnxjs/css/bootstrap-m3-theme.css\" rel=\"stylesheet\">\n```\n\n---\n\n### 2. NPM (if you already have a bundler)\n\n```bash\nnpm install @arnelirobles/rnxjs\n```\n\n```javascript\nimport { createReactiveState, loadComponents } from '@arnelirobles/rnxjs';\nimport '@arnelirobles/rnxjs/css/bootstrap-m3-theme.css'; // Optional M3 theme\n```\n\n## Why rnxJS?\n\n| Feature                   | rnxJS                              | jQuery   | Vue 3         | React 18   |\n| ------------------------- | ---------------------------------- | -------- | ------------- | ---------- |\n| **Bundle Size (gzipped)** | ~42KB *(includes 46 components)*   | ~30KB    | ~16KB         | ~42KB      |\n| **Zero Build Required**   | **✅ Yes**                          | ✅ Yes    | ⚠️ Recommended | ❌ Required |\n| **Built-in Components**   | **46**                             | 0        | 0             | 0          |\n| **Two-Way Binding**       | **✅ Built-in**                     | ❌ Manual | ✅ v-model     | ❌ Manual   |\n| **Form Validation**       | **✅ Built-in**                     | ❌ Plugin | ❌ Library     | ❌ Library  |\n| **Learning Curve**        | **1 hour**                         | 1 hour   | 1 day         | 1 week     |\n| **Backend Integration**   | **✅ Django/Rails/Laravel/Express** | ✅ Any    | ⚠️ Nuxt        | ⚠️ Next.js  |\n\n**Perfect for:**\n- **Backend Devs**: Django/Rails/Laravel developers who want interactivity without a separate SPA repo.\n- **Internal Tools**: Rapidly build admin panels using standard Bootstrap.\n- **Prototypes**: \"Zero to Hero\" in 5 minutes.\n- **jQuery Migrations**: Modern reactivity with similar simplicity.\n\nSee [full benchmarks](./docs/BENCHMARKS.md) for detailed performance comparisons.\n\n---\n\n## Icons\n\nrnxJS now uses **Bootstrap Icons** by default. Ensure you include the Bootstrap Icons stylesheet in your project:\n\n```html\n<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\">\n```\n\nWhen using the `icon` prop in components like `Button`, `FAB`, `Icon`, etc., simply provide the icon name (e.g., `moon-stars`, `check-circle`). The library automatically applies the `bi bi-[name]` classes.\n\n```html\n<Button icon=\"moon-stars\" label=\"Theme\" />\n<Icon name=\"check-circle\" color=\"text-success\" />\n```\n\n## Documentation\n\n| Guide                                                          | Description                                                       |\n| -------------------------------------------------------------- | ----------------------------------------------------------------- |\n| [**📰 v1.0.0 Release Post**](./docs/BLOG-V1.0.0.md)             | Complete overview of v1.0.0 features, benchmarks, and comparisons |\n| [**Quick Start**](./docs/QUICK-START.md)                       | Get started in 5 minutes                                          |\n| [**Component Library**](./docs/COMPONENTS.md)                  | Complete reference for all 46 components with examples            |\n| [**API Reference**](./docs/API.md)                             | Complete API documentation with stability guarantees              |\n| [**Migration Guide**](./docs/MIGRATION.md)                     | Migrate from jQuery to rnxJS                                      |\n| [**Benchmarks**](./docs/BENCHMARKS.md)                         | Performance comparisons with jQuery, Vue, React                   |\n\n---\n## Troubleshooting & FAQ\n\n### 1. My `<FAB>` or custom component isn't rendering\n- Ensure you have called `rnx.autoRegisterComponents()` or manually registered it via `rnx.registerComponent('FAB', FAB)`.\n- Check that the Bootstrap Icons stylesheet is included if icons are missing. rnxJS uses Bootstrap Icons (`bi bi-*`), not Material Symbols.\n- If using `data-if`, ensure the condition evaluates to true.\n\n### 2. Data Binding isn't working on some elements\n- As of **v0.3.4**, `data-bind` is synchronous. Ensure `loadComponents(document, state)` is called **after** the DOM is ready (e.g., at the end of `<body>` or inside `DOMContentLoaded`).\n- Check your browser console for warnings like `[rnxJS] Invalid data-bind path`.\n- Ensure your state object was created with `createReactiveState`.\n\n### 3. \"Bootstrap is not defined\" error\n- Use `setBootstrap(window.bootstrap)` if you are using a bundler and Bootstrap isn't attached to the global window object.\n\n### 4. How to contribute?\n- We welcome contributions! Please verify potential changes with existing tests: `npm test`.\n\n---\n\n---\n\n## Project status\n\n- **Tests**: 696 tests across 39 files, running in under 4 seconds. 690 pass; 6 are known failures with open issues against them ([#23](https://github.com/BaryoDev/rnxjs/issues/23), [#24](https://github.com/BaryoDev/rnxjs/issues/24), [#25](https://github.com/BaryoDev/rnxjs/issues/25)).\n- **CI**: not yet running the suite on pull requests. Tracked in [#2](https://github.com/BaryoDev/rnxjs/issues/2).\n- **Browser support**: all modern browsers (Chrome, Firefox, Safari, Edge).\n- **Dependencies**: the CDN build needs only Bootstrap CSS.\n- **Maintenance**: actively maintained, not actively expanded. The component count is deliberately frozen at 46. Bug reports and pull requests are welcome and get read.\n\n---\n\n## Scaffolding and samples\n\nWorking examples: [rnxJS_samples](https://github.com/BaryoDev/rnxJS_samples)\n\n---\n\n## Contributing\n\nIssues labelled [`good first issue`](https://github.com/BaryoDev/rnxjs/labels/good%20first%20issue) carry the file, the line, and the actual failing assertion, so they are pickable without rediscovering anything.\n\nBefore opening a pull request, run `npm test`. Note the 6 known failures above; if your change adds an eighth, that one is yours.\n\nFull changelog: [CHANGELOG.md](./CHANGELOG.md)\n\n---\n\n## License\n\nMPL-2.0 © Arnel Isiderio Robles\n","readmeFilename":"README.md"}