{"_id":"@boobstrap/vue","_rev":"3-66c8436fcec32bef81aee31b1e573a52","name":"@boobstrap/vue","dist-tags":{"latest":"0.7.0"},"versions":{"0.5.0":{"name":"@boobstrap/vue","version":"0.5.0","keywords":["vue","boobstrap","components","composables","accessibility"],"license":"MIT","_id":"@boobstrap/vue@0.5.0","maintainers":[{"name":"mikeroq","email":"me@mikeroq.xyz"}],"homepage":"https://boobstrap.org/docs#vue","bugs":{"url":"https://github.com/mikeroq/boobstrap-framework/issues"},"dist":{"shasum":"601d65ff5c8f867edf501f6e08c23c82d29de0dd","tarball":"https://registry.npmjs.org/@boobstrap/vue/-/vue-0.5.0.tgz","fileCount":16,"integrity":"sha512-jXWFJa8xCBk3+3+fT7x100/vAlwoIgsTyCB7ispfDfuWc0A+vaJy8Qjj2fENmtVToim2xn/P1ez+jhOWAWdpvA==","signatures":[{"sig":"MEYCIQCk8YMD01dP4f/UYT/lOg6xiL6qToBStHTc/iRDvfoN3wIhAOmfc55yFherWz5dmkJIjZqb03i9GoOx7TtscRPpHBAw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@boobstrap%2fvue@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":42294},"type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"}},"gitHead":"59e6a5326e717cf683c435563fe9554fa3a61d37","_npmUser":{"name":"mikeroq","email":"me@mikeroq.xyz"},"repository":{"url":"git+https://github.com/mikeroq/boobstrap-framework.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.9.8","description":"Official Vue behavior adapter for Boobstrap components.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"vue":">=3.5.0 <4.0.0","@boobstrap/boobstrap":"^0.5.0"},"peerDependenciesMeta":{"@boobstrap/boobstrap":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.5.0_1786661897605_0.7191839705222092","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@boobstrap/vue","version":"0.6.0","keywords":["vue","boobstrap","components","composables","accessibility"],"license":"MIT","_id":"@boobstrap/vue@0.6.0","maintainers":[{"name":"mikeroq","email":"me@mikeroq.xyz"}],"homepage":"https://boobstrap.org/docs#vue","bugs":{"url":"https://github.com/mikeroq/boobstrap-framework/issues"},"dist":{"shasum":"d6d7e3541eb21f5929bf78932b1a02beb04ca1cb","tarball":"https://registry.npmjs.org/@boobstrap/vue/-/vue-0.6.0.tgz","fileCount":23,"integrity":"sha512-xpZ8OTRt9va/piz+QYWa+cCoj1383K1m2W1btkpfU5DglxXeqwMV421vaMsWdqXSBaKYHDpegMFm6mS7HNXlvQ==","signatures":[{"sig":"MEYCIQC/1PozI1zldMccF+zwlsy8nPz85D9OZEbPQZywyAx34wIhAPNy48wNKVylnu/GEOI0jPZtwHXk9ugee/TylrxGSLCt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@boobstrap%2fvue@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73438},"type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"}},"gitHead":"94c2031c90a30e10a4ff4728c6ccf6680c38ba58","_npmUser":{"name":"mikeroq","email":"me@mikeroq.xyz"},"repository":{"url":"git+https://github.com/mikeroq/boobstrap-framework.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.9.8","description":"Official Vue behavior adapter for Boobstrap components.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"peerDependencies":{"vue":">=3.5.0 <4.0.0","@boobstrap/boobstrap":"^0.5.0"},"peerDependenciesMeta":{"@boobstrap/boobstrap":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.6.0_1787367426339_0.5948392894250247","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@boobstrap/vue","version":"0.7.0","description":"Official Vue behavior adapter for Boobstrap components.","type":"module","sideEffects":false,"types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"}},"peerDependencies":{"@boobstrap/boobstrap":"^0.7.0","vue":">=3.5.0 <4.0.0"},"peerDependenciesMeta":{"@boobstrap/boobstrap":{"optional":true}},"keywords":["vue","boobstrap","components","composables","accessibility"],"repository":{"type":"git","url":"git+https://github.com/mikeroq/boobstrap-framework.git","directory":"packages/vue"},"homepage":"https://boobstrap.org/docs#vue","bugs":{"url":"https://github.com/mikeroq/boobstrap-framework/issues"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"license":"MIT","_id":"@boobstrap/vue@0.7.0","gitHead":"a7f5523b1c6fa9b729295fdc27a1dad170f00406","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-K3oH+mNudtDI9teSdbxhnWifrzPNtKM0YonuW0j1ckJ1/2zSy1fyD2+pCn3OzqGIc+I2j1YPi0EMoGhBqa2TJQ==","shasum":"7caa1eb1124884a6106661b61aa956b2cddf3b08","tarball":"https://registry.npmjs.org/@boobstrap/vue/-/vue-0.7.0.tgz","fileCount":23,"unpackedSize":74318,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@boobstrap%2fvue@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDWrcXbykjt3Kd2revjFxyo9YqSyc7GGon9H2Y0U2Ot2gIhAPoQumww0WoNubACk4lvM/eDuqqoEX+0cvXmd6ZEVleI"}]},"_npmUser":{"name":"mikeroq","email":"me@mikeroq.xyz"},"directories":{},"maintainers":[{"name":"mikeroq","email":"me@mikeroq.xyz"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue_0.7.0_1787420993907_0.40950534433039754"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-13T22:58:17.327Z","modified":"2026-08-22T17:49:54.405Z","0.5.0":"2026-08-13T22:58:17.771Z","0.6.0":"2026-08-22T02:57:06.478Z","0.7.0":"2026-08-22T17:49:54.048Z"},"bugs":{"url":"https://github.com/mikeroq/boobstrap-framework/issues"},"license":"MIT","homepage":"https://boobstrap.org/docs#vue","keywords":["vue","boobstrap","components","composables","accessibility"],"repository":{"type":"git","url":"git+https://github.com/mikeroq/boobstrap-framework.git","directory":"packages/vue"},"description":"Official Vue behavior adapter for Boobstrap components.","maintainers":[{"name":"mikeroq","email":"me@mikeroq.xyz"}],"readme":"# @boobstrap/vue\n\nOfficial Vue 3 composables for Boobstrap interactions. The adapter owns state and accessibility attributes without initializing the vanilla Boobstrap controller layer.\n\n```bash\nnpm install @boobstrap/boobstrap @boobstrap/vue vue\n```\n\n```vue\n<script setup>\nimport \"@boobstrap/boobstrap\";\nimport { useCollapse } from \"@boobstrap/vue\";\n\nconst details = useCollapse({ id: \"details\" });\n</script>\n\n<template>\n  <button class=\"bs-btn\" v-bind=\"details.getTriggerProps()\">Details</button>\n  <div class=\"bs-collapse\" v-bind=\"details.getPanelProps()\">Progressive content</div>\n</template>\n```\n\nThe package exports `useAccordion`, `useBanner`, `useButton`, `useCollapse`, `useCombobox`, `useDialog`, `useDropdown`, `useInputMask`, `useNavbar`, `useOtp`, `usePassword`, `usePopover`, `useScrollspy`, `useSidebar`, `useTabs`, `useToast`, and `useTooltip`. State options accept either plain controlled values or Vue refs for `v-model`-style ownership. Lifecycle events use the same cancelable `bs:*` contract as Boobstrap JS, Alpine, and React.\n\n## Supported composables\n\n| composable       | core export |\n|------------------|-------------|\n| `useAccordion`   | `Accordion` |\n| `useBanner`      | `Banner`    |\n| `useButton`      | `Button`    |\n| `useCollapse`    | `Collapse`  |\n| `useCombobox`    | `Combobox`  |\n| `useDialog`      | `Dialog`    |\n| `useDropdown`    | `Dropdown`  |\n| `useInputMask`   | `InputMask` |\n| `useNavbar`      | `Navbar`    |\n| `useOtp`         | `Otp`       |\n| `usePassword`    | `Password`  |\n| `usePopover`     | `Popover`   |\n| `useScrollspy`   | `Scrollspy` |\n| `useSidebar`     | `Sidebar`   |\n| `useTabs`        | `Tabs`      |\n| `useToast`       | `Toast`     |\n| `useTooltip`     | `Tooltip`   |\n\n## Banner, sidebar, and form helpers\n\n```vue\n<script setup>\nimport { useBanner, useSidebar, useInputMask, useOtp, usePassword } from \"@boobstrap/vue\";\n\nconst banner = useBanner();\nconst sidebar = useSidebar({ id: \"app-sidebar\" });\nconst mask = useInputMask(\"(999) 999-9999\");\nconst otp = useOtp();\nconst password = usePassword();\n</script>\n\n<template>\n  <div class=\"bs-banner\" v-bind=\"banner.getBannerProps()\">\n    <button v-bind=\"banner.getDismissProps()\">Dismiss</button>\n  </div>\n  <aside v-bind=\"sidebar.getRootProps()\">...</aside>\n  <input v-bind=\"mask.getInputProps()\" />\n  <div v-bind=\"otp.getRootProps()\">\n    <input v-bind=\"otp.getInputProps(0)\" class=\"bs-otp-input\" />\n    <input v-bind=\"otp.getInputProps(1)\" class=\"bs-otp-input\" />\n  </div>\n  <div v-bind=\"password.getRootProps()\">\n    <input v-bind=\"password.getInputProps()\" type=\"password\" />\n    <button v-bind=\"password.getToggleProps()\">Toggle</button>\n  </div>\n</template>\n```\n\nThe composables share event names with Boobstrap JS and the other adapters, so application code can listen once per layer.\n","readmeFilename":"README.md"}