{"_id":"@bolkstudio/bolklab","_rev":"10-e8f40676ffc8af9a53d18e747e0bd48e","name":"@bolkstudio/bolklab","dist-tags":{"latest":"1.1.7"},"versions":{"1.0.0":{"name":"@bolkstudio/bolklab","version":"1.0.0","keywords":["Webflow","Javascript","UX","GSAP","Performances"],"author":{"name":"Bolk Studio"},"license":"ISC","_id":"@bolkstudio/bolklab@1.0.0","maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"dist":{"shasum":"fb2531f182cf630e8cc7fa60c44507bf01c52c79","tarball":"https://registry.npmjs.org/@bolkstudio/bolklab/-/bolklab-1.0.0.tgz","fileCount":6,"integrity":"sha512-z7qMcqFbkBDh7wCKyjwAQ6VDiz1sfqKD2D3uOwr5B7i9isHP4jmgLpVpZQ6f90QiTXfCLZG2iAsGhpXxjIyhzw==","signatures":[{"sig":"MEYCIQDN1r9PLfO5slnzDH/NIZPEEGC6BPaMLcBaS/UQ5odscwIhALoxPzjo/3JMwwollx6w2B+2WjGbEPB8rM4XuyCjRqqj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1870},"main":"index.js","type":"module","gitHead":"735290b56a34169a9a01828dcc535eabac6ebb1f","scripts":{"build":"rollup -c"},"_npmUser":{"name":"bolkstudio","email":"hello@bolk.studio"},"repository":{"url":"git+https://github.com/bolkstudio/BolkLab---Production.git","type":"git","build":"rollup -c"},"_npmVersion":"10.8.2","description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"gsap":"^3.14.2"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.60.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^29.0.2","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bolklab_1.0.0_1774962992261_0.058550499525871214","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bolkstudio/bolklab","version":"1.0.1","keywords":["Webflow","Javascript","UX","GSAP","Performances"],"author":{"name":"Bolk Studio"},"license":"ISC","_id":"@bolkstudio/bolklab@1.0.1","maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"dist":{"shasum":"d80bbf7b33508c4c4e3b29ba5825150fecbfbe3c","tarball":"https://registry.npmjs.org/@bolkstudio/bolklab/-/bolklab-1.0.1.tgz","fileCount":6,"integrity":"sha512-d8mzAeE6UbaHBkM05oR3uMuQfLz44HB+UMbflMmmCprYY6jAsx3O83bqpttzi6bz+V3NWKflPn2Uyf2dMj+LnA==","signatures":[{"sig":"MEUCIQD6MbH/vnQVpkqbAc74hKoDanKFovejFL1hSw++0oj/kQIgHMmAOWwLzJ69K44qvJiEr0iNZESTc8L4n0R5QooPZNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1882},"main":"index.js","type":"module","gitHead":"e6969129f0ca175a1471f081cea6c83f8a8711d8","scripts":{"build":"rollup -c"},"_npmUser":{"name":"bolkstudio","email":"hello@bolk.studio"},"repository":{"url":"git+https://github.com/bolkstudio/BolkLab---Production.git","type":"git","build":"rollup -c"},"_npmVersion":"10.8.2","description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"gsap":"^3.14.2"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.60.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^29.0.2","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bolklab_1.0.1_1774963852534_0.1662101775164464","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bolkstudio/bolklab","version":"1.1.0","keywords":["Webflow","Javascript","UX","GSAP","Performances"],"author":{"name":"Bolk Studio"},"license":"ISC","_id":"@bolkstudio/bolklab@1.1.0","maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"dist":{"shasum":"6fce9962f4429382f2b9387aabf0a4a302c75e72","tarball":"https://registry.npmjs.org/@bolkstudio/bolklab/-/bolklab-1.1.0.tgz","fileCount":6,"integrity":"sha512-++3vI6gWI7tlcFE9oVP4QCgzKlxCGkcLAvPoNo3UYeSZxEJXT3MjYsTSvC1S3ooAJ/FDdqapajgP7jq7dI57aQ==","signatures":[{"sig":"MEQCIHK5RTTQVa2F0A4eVfuCG3wxxa5dnY4mOy42SqouSoT0AiA0aSj7VJj+j9V9UeuJNcsVtSLZq4Z1biF4QCC0peUb8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116901},"main":"dist/index.umd.js","type":"module","gitHead":"87798eb549192a68b9e0c8121448d7b5bc125c45","scripts":{"build":"rollup -c"},"_npmUser":{"name":"bolkstudio","email":"hello@bolk.studio"},"repository":{"url":"git+https://github.com/bolkstudio/BolkLab---Production.git","type":"git","build":"rollup -c"},"_npmVersion":"10.8.2","description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"gsap":"^3.14.2"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.60.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^29.0.2","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-dynamic-import-vars":"^2.1.5"},"_npmOperationalInternal":{"tmp":"tmp/bolklab_1.1.0_1777986314178_0.14751581492709454","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@bolkstudio/bolklab","version":"1.1.1","keywords":["Webflow","Javascript","UX","GSAP","Performances"],"author":{"name":"Bolk Studio"},"license":"ISC","_id":"@bolkstudio/bolklab@1.1.1","maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"dist":{"shasum":"dfaf668a90d61a74a41156bf21d704589c3515a0","tarball":"https://registry.npmjs.org/@bolkstudio/bolklab/-/bolklab-1.1.1.tgz","fileCount":6,"integrity":"sha512-bvcUpCLb2+PDwkh69EFtyj9OhaP21hdu9GWRAw5Q0q6j+vZZUGreL/JDS4zAg6sqG+69MiuNGUa0QimsCfbDMQ==","signatures":[{"sig":"MEYCIQDq5ZuJgZkIdhp+9zJ20AooTmzHfbDQ3yg7U+InnTFxpgIhALiAN8M89H3DwyPhrzPo1ngU1PrmLlASiNAjwDQWx+J6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162210},"main":"dist/index.umd.js","type":"module","gitHead":"15e715b8d204b4084b25613b7be8bd3bd0cc7885","scripts":{"build":"rollup -c"},"_npmUser":{"name":"bolkstudio","email":"hello@bolk.studio"},"repository":{"url":"git+https://github.com/bolkstudio/BolkLab---Production.git","type":"git","build":"rollup -c"},"_npmVersion":"10.8.2","description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"gsap":"^3.14.2"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.60.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^29.0.2","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-dynamic-import-vars":"^2.1.5"},"_npmOperationalInternal":{"tmp":"tmp/bolklab_1.1.1_1778860273449_0.0801204433489906","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@bolkstudio/bolklab","version":"1.1.2","keywords":["Webflow","Javascript","UX","GSAP","Performances"],"author":{"name":"Bolk Studio"},"license":"ISC","_id":"@bolkstudio/bolklab@1.1.2","maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"dist":{"shasum":"c88271a927f20827f1b899a06f6bad3eeafb28d7","tarball":"https://registry.npmjs.org/@bolkstudio/bolklab/-/bolklab-1.1.2.tgz","fileCount":6,"integrity":"sha512-hKNAGXEYWDYbz5fXM1dPbcHQdXg/QBCDWjCOfr3bfcAn5xYloBdzVuoUnPNdpcnVHlwlgKzti+O2F1F/JSSdKA==","signatures":[{"sig":"MEUCIEzGR/qHjjDi59kB2yhPZjOCwH7RxBDtdwJnDgXtSdTSAiEA0LZWpVhYONwsChKWU3jcaaPNq0RXt4jT3adc1DPUz8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163688},"main":"dist/index.umd.js","type":"module","gitHead":"f5bcaec32901cee6c330e7d83871fdec56109732","scripts":{"build":"rollup -c"},"_npmUser":{"name":"bolkstudio","email":"hello@bolk.studio"},"repository":{"url":"git+https://github.com/bolkstudio/BolkLab---Production.git","type":"git","build":"rollup -c"},"_npmVersion":"10.8.2","description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"gsap":"^3.14.2"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.60.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^29.0.2","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-dynamic-import-vars":"^2.1.5"},"_npmOperationalInternal":{"tmp":"tmp/bolklab_1.1.2_1778861302395_0.6035631736953138","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@bolkstudio/bolklab","version":"1.1.3","keywords":["Webflow","Javascript","UX","GSAP","Performances"],"author":{"name":"Bolk Studio"},"license":"ISC","_id":"@bolkstudio/bolklab@1.1.3","maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"dist":{"shasum":"87dae2c6bd3766fe3e0faf8c1dcd3aca4c1d9948","tarball":"https://registry.npmjs.org/@bolkstudio/bolklab/-/bolklab-1.1.3.tgz","fileCount":6,"integrity":"sha512-IZsBO6HjDO9KLXvFfU8mECbN3JNb7M9mfaP6yPDCmfuXeOVOj6ADFXwgnn2hh6TU8bzmhHoFijIAFqIviIXLyg==","signatures":[{"sig":"MEQCIELBt1LzK+qvryEMKb5NkVL6IWy1FTh5LQC1Diy5h1YCAiAOSME3eMwKZqpi5JZ0x62CzSleD6Jppk1qYU1lWVu9gQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259864},"main":"dist/index.umd.js","type":"module","gitHead":"38c511e76d8dfa213cd26452ea5d2d6628879a1f","scripts":{"build":"rollup -c"},"_npmUser":{"name":"bolkstudio","email":"hello@bolk.studio"},"repository":{"url":"git+https://github.com/bolkstudio/BolkLab---Production.git","type":"git","build":"rollup -c"},"_npmVersion":"10.8.2","description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"gsap":"^3.14.2"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.60.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^29.0.2","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-dynamic-import-vars":"^2.1.5"},"_npmOperationalInternal":{"tmp":"tmp/bolklab_1.1.3_1779091703037_0.9705528567845605","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@bolkstudio/bolklab","version":"1.1.4","keywords":["Webflow","Javascript","UX","GSAP","Performances"],"author":{"name":"Bolk Studio"},"license":"ISC","_id":"@bolkstudio/bolklab@1.1.4","maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"dist":{"shasum":"3cfbd4d5e11d3d079f8c52cdfb96c4070ec71e19","tarball":"https://registry.npmjs.org/@bolkstudio/bolklab/-/bolklab-1.1.4.tgz","fileCount":6,"integrity":"sha512-F/Mp/xLbTa1KMr30T1o0gnLt//13Sd+RnHZn2bQQiaSquAnmv6UCymtTa9/23iNEcDmpi9y6DeVr0h6bZGHiTA==","signatures":[{"sig":"MEYCIQCoFRkF1o8Bt7R2F/vQPaQ6It9+7dwnjtoLRDFvGrldNQIhAM4yNyi33S/oYNcncs37vWwBJZ2nzRBNOw7PXaDkp9zI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219786},"main":"dist/index.umd.js","type":"module","gitHead":"cedbf04cca9d720452f87ab09ec119f7c3a8d385","scripts":{"build":"rollup -c"},"_npmUser":{"name":"bolkstudio","email":"hello@bolk.studio"},"repository":{"url":"git+https://github.com/bolkstudio/BolkLab---Production.git","type":"git","build":"rollup -c"},"_npmVersion":"10.8.2","description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"gsap":"^3.14.2"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.60.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^29.0.2","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-dynamic-import-vars":"^2.1.5"},"_npmOperationalInternal":{"tmp":"tmp/bolklab_1.1.4_1779179704574_0.29916418870691897","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@bolkstudio/bolklab","version":"1.1.5","keywords":["Webflow","Javascript","UX","GSAP","Performances"],"author":{"name":"Bolk Studio"},"license":"ISC","_id":"@bolkstudio/bolklab@1.1.5","maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"dist":{"shasum":"39b1d191dda261c2aba81aaef2f5a331b087108a","tarball":"https://registry.npmjs.org/@bolkstudio/bolklab/-/bolklab-1.1.5.tgz","fileCount":6,"integrity":"sha512-GMRWRvS/gfDYVCoJuX21BYv/hCbqwv1e3U887dg2sbX5pw2J6fOwBiawctwN7it7HFto68GSsO4zz+zU50T05w==","signatures":[{"sig":"MEUCIQCfK3o3GTyt+t4ipURI87dpgZLcByTUHmKV39W5Bo1PHAIgRkY4eUcmroCy72GVaQmvoTDovgH+/3UVPF6Mg4v4dhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260386},"main":"dist/index.umd.js","type":"module","gitHead":"094fd5526e91a669260d105d928317e6378e16f2","scripts":{"build":"rollup -c"},"_npmUser":{"name":"bolkstudio","email":"hello@bolk.studio"},"repository":{"url":"git+https://github.com/bolkstudio/BolkLab---Production.git","type":"git","build":"rollup -c"},"_npmVersion":"10.8.2","description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"gsap":"^3.14.2"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.60.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^29.0.2","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-dynamic-import-vars":"^2.1.5"},"_npmOperationalInternal":{"tmp":"tmp/bolklab_1.1.5_1779180148030_0.7022259116109719","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@bolkstudio/bolklab","version":"1.1.6","keywords":["Webflow","Javascript","UX","GSAP","Performances"],"author":{"name":"Bolk Studio"},"license":"ISC","_id":"@bolkstudio/bolklab@1.1.6","maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"dist":{"shasum":"75b2b6b5436d65c1f0dd01fa298a0f203fb996d6","tarball":"https://registry.npmjs.org/@bolkstudio/bolklab/-/bolklab-1.1.6.tgz","fileCount":6,"integrity":"sha512-CeGUKsM/9WJlDBxeUb1BD6QrvMckIQOY+CXApxR2S8Rxvw3blUiXjoGKtspnHcrfxNakbzu9KqTsP4AqkQa5Cg==","signatures":[{"sig":"MEQCIHlBVqOBwrAfPoMKrz3Wq5NHK/HUhfUIaabHuAHKRrxoAiAVja3XiMycMnOxufLW30DhEI7qLO98OWC1js7wciLNOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260449},"main":"dist/index.umd.js","type":"module","gitHead":"fcc95718933ddb30b7cdcd7daa46c27d34120b89","scripts":{"build":"rollup -c"},"_npmUser":{"name":"bolkstudio","email":"hello@bolk.studio"},"repository":{"url":"git+https://github.com/bolkstudio/BolkLab---Production.git","type":"git","build":"rollup -c"},"_npmVersion":"10.8.2","description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"gsap":"^3.14.2"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.60.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^29.0.2","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-dynamic-import-vars":"^2.1.5"},"_npmOperationalInternal":{"tmp":"tmp/bolklab_1.1.6_1779180512141_0.6791236792221116","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@bolkstudio/bolklab","version":"1.1.7","type":"module","description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","main":"dist/index.umd.js","scripts":{"build":"rollup -c"},"repository":{"type":"git","url":"git+https://github.com/bolkstudio/BolkLab---Production.git","build":"rollup -c"},"keywords":["Webflow","Javascript","UX","GSAP","Performances"],"author":{"name":"Bolk Studio"},"license":"ISC","bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","devDependencies":{"@rollup/plugin-commonjs":"^29.0.2","@rollup/plugin-dynamic-import-vars":"^2.1.5","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-terser":"^1.0.0","rollup":"^4.60.0"},"dependencies":{"gsap":"^3.14.2"},"_id":"@bolkstudio/bolklab@1.1.7","gitHead":"6a3ab368b64bf3dae0675113841dd2571ad6c935","_nodeVersion":"20.16.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-9/nIF+Y7z3QnMhitRWGW6L1BymYbwqA8UL7MUzTMbM2uHFXYFngD524yGLAK6lpdHMr86pEMqR/GHVhtjCKX6w==","shasum":"6586aad7215fb965f414bc0676b47f5443f8f7e0","tarball":"https://registry.npmjs.org/@bolkstudio/bolklab/-/bolklab-1.1.7.tgz","fileCount":6,"unpackedSize":269938,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBuiIhso8jsckBlU6Qhkrq/THvcm6euviGPCE11av4HGAiBNux8Rs6YbRbKiKs1+CnDdke+loo+a3EQ3QSTkAYp6fQ=="}]},"_npmUser":{"name":"bolkstudio","email":"hello@bolk.studio"},"directories":{},"maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bolklab_1.1.7_1781683568073_0.5747025189037465"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-31T13:16:32.115Z","modified":"2026-06-17T08:06:08.488Z","1.0.0":"2026-03-31T13:16:32.396Z","1.0.1":"2026-03-31T13:30:52.709Z","1.1.0":"2026-05-05T13:05:14.327Z","1.1.1":"2026-05-15T15:51:13.650Z","1.1.2":"2026-05-15T16:08:22.632Z","1.1.3":"2026-05-18T08:08:23.217Z","1.1.4":"2026-05-19T08:35:04.704Z","1.1.5":"2026-05-19T08:42:28.246Z","1.1.6":"2026-05-19T08:48:32.302Z","1.1.7":"2026-06-17T08:06:08.283Z"},"bugs":{"url":"https://github.com/bolkstudio/BolkLab---Production/issues"},"author":{"name":"Bolk Studio"},"license":"ISC","homepage":"https://github.com/bolkstudio/BolkLab---Production#readme","keywords":["Webflow","Javascript","UX","GSAP","Performances"],"repository":{"type":"git","url":"git+https://github.com/bolkstudio/BolkLab---Production.git","build":"rollup -c"},"description":"This package contains several features for your webflow sites. Made and maintain by Bolk Studio.","maintainers":[{"name":"bolkstudio","email":"hello@bolk.studio"}],"readme":"# BolkLab\n\nJavaScript utility library for Webflow sites, built and maintained by **Bolk Studio**.  \nFeatures load on-demand via a data-attribute API and a lazy-loading system based on IntersectionObserver.\n\n---\n\n## Installation\n\n### 1. Script tag — in `<body>`, before any other script\n\nAdd BolkLab as the **first script in your `<body>`**. In Webflow: Site Settings → Custom Code → Footer code.\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/@bolkstudio/bolklab@latest/dist/index.umd.min.js\"></script>\n```\n\nIt needs to come before other scripts because it handles lazy-loading of third-party libraries declared in `BolkExternalScripts`.\n\nThe library initializes automatically — no further setup required.\n\n### 2. Config objects — in `<head>`, optional\n\nDeclare `BolkConfig` and `BolkExternalScripts` in `<head>` **before** the BolkLab script tag. Both are optional — omitting them applies the defaults.\n\n```html\n<head>\n  <script>\n    BolkConfig = {\n      lazy: true,       // enable lazy loading globally (default: true)\n      threshold: '50vh' // distance before viewport that triggers load (default: '50vh')\n    };\n    BolkExternalScripts = { /* see External Scripts section */ };\n  </script>\n</head>\n<body>\n  <!-- ... -->\n  <script src=\"https://cdn.jsdelivr.net/npm/@bolkstudio/bolklab@latest/dist/index.umd.min.js\"></script>\n</body>\n```\n\n| Option | Type | Default | Description |\n|---|---|---|---|\n| `lazy` | `boolean` | `true` | Enable/disable lazy loading for all elements |\n| `threshold` | `string` | `'50vh'` | Distance before the viewport that triggers a load. Accepts `px`, `%`, `vh`, `vw` |\n\n---\n\n## Data Attribute API\n\n### Format\n\n```html\n<!-- Animation features — value identifies the animation type -->\ndata-bolk-anim=\"{type}\"\ndata-bolk-anim-{option}=\"{value}\"\n\n<!-- UI features — each has its own namespace -->\ndata-bolk-slider\ndata-bolk-slider-{option}=\"{value}\"\n\ndata-bolk-accordion=\"group\"\ndata-bolk-accordion-{option}=\"{value}\"\n```\n\nEach element must have exactly **one** main trigger attribute.\n\n### Lazy loading\n\nLazy loading is enabled by default. Each feature loads when its element approaches the viewport (controlled by `threshold`).  \nDisable it per element:\n\n```html\n<div data-bolk-anim=\"fadein\" data-bolk-lazy=\"false\"></div>\n```\n\nOr disable globally via `BolkConfig = { lazy: false }`.\n\n---\n\n## Features\n\n### Animations (`anim`)\n\nAll animation features are powered by GSAP, loaded from CDN on demand.\n\n#### `fadein`\nFades an element in with a directional slide. Supports splitting by words, letters, or lines.\n\n```html\n<div data-bolk-anim=\"fadein\" data-bolk-anim-origin=\"bottom\" data-bolk-anim-duration=\"0.8\"></div>\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `origin` | `'bottom'` | Slide direction: `top`, `bottom`, `left`, `right` |\n| `duration` | `0.8` | Duration in seconds |\n| `delay` | `0` | Delay in seconds |\n| `distance` | `40` | Slide distance in px |\n| `ease` | `'power2.out'` | GSAP easing |\n| `mode` | `'element'` | Animate as: `element`, `words`, `letters`, `lines` |\n| `stagger` | `0.04` | Stagger between split items (words/letters/lines mode) |\n\n#### `stagger`\nAnimates the direct children of an element in sequence.\n\n```html\n<div data-bolk-anim=\"stagger\" data-bolk-anim-stagger=\"0.1\"></div>\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `origin` | `'bottom'` | Slide direction |\n| `duration` | `0.6` | Duration in seconds |\n| `delay` | `0` | Delay in seconds |\n| `stagger` | `0.1` | Delay between each child |\n| `distance` | `30` | Slide distance in px |\n| `ease` | `'power2.out'` | GSAP easing |\n\n#### `reveal`\nClip-path wipe reveal.\n\n```html\n<div data-bolk-anim=\"reveal\" data-bolk-anim-direction=\"up\"></div>\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `direction` | `'up'` | Wipe direction: `up`, `down`, `left`, `right` |\n| `duration` | `1` | Duration in seconds |\n| `delay` | `0` | Delay in seconds |\n| `ease` | `'power4.inOut'` | GSAP easing |\n\n#### `counter`\nAnimates a number from a start value to the element's text content.\n\n```html\n<span data-bolk-anim=\"counter\" data-bolk-anim-suffix=\"%\">87</span>\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `from` | `0` | Starting value |\n| `duration` | `2` | Duration in seconds |\n| `ease` | `'power2.out'` | GSAP easing |\n| `prefix` | `''` | String prepended to the number |\n| `suffix` | `''` | String appended to the number |\n| `decimals` | `0` | Number of decimal places |\n\n#### `marquee`\nInfinite horizontal ticker. Uses the Web Animations API — no GSAP dependency.\n\n```html\n<div data-bolk-anim=\"marquee\" data-bolk-anim-speed=\"1\">\n  <div>Your repeating content</div>\n</div>\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `speed` | `1` | Multiplier — higher is faster |\n| `direction` | `'left'` | `left` or `right` |\n| `gap` | `48` | Gap between repeated items in px |\n| `pauseOnHover` | `'true'` | Pause animation on mouseenter |\n\n#### `parallax`\nScroll-driven parallax using GSAP ScrollTrigger.\n\n```html\n<div data-bolk-anim=\"parallax\" data-bolk-anim-speed=\"0.5\"></div>\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `speed` | `0.5` | 0 = no movement, 1 = full scroll speed |\n| `direction` | `'vertical'` | `vertical` or `horizontal` |\n\n#### `magnetic`\nElement follows the cursor when the mouse is within range.\n\n```html\n<button data-bolk-anim=\"magnetic\" data-bolk-anim-range=\"150\"></button>\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `range` | `150` | Distance in px at which attraction starts |\n| `strength` | `0.4` | How far the element moves (0–1) |\n| `speed` | `0.3` | GSAP animation duration |\n\n#### `tilt`\n3D tilt on mousemove.\n\n```html\n<div data-bolk-anim=\"tilt\" data-bolk-anim-max=\"15\"></div>\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `max` | `15` | Max rotation in degrees |\n| `perspective` | `1000` | CSS perspective in px |\n| `scale` | `1.05` | Scale on hover |\n| `speed` | `0.4` | GSAP animation duration |\n\n---\n\n### UI (`ui`)\n\n#### `accordion`\n\nGSAP-powered accessible accordion. Supports single mode, initial open state, lock, horizontal direction, animated arrows, and autoplay with progress bar.\n\n```html\n<div data-bolk-accordion=\"group\">\n\n  <div data-bolk-accordion=\"accordion\">\n    <div data-bolk-accordion=\"trigger\">\n      Title\n      <svg data-bolk-accordion-arrow>...</svg> <!-- optional -->\n    </div>\n    <div data-bolk-accordion=\"content\">Content</div>\n  </div>\n\n  <div data-bolk-accordion=\"accordion\">\n    <div data-bolk-accordion=\"trigger\">Title 2</div>\n    <div data-bolk-accordion=\"content\">Content 2</div>\n  </div>\n\n</div>\n```\n\n**Mandatory structure**\n\n| Attribute | Value | Description |\n|---|---|---|\n| `data-bolk-accordion` | `\"group\"` | Outer wrapper — triggers the feature |\n| `data-bolk-accordion` | `\"accordion\"` | Each accordion item |\n| `data-bolk-accordion` | `\"trigger\"` | Clickable header |\n| `data-bolk-accordion` | `\"content\"` | Collapsible content panel |\n\n**Group options**\n\n| Attribute | Default | Description |\n|---|---|---|\n| `data-bolk-accordion-single` | `false` | Only one item open at a time |\n| `data-bolk-accordion-initial` | — | Index (from 1) of items open on load — e.g. `\"1\"` or `\"1,3\"` |\n| `data-bolk-accordion-lock` | `false` | Single mode: keep one item always open |\n| `data-bolk-accordion-direction` | `\"vertical\"` | Set to `\"horizontal\"` to animate width instead of height |\n| `data-bolk-accordion-duration` | `0.5` | GSAP animation duration in seconds |\n| `data-bolk-accordion-ease` | `\"power2.out\"` | GSAP easing |\n\n**Autoplay + progress bar**\n\n```html\n<div data-bolk-accordion=\"group\" data-bolk-accordion-single=\"true\" data-bolk-accordion-autoplay=\"true\">\n  <div data-bolk-accordion=\"accordion\">\n    <div data-bolk-accordion=\"trigger\">Title</div>\n    <div data-bolk-accordion=\"content\">Content</div>\n    <div data-bolk-accordion-progress></div> <!-- optional progress bar -->\n  </div>\n</div>\n```\n\n| Attribute | Default | Description |\n|---|---|---|\n| `data-bolk-accordion-autoplay` | — | Set to `\"true\"` to enable autoplay (desktop only) |\n| `data-bolk-accordion-autoplay-delay` | `5` | Duration per item in seconds |\n| `data-bolk-accordion-progress` | — | Add on the progress bar element |\n\n---\n\n#### `slider`\n\nFull Splide carousel manager. Triggered by `data-bolk-slider` — loads Splide assets on demand, handles breakpoints, and disables itself when there are too few slides.\n\nThe `data-bolk-slider` wrapper carries all config attributes. BolkLab injects Splide's required classes automatically from `data-bolk-slider-role` attributes — no manual class names needed.\n\n```html\n<div data-bolk-slider data-bolk-slider-per-page=\"3,2,1\">\n  <div data-bolk-slider-role=\"track\">\n    <ul data-bolk-slider-role=\"list\">\n      <li data-bolk-slider-role=\"slide\">Slide 1</li>\n      <li data-bolk-slider-role=\"slide\">Slide 2</li>\n    </ul>\n  </div>\n</div>\n```\n\n| Attribute | Default | Description |\n|---|---|---|\n| `data-bolk-slider-per-page` | `\"3,2,1\"` | Slides visible per breakpoint: desktop,tablet,mobile. Use `auto` for autoWidth |\n| `data-bolk-slider-gap` | `\"1rem\"` | Gap between slides |\n| `data-bolk-slider-transition` | `\"slide\"` | Transition type: `slide` or `fade` |\n| `data-bolk-slider-loop` | `true` | Infinite loop |\n| `data-bolk-slider-autoplay` | `true` | Auto-advance |\n| `data-bolk-slider-autoplay-speed` | `3000` | Autoplay interval in ms |\n| `data-bolk-slider-speed` | `500` | Transition duration in ms |\n| `data-bolk-slider-arrows` | `false` | Show arrow buttons |\n| `data-bolk-slider-pagination` | `false` | Show pagination dots |\n| `data-bolk-slider-drag` | `true` | Drag mode: `true`, `false`, or `free` |\n| `data-bolk-slider-autoscroll-speed` | — | Continuous scroll speed (loads AutoScroll extension) |\n| `data-bolk-slider-overflow` | `\"visible\"` | Track overflow: `visible`, `hidden`, `left`, `right` |\n| `data-bolk-slider-from-breakpoint` | — | Disable slider below this breakpoint (`desktop`/`tablet`/`mobile`) |\n| `data-bolk-slider-until-breakpoint` | — | Disable slider above this breakpoint |\n| `data-bolk-slider-force-active` | — | Force activation regardless of slide count |\n| `data-bolk-slider-force-slider` | — | Force slider mode even when slides ≤ perPage |\n| `data-bolk-slider-static-center` | `true` | Center slides when slider is inactive |\n\n---\n\n## External Scripts — Lazy Loading Third-party Libraries\n\nBolkLab can delay the injection of third-party scripts until their trigger element approaches the viewport.\n\n### Configuration\n\nSet `BolkExternalScripts` **before** the BolkLab script tag. This is optional — omit it if you have no third-party libraries to lazy-load.\n\n```html\n<head>\n  <script>\n    BolkExternalScripts = {\n      // Simple: just async or defer\n      'splide': [\n        'https://cdn.jsdelivr.net/npm/@splidejs/splide@4/dist/js/splide.min.js',\n        'data-splide',\n        'defer'\n      ],\n      // With extra HTML attributes on the <script> tag (space-separated)\n      'finsweet-toc': [\n        'https://cdn.jsdelivr.net/npm/@finsweet/attributes@2/attributes.js',\n        'fs-toc-element',\n        'async fs-toc'   // → <script async fs-toc>\n      ],\n    };\n  </script>\n</head>\n```\n\n| Column | Description |\n|---|---|\n| key | Human-readable name used in console logs |\n| `url` | Full CDN URL of the script |\n| `detectionAttr` | Attribute present on elements that require this lib — brackets optional |\n| `scriptAttr` | Space-separated tokens. `async` / `defer` sets the loading mode. `module` adds `type=\"module\"` (required for ES modules like Finsweet attributes v2). Any other token is added as a boolean HTML attribute on the `<script>` element |\n\n### How it works\n\n1. On `DOMContentLoaded`, BolkLab queries the page for each `detectionAttr`.\n2. If found, an `IntersectionObserver` watches that element.\n3. When it enters the threshold zone, the script is injected via `siteLoadOnce` — exactly once, regardless of how many elements share the attribute.\n4. If the attribute is not found anywhere on the page, the script is never loaded.\n\n### `siteLoadOnce`\n\nYou can also call the deduplication helper directly from your own scripts:\n\n```js\n// Loads a JS or CSS file exactly once — safe to call multiple times\nawait window.siteLoadOnce('https://cdn.../lib.js', { defer: true });\nawait window.siteLoadOnce('https://cdn.../lib.css');\n```\n\n---\n\n## Contributing — Adding a Feature\n\n### 1. Create the feature file\n\n```\nsrc/features/anim/myanim.js   →   data-bolk-anim=\"myanim\"\nsrc/features/ui/accordion.js  →   data-bolk-accordion=\"group\"\n```\n\n### 2. Follow the feature module contract\n\nEvery feature file must export:\n\n- **`defaults`** — plain object with all accepted options and their default values\n- **`default`** — async function `(el, options) => void`\n\n```js\nexport const defaults = {\n  duration: 0.5,\n  origin: 'bottom',\n};\n\nexport default async function myFeature(el, options) {\n  // options = defaults merged with element-level attributes (element wins)\n  // All values arrive as strings — parse them as needed\n  const duration = parseFloat(options.duration);\n}\n```\n\n### 3. Register it\n\nAdd one line to [src/core/registry.js](src/core/registry.js):\n\n```js\n'[data-bolk-anim=\"myanim\"]': '../features/anim/myanim.js',\n```\n\n### 4. Rebuild\n\n```bash\nnpm run build\n```\n\n---\n\n## Project Structure\n\n```\nsrc/\n├── index.js                  # Entry point — DOMContentLoaded → start()\n├── core/\n│   ├── registry.js           # Selector → file path map — edit to add a feature\n│   ├── config.js             # BolkConfig reader with defaults\n│   ├── init.js               # Element discovery & lazy-load wiring\n│   ├── loader.js             # Calls the import function, merges defaults\n│   └── observer.js           # IntersectionObserver factory\n├── features/\n│   ├── anim/                 # Animation features\n│   └── ui/                   # UI component features\n├── utils/\n│   └── load-once.js          # CDN resource loader + external scripts lazy loader\n└── externals/\n    └── gsap.js               # GSAP CDN loader via siteLoadOnce\n```\n\n---\n\n## Build\n\n```bash\nnpm run build\n```\n\nOutputs to `dist/`:\n- `index.umd.js` — unminified with sourcemap\n- `index.umd.min.js` — minified, ready for CDN\n","readmeFilename":"README.md"}