{"_id":"abaabil","_rev":"116-d128698e82089b7bc3babbb2b3c0b334","name":"abaabil","dist-tags":{"latest":"1.6.2"},"versions":{"1.0.0":{"name":"abaabil","version":"1.0.0","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.0.0","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"5823e74a81bc6be902c61096679e45898e089c96","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.0.0.tgz","fileCount":37,"integrity":"sha512-DK1vojVy6gqb5HMO1XkE3gUn3YZygDcJQe8+GTBDoineQ3pMH1K4of51b18aw4zfTDoBkO7aBcIXNLanN51v2A==","signatures":[{"sig":"MEUCIQDi+BNT8YEXYfd7GE9slOyTIAWsump0L/1/gWNh2X+D1AIgbS1xTTWVXYmH7MXWTeLnzb3osIysmPEaOfNi6VCuWT4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67890},"type":"module","exports":{"./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./select":"./dist/select/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./accordion":"./dist/accordion/index.js","./input.css":"./dist/input/input.css","./radio.css":"./dist/radio/radio.css","./theme.css":"./dist/theme.css","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./input/a11y":"./dist/input/a11y.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./styles.css":"./dist/styles.css","./button/a11y":"./dist/button/a11y.js","./dialog/a11y":"./dist/dialog/a11y.js","./select/a11y":"./dist/select/a11y.js","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./input/styled":"./dist/input/styled.js","./radio/styled":"./dist/radio/styled.js","./accordion.css":"./dist/accordion/accordion.css","./button/styled":"./dist/button/styled.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./select/styled":"./dist/select/styled.js","./accordion/a11y":"./dist/accordion/a11y.js","./checkbox/styled":"./dist/checkbox/styled.js","./combobox/styled":"./dist/combobox/styled.js","./accordion/styled":"./dist/accordion/styled.js"},"gitHead":"25eccee2ac510ac3414602dd04526924e654a7ca","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.0.0_1789942015890_0.3293761609843","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"abaabil","version":"1.1.0","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.1.0","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"4dd2ff3ebb07305aed1948b96c5e0949ae6d859d","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.1.0.tgz","fileCount":38,"integrity":"sha512-lL2om1QHmdMj89MuYjsb2wrcKvMI42AHKetJyl6Q4cnMd5TGegVZdZzBJ4nxxhZxlvocMxoGr88zL6PksoRozQ==","signatures":[{"sig":"MEUCIQD0OWBWKpAq4oeqRdmtORYXeeMsUM1JKCliHW20i2xONAIgCi5n6j4N+3NjVfFoRB99vw3phZmeTgMwHBgTQn+HryU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69743},"type":"module","exports":{"./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./select":"./dist/select/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./accordion":"./dist/accordion/index.js","./input.css":"./dist/input/input.css","./radio.css":"./dist/radio/radio.css","./theme.css":"./dist/theme.css","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./input/a11y":"./dist/input/a11y.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./styles.css":"./dist/styles.css","./button/a11y":"./dist/button/a11y.js","./dialog/a11y":"./dist/dialog/a11y.js","./select/a11y":"./dist/select/a11y.js","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./input/styled":"./dist/input/styled.js","./package.json":"./package.json","./radio/styled":"./dist/radio/styled.js","./accordion.css":"./dist/accordion/accordion.css","./button/styled":"./dist/button/styled.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./select/styled":"./dist/select/styled.js","./accordion/a11y":"./dist/accordion/a11y.js","./checkbox/styled":"./dist/checkbox/styled.js","./combobox/styled":"./dist/combobox/styled.js","./accordion/styled":"./dist/accordion/styled.js"},"gitHead":"7d842477f11892e47e4dbddd6164cae0f64a5fcb","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.1.0_1789942538992_0.6611736344577284","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"abaabil","version":"1.2.0","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.2.0","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"3a950f9da8600bb638bda9efe1a32e293873de88","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.2.0.tgz","fileCount":58,"integrity":"sha512-b5tqkIpyBt0/LawNuZcBu8CcBqVT3Z/TDfwblx4DCiPPxQGzzadUFzssxFntsV/r8m/LdVMEAv21IdV6sSXMKw==","signatures":[{"sig":"MEYCIQC+4YGyhhuh0noGmQEsGX8IIMwtEAFxT+DbFKBxb9+p0wIhAKIEMAKweRpHD7hPLOuyDzJRqeDcHx8yR7JX9MKNptVl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDGzfVogZFulK8TEtZDhaepWlQRTaXaPZcwNDsReMWbbgIgKvr/pxyJ5+Xg+uQC5mZMZgVlpBJmDkJ8dAUCg7MNam4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105555},"type":"module","exports":{"./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./select":"./dist/select/index.js","./switch":"./dist/switch/index.js","./popover":"./dist/popover/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./input.css":"./dist/input/input.css","./radio.css":"./dist/radio/radio.css","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./alert/a11y":"./dist/alert/a11y.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./input/a11y":"./dist/input/a11y.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./button/a11y":"./dist/button/a11y.js","./dialog/a11y":"./dist/dialog/a11y.js","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./alert/styled":"./dist/alert/styled.js","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./input/styled":"./dist/input/styled.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./radio/styled":"./dist/radio/styled.js","./textarea.css":"./dist/textarea/textarea.css","./accordion.css":"./dist/accordion/accordion.css","./button/styled":"./dist/button/styled.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./select/styled":"./dist/select/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./accordion/a11y":"./dist/accordion/a11y.js","./popover/styled":"./dist/popover/styled.js","./checkbox/styled":"./dist/checkbox/styled.js","./combobox/styled":"./dist/combobox/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js"},"gitHead":"3c696b0991e094deaefcc010473e91e719f6e091","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.2.0_1789970321413_0.2559299321159554","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"abaabil","version":"1.3.0","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.3.0","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"7b70dd013a258ac21335c38e226381da6e5837db","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.3.0.tgz","fileCount":79,"integrity":"sha512-k+Vkd6JqxkM6KZ4dCroPEsLSBJAv2HUXBae1Gz9P94S0ZB3MgOOxv8r4Gq92oLmqisV6X8U+5FuQTKiVpmPOqA==","signatures":[{"sig":"MEQCIBPJH+8+eEwDK/6oaEZ43DIrHigvN91GVarKmJ0P50EbAiAw1ioEv/VxePBRQGlhVkKYFAKPPh3KUhfpIGromVAqDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHhqfj3/LVnhY1Cs+uLgjj/fz0dRc/WRQGqe5k3Jfk6dAiEA1l6BP8m2kDNQtCKp5vovJeUGYt03H7GEW0ph1Ff6M3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148475},"type":"module","exports":{"./menu":"./dist/menu/index.js","./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./select":"./dist/select/index.js","./slider":"./dist/slider/index.js","./switch":"./dist/switch/index.js","./popover":"./dist/popover/index.js","./tooltip":"./dist/tooltip/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./menu.css":"./dist/menu/menu.css","./progress":"./dist/progress/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./input.css":"./dist/input/input.css","./menu/a11y":"./dist/menu/a11y.js","./radio.css":"./dist/radio/radio.css","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./alert/a11y":"./dist/alert/a11y.js","./breadcrumb":"./dist/breadcrumb/index.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./input/a11y":"./dist/input/a11y.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./slider.css":"./dist/slider/slider.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./button/a11y":"./dist/button/a11y.js","./dialog/a11y":"./dist/dialog/a11y.js","./menu/styled":"./dist/menu/styled.js","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./slider/a11y":"./dist/slider/a11y.js","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./tooltip.css":"./dist/tooltip/tooltip.css","./alert/styled":"./dist/alert/styled.js","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./input/styled":"./dist/input/styled.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./progress.css":"./dist/progress/progress.css","./radio/styled":"./dist/radio/styled.js","./textarea.css":"./dist/textarea/textarea.css","./tooltip/a11y":"./dist/tooltip/a11y.js","./accordion.css":"./dist/accordion/accordion.css","./button/styled":"./dist/button/styled.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./progress/a11y":"./dist/progress/a11y.js","./select/styled":"./dist/select/styled.js","./slider/styled":"./dist/slider/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./accordion/a11y":"./dist/accordion/a11y.js","./breadcrumb.css":"./dist/breadcrumb/breadcrumb.css","./popover/styled":"./dist/popover/styled.js","./tooltip/styled":"./dist/tooltip/styled.js","./breadcrumb/a11y":"./dist/breadcrumb/a11y.js","./checkbox/styled":"./dist/checkbox/styled.js","./combobox/styled":"./dist/combobox/styled.js","./progress/styled":"./dist/progress/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js","./breadcrumb/styled":"./dist/breadcrumb/styled.js"},"gitHead":"09837f9e9582ce93ff0082b8e17be0f88c59c055","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/check-complete.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.3.0_1789973117772_0.18419508449917443","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"abaabil","version":"1.4.0","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.4.0","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"f9d97d5d5a60c6b597dcef62ff72876cbd427acd","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.4.0.tgz","fileCount":99,"integrity":"sha512-tx/JDMe7rzC813n6Edqnkt+SaGIycFd3HHJgzdvklJGrvuSoJYAR/Nk4mtcL1J3pKmNCSS/xvf3zI64Z6tl7xw==","signatures":[{"sig":"MEUCIQC89VbcEE7wmp6ilGMz88eH6GBTF+/mzufRKlxCyVKcAAIgKfdetXsyq37xyIz688qVUQgr1lN8tMrqxlfBVbLMPAc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCm/+8zRPUTuK6iSTjYt/JkrP5iJ+uP+MhKl7e8XghwNAIhAOSTPVEwSZ1qjH+gf7Zffl6MeCI+y0bmGuz0zpZS1t6o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181828},"type":"module","exports":{"./file":"./dist/file/index.js","./menu":"./dist/menu/index.js","./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./badge":"./dist/badge/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./avatar":"./dist/avatar/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./select":"./dist/select/index.js","./slider":"./dist/slider/index.js","./switch":"./dist/switch/index.js","./popover":"./dist/popover/index.js","./toolbar":"./dist/toolbar/index.js","./tooltip":"./dist/tooltip/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./file.css":"./dist/file/file.css","./menu.css":"./dist/menu/menu.css","./progress":"./dist/progress/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./badge.css":"./dist/badge/badge.css","./file/a11y":"./dist/file/a11y.js","./input.css":"./dist/input/input.css","./menu/a11y":"./dist/menu/a11y.js","./radio.css":"./dist/radio/radio.css","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./alert/a11y":"./dist/alert/a11y.js","./avatar.css":"./dist/avatar/avatar.css","./badge/a11y":"./dist/badge/a11y.js","./breadcrumb":"./dist/breadcrumb/index.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./input/a11y":"./dist/input/a11y.js","./pagination":"./dist/pagination/index.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./slider.css":"./dist/slider/slider.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./avatar/a11y":"./dist/avatar/a11y.js","./button/a11y":"./dist/button/a11y.js","./dialog/a11y":"./dist/dialog/a11y.js","./file/styled":"./dist/file/styled.js","./menu/styled":"./dist/menu/styled.js","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./slider/a11y":"./dist/slider/a11y.js","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./toolbar.css":"./dist/toolbar/toolbar.css","./tooltip.css":"./dist/tooltip/tooltip.css","./alert/styled":"./dist/alert/styled.js","./badge/styled":"./dist/badge/styled.js","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./input/styled":"./dist/input/styled.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./progress.css":"./dist/progress/progress.css","./radio/styled":"./dist/radio/styled.js","./textarea.css":"./dist/textarea/textarea.css","./toolbar/a11y":"./dist/toolbar/a11y.js","./tooltip/a11y":"./dist/tooltip/a11y.js","./accordion.css":"./dist/accordion/accordion.css","./avatar/styled":"./dist/avatar/styled.js","./button/styled":"./dist/button/styled.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./progress/a11y":"./dist/progress/a11y.js","./select/styled":"./dist/select/styled.js","./slider/styled":"./dist/slider/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./accordion/a11y":"./dist/accordion/a11y.js","./breadcrumb.css":"./dist/breadcrumb/breadcrumb.css","./pagination.css":"./dist/pagination/pagination.css","./popover/styled":"./dist/popover/styled.js","./toolbar/styled":"./dist/toolbar/styled.js","./tooltip/styled":"./dist/tooltip/styled.js","./breadcrumb/a11y":"./dist/breadcrumb/a11y.js","./checkbox/styled":"./dist/checkbox/styled.js","./combobox/styled":"./dist/combobox/styled.js","./pagination/a11y":"./dist/pagination/a11y.js","./progress/styled":"./dist/progress/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js","./breadcrumb/styled":"./dist/breadcrumb/styled.js","./pagination/styled":"./dist/pagination/styled.js"},"gitHead":"6e76e37b2800933fe2d5ecdd159396a28bdb333c","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/check-complete.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.4.0_1789977280047_0.1441465552383452","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"abaabil","version":"1.4.1","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.4.1","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"3c111ccc4efb95329e16188531066c2830c901d8","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.4.1.tgz","fileCount":99,"integrity":"sha512-5zLwVHVtXKhDn+SBsLa/f+xynJPSOjtdDGCujQ0xj611ECUpYIEf5WJY5VCYQai59Yi9h3v+yDtrNlWDlofnaA==","signatures":[{"sig":"MEYCIQDUTnEEa1SQuqTAX/jnQlMHBo9qwdyFDw2diK4PihbqYAIhAOvzs9SurA8Hvw4ODjBlWi5BU+rq5HZZybahgf7DxiuY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFNBZ4MXg7WqEp48NzqxP+NU/fo3D5dCPvv9ozml/nG1AiEAj0r8nSE3JPhlOwocss0sv2dxlrkgmain9GF77BWWZGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192857},"type":"module","exports":{"./file":"./dist/file/index.js","./menu":"./dist/menu/index.js","./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./badge":"./dist/badge/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./avatar":"./dist/avatar/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./select":"./dist/select/index.js","./slider":"./dist/slider/index.js","./switch":"./dist/switch/index.js","./popover":"./dist/popover/index.js","./toolbar":"./dist/toolbar/index.js","./tooltip":"./dist/tooltip/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./file.css":"./dist/file/file.css","./menu.css":"./dist/menu/menu.css","./progress":"./dist/progress/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./badge.css":"./dist/badge/badge.css","./file/a11y":"./dist/file/a11y.js","./input.css":"./dist/input/input.css","./menu/a11y":"./dist/menu/a11y.js","./radio.css":"./dist/radio/radio.css","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./alert/a11y":"./dist/alert/a11y.js","./avatar.css":"./dist/avatar/avatar.css","./badge/a11y":"./dist/badge/a11y.js","./breadcrumb":"./dist/breadcrumb/index.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./input/a11y":"./dist/input/a11y.js","./pagination":"./dist/pagination/index.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./slider.css":"./dist/slider/slider.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./avatar/a11y":"./dist/avatar/a11y.js","./button/a11y":"./dist/button/a11y.js","./dialog/a11y":"./dist/dialog/a11y.js","./file/styled":"./dist/file/styled.js","./menu/styled":"./dist/menu/styled.js","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./slider/a11y":"./dist/slider/a11y.js","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./toolbar.css":"./dist/toolbar/toolbar.css","./tooltip.css":"./dist/tooltip/tooltip.css","./alert/styled":"./dist/alert/styled.js","./badge/styled":"./dist/badge/styled.js","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./input/styled":"./dist/input/styled.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./progress.css":"./dist/progress/progress.css","./radio/styled":"./dist/radio/styled.js","./textarea.css":"./dist/textarea/textarea.css","./toolbar/a11y":"./dist/toolbar/a11y.js","./tooltip/a11y":"./dist/tooltip/a11y.js","./accordion.css":"./dist/accordion/accordion.css","./avatar/styled":"./dist/avatar/styled.js","./button/styled":"./dist/button/styled.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./progress/a11y":"./dist/progress/a11y.js","./select/styled":"./dist/select/styled.js","./slider/styled":"./dist/slider/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./accordion/a11y":"./dist/accordion/a11y.js","./breadcrumb.css":"./dist/breadcrumb/breadcrumb.css","./pagination.css":"./dist/pagination/pagination.css","./popover/styled":"./dist/popover/styled.js","./toolbar/styled":"./dist/toolbar/styled.js","./tooltip/styled":"./dist/tooltip/styled.js","./breadcrumb/a11y":"./dist/breadcrumb/a11y.js","./checkbox/styled":"./dist/checkbox/styled.js","./combobox/styled":"./dist/combobox/styled.js","./pagination/a11y":"./dist/pagination/a11y.js","./progress/styled":"./dist/progress/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js","./breadcrumb/styled":"./dist/breadcrumb/styled.js","./pagination/styled":"./dist/pagination/styled.js"},"gitHead":"3f8efce88119c0ab24106e9a156267af73639ee1","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/check-complete.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.4.1_1789978417451_0.2555594388013318","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"abaabil","version":"1.4.2","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.4.2","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"deb6b983eb331a7350230c8317f28c01c7d18edc","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.4.2.tgz","fileCount":99,"integrity":"sha512-xww3nKM7sNeERPFHDiP73WIRIwSvq8qxn4IMptiBHIL3OK652WX6UgN2ji8WCvH9ETw5ojRWyWC1OKL7P44KIA==","signatures":[{"sig":"MEUCIHnsCcbS1vAOzRPAivyMRLwLauJw2ajLV8eb2EercGiVAiEA4zRNHbBSaa7oRyzqWvkjXplG4MhnQyADcjUr5dHdGk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAlOxdha0VYe3Kvt8btlM45BYW9mj0OZBQVZ+FCR8PfeAiBWdjsbbPcZroNRqOziq0wr591DCR4NI4otZ1UkNgIbSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194475},"type":"module","exports":{"./file":"./dist/file/index.js","./menu":"./dist/menu/index.js","./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./badge":"./dist/badge/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./avatar":"./dist/avatar/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./select":"./dist/select/index.js","./slider":"./dist/slider/index.js","./switch":"./dist/switch/index.js","./popover":"./dist/popover/index.js","./toolbar":"./dist/toolbar/index.js","./tooltip":"./dist/tooltip/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./file.css":"./dist/file/file.css","./menu.css":"./dist/menu/menu.css","./progress":"./dist/progress/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./badge.css":"./dist/badge/badge.css","./file/a11y":"./dist/file/a11y.js","./input.css":"./dist/input/input.css","./menu/a11y":"./dist/menu/a11y.js","./radio.css":"./dist/radio/radio.css","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./alert/a11y":"./dist/alert/a11y.js","./avatar.css":"./dist/avatar/avatar.css","./badge/a11y":"./dist/badge/a11y.js","./breadcrumb":"./dist/breadcrumb/index.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./input/a11y":"./dist/input/a11y.js","./pagination":"./dist/pagination/index.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./slider.css":"./dist/slider/slider.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./avatar/a11y":"./dist/avatar/a11y.js","./button/a11y":"./dist/button/a11y.js","./dialog/a11y":"./dist/dialog/a11y.js","./file/styled":"./dist/file/styled.js","./menu/styled":"./dist/menu/styled.js","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./slider/a11y":"./dist/slider/a11y.js","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./toolbar.css":"./dist/toolbar/toolbar.css","./tooltip.css":"./dist/tooltip/tooltip.css","./alert/styled":"./dist/alert/styled.js","./badge/styled":"./dist/badge/styled.js","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./input/styled":"./dist/input/styled.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./progress.css":"./dist/progress/progress.css","./radio/styled":"./dist/radio/styled.js","./textarea.css":"./dist/textarea/textarea.css","./toolbar/a11y":"./dist/toolbar/a11y.js","./tooltip/a11y":"./dist/tooltip/a11y.js","./accordion.css":"./dist/accordion/accordion.css","./avatar/styled":"./dist/avatar/styled.js","./button/styled":"./dist/button/styled.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./progress/a11y":"./dist/progress/a11y.js","./select/styled":"./dist/select/styled.js","./slider/styled":"./dist/slider/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./accordion/a11y":"./dist/accordion/a11y.js","./breadcrumb.css":"./dist/breadcrumb/breadcrumb.css","./pagination.css":"./dist/pagination/pagination.css","./popover/styled":"./dist/popover/styled.js","./toolbar/styled":"./dist/toolbar/styled.js","./tooltip/styled":"./dist/tooltip/styled.js","./breadcrumb/a11y":"./dist/breadcrumb/a11y.js","./checkbox/styled":"./dist/checkbox/styled.js","./combobox/styled":"./dist/combobox/styled.js","./pagination/a11y":"./dist/pagination/a11y.js","./progress/styled":"./dist/progress/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js","./breadcrumb/styled":"./dist/breadcrumb/styled.js","./pagination/styled":"./dist/pagination/styled.js"},"gitHead":"3bbef786e1982b673ec889800e2c40e5624796d7","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/check-complete.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.4.2_1789979730444_0.5760620167301531","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"abaabil","version":"1.4.3","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.4.3","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"7fd5a587f4e6f9fa5b86f8e897b41fc5190c3a1d","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.4.3.tgz","fileCount":99,"integrity":"sha512-DV9Vdxcx3nbZAeloeQA5rqxeDInbcuNozu430aw+smw5eXEeaun+32HqXDyWYckoK61TlAqC64+2YKpqy4n+Cg==","signatures":[{"sig":"MEQCIGY+J4urYL/w0ZkcKs6ewHNfvXE+rtnYQYj9xlsq3OxQAiBHWvh/NtZNh0JFFRpPcB2bkP72dxhv3v4PrsfiBljsng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH/zU9LJRpsYw1329Tps9orW6KBvuHf7i5fSnkskFZIWAiAaSHvPUwYAUYLXnQ//szBJwqeljw++kwVqWlSJc1MJSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195809},"type":"module","exports":{"./file":"./dist/file/index.js","./menu":"./dist/menu/index.js","./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./badge":"./dist/badge/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./avatar":"./dist/avatar/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./select":"./dist/select/index.js","./slider":"./dist/slider/index.js","./switch":"./dist/switch/index.js","./popover":"./dist/popover/index.js","./toolbar":"./dist/toolbar/index.js","./tooltip":"./dist/tooltip/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./file.css":"./dist/file/file.css","./menu.css":"./dist/menu/menu.css","./progress":"./dist/progress/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./badge.css":"./dist/badge/badge.css","./file/a11y":"./dist/file/a11y.js","./input.css":"./dist/input/input.css","./menu/a11y":"./dist/menu/a11y.js","./radio.css":"./dist/radio/radio.css","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./alert/a11y":"./dist/alert/a11y.js","./avatar.css":"./dist/avatar/avatar.css","./badge/a11y":"./dist/badge/a11y.js","./breadcrumb":"./dist/breadcrumb/index.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./input/a11y":"./dist/input/a11y.js","./pagination":"./dist/pagination/index.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./slider.css":"./dist/slider/slider.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./avatar/a11y":"./dist/avatar/a11y.js","./button/a11y":"./dist/button/a11y.js","./dialog/a11y":"./dist/dialog/a11y.js","./file/styled":"./dist/file/styled.js","./menu/styled":"./dist/menu/styled.js","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./slider/a11y":"./dist/slider/a11y.js","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./toolbar.css":"./dist/toolbar/toolbar.css","./tooltip.css":"./dist/tooltip/tooltip.css","./alert/styled":"./dist/alert/styled.js","./badge/styled":"./dist/badge/styled.js","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./input/styled":"./dist/input/styled.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./progress.css":"./dist/progress/progress.css","./radio/styled":"./dist/radio/styled.js","./textarea.css":"./dist/textarea/textarea.css","./toolbar/a11y":"./dist/toolbar/a11y.js","./tooltip/a11y":"./dist/tooltip/a11y.js","./accordion.css":"./dist/accordion/accordion.css","./avatar/styled":"./dist/avatar/styled.js","./button/styled":"./dist/button/styled.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./progress/a11y":"./dist/progress/a11y.js","./select/styled":"./dist/select/styled.js","./slider/styled":"./dist/slider/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./accordion/a11y":"./dist/accordion/a11y.js","./breadcrumb.css":"./dist/breadcrumb/breadcrumb.css","./pagination.css":"./dist/pagination/pagination.css","./popover/styled":"./dist/popover/styled.js","./toolbar/styled":"./dist/toolbar/styled.js","./tooltip/styled":"./dist/tooltip/styled.js","./breadcrumb/a11y":"./dist/breadcrumb/a11y.js","./checkbox/styled":"./dist/checkbox/styled.js","./combobox/styled":"./dist/combobox/styled.js","./pagination/a11y":"./dist/pagination/a11y.js","./progress/styled":"./dist/progress/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js","./breadcrumb/styled":"./dist/breadcrumb/styled.js","./pagination/styled":"./dist/pagination/styled.js"},"gitHead":"8b7e5869c76635bd83c670b5d7ee772b4c6f3103","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/check-complete.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.4.3_1790014782250_0.8827323564361993","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"abaabil","version":"1.5.0","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.5.0","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"45d59a808671777598eafc0d2f04b93de468195f","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.5.0.tgz","fileCount":135,"integrity":"sha512-Z0h1AhAeLi4rJBbpRqCk8MX/8xG0WtlD4YnNMjosbLvBiEDQxHb0Ah4Ne+ag8rFHvsnHRWDXqAzjCuUZKtVSxg==","signatures":[{"sig":"MEUCIQCOikUpW0NQjK2AV0+wEsgLZIUT0Siypvx/pb2vAOfFGwIgCWvtvMch36RCAzqBBlaVFS3NO4ch6oKSMM+OVT4SCFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBz5tbDkiEX+OQXXB8ZJBdQimatir1kLo7V9gLa9N1uKAiAuIUEYMm8uPAZD2I91itnt3l8+mnLq/+x4RY8cLFLTlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":249376},"type":"module","exports":{"./card":"./dist/card/index.js","./file":"./dist/file/index.js","./menu":"./dist/menu/index.js","./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./badge":"./dist/badge/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./toast":"./dist/toast/index.js","./avatar":"./dist/avatar/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./drawer":"./dist/drawer/index.js","./select":"./dist/select/index.js","./slider":"./dist/slider/index.js","./switch":"./dist/switch/index.js","./toggle":"./dist/toggle/index.js","./popover":"./dist/popover/index.js","./spinner":"./dist/spinner/index.js","./toolbar":"./dist/toolbar/index.js","./tooltip":"./dist/tooltip/index.js","./card.css":"./dist/card/card.css","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./file.css":"./dist/file/file.css","./menu.css":"./dist/menu/menu.css","./progress":"./dist/progress/index.js","./skeleton":"./dist/skeleton/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./badge.css":"./dist/badge/badge.css","./card/a11y":"./dist/card/a11y.js","./file/a11y":"./dist/file/a11y.js","./input.css":"./dist/input/input.css","./menu/a11y":"./dist/menu/a11y.js","./radio.css":"./dist/radio/radio.css","./separator":"./dist/separator/index.js","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./toast.css":"./dist/toast/toast.css","./alert/a11y":"./dist/alert/a11y.js","./avatar.css":"./dist/avatar/avatar.css","./badge/a11y":"./dist/badge/a11y.js","./breadcrumb":"./dist/breadcrumb/index.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./drawer.css":"./dist/drawer/drawer.css","./input/a11y":"./dist/input/a11y.js","./pagination":"./dist/pagination/index.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./slider.css":"./dist/slider/slider.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./toast/a11y":"./dist/toast/a11y.js","./toggle.css":"./dist/toggle/toggle.css","./avatar/a11y":"./dist/avatar/a11y.js","./button/a11y":"./dist/button/a11y.js","./card/styled":"./dist/card/styled.js","./collapsible":"./dist/collapsible/index.js","./dialog/a11y":"./dist/dialog/a11y.js","./drawer/a11y":"./dist/drawer/a11y.js","./file/styled":"./dist/file/styled.js","./menu/styled":"./dist/menu/styled.js","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./slider/a11y":"./dist/slider/a11y.js","./spinner.css":"./dist/spinner/spinner.css","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./toggle/a11y":"./dist/toggle/a11y.js","./toolbar.css":"./dist/toolbar/toolbar.css","./tooltip.css":"./dist/tooltip/tooltip.css","./alert-dialog":"./dist/alert-dialog/index.js","./alert/styled":"./dist/alert/styled.js","./badge/styled":"./dist/badge/styled.js","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./input/styled":"./dist/input/styled.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./progress.css":"./dist/progress/progress.css","./radio/styled":"./dist/radio/styled.js","./skeleton.css":"./dist/skeleton/skeleton.css","./spinner/a11y":"./dist/spinner/a11y.js","./textarea.css":"./dist/textarea/textarea.css","./toast/styled":"./dist/toast/styled.js","./toolbar/a11y":"./dist/toolbar/a11y.js","./tooltip/a11y":"./dist/tooltip/a11y.js","./accordion.css":"./dist/accordion/accordion.css","./avatar/styled":"./dist/avatar/styled.js","./button/styled":"./dist/button/styled.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./drawer/styled":"./dist/drawer/styled.js","./progress/a11y":"./dist/progress/a11y.js","./select/styled":"./dist/select/styled.js","./separator.css":"./dist/separator/separator.css","./skeleton/a11y":"./dist/skeleton/a11y.js","./slider/styled":"./dist/slider/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./toggle/styled":"./dist/toggle/styled.js","./accordion/a11y":"./dist/accordion/a11y.js","./breadcrumb.css":"./dist/breadcrumb/breadcrumb.css","./pagination.css":"./dist/pagination/pagination.css","./popover/styled":"./dist/popover/styled.js","./separator/a11y":"./dist/separator/a11y.js","./spinner/styled":"./dist/spinner/styled.js","./toolbar/styled":"./dist/toolbar/styled.js","./tooltip/styled":"./dist/tooltip/styled.js","./breadcrumb/a11y":"./dist/breadcrumb/a11y.js","./checkbox/styled":"./dist/checkbox/styled.js","./collapsible.css":"./dist/collapsible/collapsible.css","./combobox/styled":"./dist/combobox/styled.js","./pagination/a11y":"./dist/pagination/a11y.js","./progress/styled":"./dist/progress/styled.js","./skeleton/styled":"./dist/skeleton/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js","./alert-dialog.css":"./dist/alert-dialog/alert-dialog.css","./collapsible/a11y":"./dist/collapsible/a11y.js","./separator/styled":"./dist/separator/styled.js","./alert-dialog/a11y":"./dist/alert-dialog/a11y.js","./breadcrumb/styled":"./dist/breadcrumb/styled.js","./pagination/styled":"./dist/pagination/styled.js","./collapsible/styled":"./dist/collapsible/styled.js","./alert-dialog/styled":"./dist/alert-dialog/styled.js"},"gitHead":"f6502bf0cc96ddd9a62827c48d1d81292a90cdc8","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/check-complete.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.5.0_1790024782242_0.4781355478766771","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"abaabil","version":"1.5.1","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.5.1","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"ba3a5e6fc1ee7a6c0f9958607873e12ae9f4ce87","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.5.1.tgz","fileCount":135,"integrity":"sha512-OC7pWWus3vTEKq7i+tF0R8340I3QvSGIotEkRdQsOSw+nwBOmZumApCykPjqv9p9/DApQy+Lv5KLoYAjIcsg8Q==","signatures":[{"sig":"MEYCIQCFb8cIHLDHkdabpi0og9IW0kAr5vo7sj2GscSEZ8uJDwIhAN2Idjbnt7B+i8NiB8lTD7DJ1Xo7aDv7HFT2YmZQEQ44","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD5RV5QhR3Gyo95P8w6CrTkFJsLho3J+h23jPloSQiy7QIhAIO9V6iZ7rwFPZ2wpkmrybBpU5JveyQeQegwlsTvSA+A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":251520},"type":"module","exports":{"./card":"./dist/card/index.js","./file":"./dist/file/index.js","./menu":"./dist/menu/index.js","./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./badge":"./dist/badge/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./toast":"./dist/toast/index.js","./avatar":"./dist/avatar/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./drawer":"./dist/drawer/index.js","./select":"./dist/select/index.js","./slider":"./dist/slider/index.js","./switch":"./dist/switch/index.js","./toggle":"./dist/toggle/index.js","./popover":"./dist/popover/index.js","./spinner":"./dist/spinner/index.js","./toolbar":"./dist/toolbar/index.js","./tooltip":"./dist/tooltip/index.js","./card.css":"./dist/card/card.css","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./file.css":"./dist/file/file.css","./menu.css":"./dist/menu/menu.css","./progress":"./dist/progress/index.js","./skeleton":"./dist/skeleton/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./badge.css":"./dist/badge/badge.css","./card/a11y":"./dist/card/a11y.js","./file/a11y":"./dist/file/a11y.js","./input.css":"./dist/input/input.css","./menu/a11y":"./dist/menu/a11y.js","./radio.css":"./dist/radio/radio.css","./separator":"./dist/separator/index.js","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./toast.css":"./dist/toast/toast.css","./alert/a11y":"./dist/alert/a11y.js","./avatar.css":"./dist/avatar/avatar.css","./badge/a11y":"./dist/badge/a11y.js","./breadcrumb":"./dist/breadcrumb/index.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./drawer.css":"./dist/drawer/drawer.css","./input/a11y":"./dist/input/a11y.js","./pagination":"./dist/pagination/index.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./slider.css":"./dist/slider/slider.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./toast/a11y":"./dist/toast/a11y.js","./toggle.css":"./dist/toggle/toggle.css","./avatar/a11y":"./dist/avatar/a11y.js","./button/a11y":"./dist/button/a11y.js","./card/styled":"./dist/card/styled.js","./collapsible":"./dist/collapsible/index.js","./dialog/a11y":"./dist/dialog/a11y.js","./drawer/a11y":"./dist/drawer/a11y.js","./file/styled":"./dist/file/styled.js","./menu/styled":"./dist/menu/styled.js","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./slider/a11y":"./dist/slider/a11y.js","./spinner.css":"./dist/spinner/spinner.css","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./toggle/a11y":"./dist/toggle/a11y.js","./toolbar.css":"./dist/toolbar/toolbar.css","./tooltip.css":"./dist/tooltip/tooltip.css","./alert-dialog":"./dist/alert-dialog/index.js","./alert/styled":"./dist/alert/styled.js","./badge/styled":"./dist/badge/styled.js","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./input/styled":"./dist/input/styled.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./progress.css":"./dist/progress/progress.css","./radio/styled":"./dist/radio/styled.js","./skeleton.css":"./dist/skeleton/skeleton.css","./spinner/a11y":"./dist/spinner/a11y.js","./textarea.css":"./dist/textarea/textarea.css","./toast/styled":"./dist/toast/styled.js","./toolbar/a11y":"./dist/toolbar/a11y.js","./tooltip/a11y":"./dist/tooltip/a11y.js","./accordion.css":"./dist/accordion/accordion.css","./avatar/styled":"./dist/avatar/styled.js","./button/styled":"./dist/button/styled.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./drawer/styled":"./dist/drawer/styled.js","./progress/a11y":"./dist/progress/a11y.js","./select/styled":"./dist/select/styled.js","./separator.css":"./dist/separator/separator.css","./skeleton/a11y":"./dist/skeleton/a11y.js","./slider/styled":"./dist/slider/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./toggle/styled":"./dist/toggle/styled.js","./accordion/a11y":"./dist/accordion/a11y.js","./breadcrumb.css":"./dist/breadcrumb/breadcrumb.css","./pagination.css":"./dist/pagination/pagination.css","./popover/styled":"./dist/popover/styled.js","./separator/a11y":"./dist/separator/a11y.js","./spinner/styled":"./dist/spinner/styled.js","./toolbar/styled":"./dist/toolbar/styled.js","./tooltip/styled":"./dist/tooltip/styled.js","./breadcrumb/a11y":"./dist/breadcrumb/a11y.js","./checkbox/styled":"./dist/checkbox/styled.js","./collapsible.css":"./dist/collapsible/collapsible.css","./combobox/styled":"./dist/combobox/styled.js","./pagination/a11y":"./dist/pagination/a11y.js","./progress/styled":"./dist/progress/styled.js","./skeleton/styled":"./dist/skeleton/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js","./alert-dialog.css":"./dist/alert-dialog/alert-dialog.css","./collapsible/a11y":"./dist/collapsible/a11y.js","./separator/styled":"./dist/separator/styled.js","./alert-dialog/a11y":"./dist/alert-dialog/a11y.js","./breadcrumb/styled":"./dist/breadcrumb/styled.js","./pagination/styled":"./dist/pagination/styled.js","./collapsible/styled":"./dist/collapsible/styled.js","./alert-dialog/styled":"./dist/alert-dialog/styled.js"},"gitHead":"d83185e247b9b56ed31a8c385482f3945ab01b2b","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/check-complete.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css","./dist/*/styled.js","./dist/*/a11y.js"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.5.1_1790025330585_0.7918293146854032","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"abaabil","version":"1.6.0","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.6.0","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"20f93a77f53b41f2930db5418f3c916c9ac03dbe","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.6.0.tgz","fileCount":167,"integrity":"sha512-NbvSobbWdi3AY+ijM7X59M5jG1w1kL7p1yekEw31WdmzWbQyNwtH+rgIh2u8IrHm4QzfakLwuP9DKCqJfupGPA==","signatures":[{"sig":"MEUCIQDeBPY88eIqUCl26ZqbUMIm5CaUZDJb3Krb94sO9rZWpQIgMGafDlcQuxv088Mc+NCKP7u9xSZ76hFm51v4KOPRJMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICKu4wcp0DIb7INfNJZI2zf3IRfRK8Qz7H/R5uZsSivfAiEAuyat4YKLKqkkaeAHIes+cO/CB7RpDw2N0osEGJzrcH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322206},"type":"module","exports":{"./otp":"./dist/otp/index.js","./card":"./dist/card/index.js","./file":"./dist/file/index.js","./menu":"./dist/menu/index.js","./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./badge":"./dist/badge/index.js","./field":"./dist/field/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./table":"./dist/table/index.js","./toast":"./dist/toast/index.js","./avatar":"./dist/avatar/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./drawer":"./dist/drawer/index.js","./select":"./dist/select/index.js","./slider":"./dist/slider/index.js","./switch":"./dist/switch/index.js","./toggle":"./dist/toggle/index.js","./command":"./dist/command/index.js","./menubar":"./dist/menubar/index.js","./otp.css":"./dist/otp/otp.css","./popover":"./dist/popover/index.js","./spinner":"./dist/spinner/index.js","./toolbar":"./dist/toolbar/index.js","./tooltip":"./dist/tooltip/index.js","./card.css":"./dist/card/card.css","./carousel":"./dist/carousel/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./file.css":"./dist/file/file.css","./menu.css":"./dist/menu/menu.css","./otp/a11y":"./dist/otp/a11y.js","./progress":"./dist/progress/index.js","./skeleton":"./dist/skeleton/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./badge.css":"./dist/badge/badge.css","./card/a11y":"./dist/card/a11y.js","./field.css":"./dist/field/field.css","./file/a11y":"./dist/file/a11y.js","./input.css":"./dist/input/input.css","./menu/a11y":"./dist/menu/a11y.js","./radio.css":"./dist/radio/radio.css","./separator":"./dist/separator/index.js","./table.css":"./dist/table/table.css","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./toast.css":"./dist/toast/toast.css","./alert/a11y":"./dist/alert/a11y.js","./avatar.css":"./dist/avatar/avatar.css","./badge/a11y":"./dist/badge/a11y.js","./breadcrumb":"./dist/breadcrumb/index.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./drawer.css":"./dist/drawer/drawer.css","./field/a11y":"./dist/field/a11y.js","./input/a11y":"./dist/input/a11y.js","./otp/styled":"./dist/otp/styled.js","./pagination":"./dist/pagination/index.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./slider.css":"./dist/slider/slider.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./table/a11y":"./dist/table/a11y.js","./toast/a11y":"./dist/toast/a11y.js","./toggle.css":"./dist/toggle/toggle.css","./avatar/a11y":"./dist/avatar/a11y.js","./button/a11y":"./dist/button/a11y.js","./card/styled":"./dist/card/styled.js","./collapsible":"./dist/collapsible/index.js","./command.css":"./dist/command/command.css","./dialog/a11y":"./dist/dialog/a11y.js","./drawer/a11y":"./dist/drawer/a11y.js","./file/styled":"./dist/file/styled.js","./menu/styled":"./dist/menu/styled.js","./menubar.css":"./dist/menubar/menubar.css","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./slider/a11y":"./dist/slider/a11y.js","./spinner.css":"./dist/spinner/spinner.css","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./toggle/a11y":"./dist/toggle/a11y.js","./toolbar.css":"./dist/toolbar/toolbar.css","./tooltip.css":"./dist/tooltip/tooltip.css","./alert-dialog":"./dist/alert-dialog/index.js","./alert/styled":"./dist/alert/styled.js","./badge/styled":"./dist/badge/styled.js","./carousel.css":"./dist/carousel/carousel.css","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./command/a11y":"./dist/command/a11y.js","./context-menu":"./dist/context-menu/index.js","./field/styled":"./dist/field/styled.js","./input/styled":"./dist/input/styled.js","./menubar/a11y":"./dist/menubar/a11y.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./progress.css":"./dist/progress/progress.css","./radio/styled":"./dist/radio/styled.js","./skeleton.css":"./dist/skeleton/skeleton.css","./spinner/a11y":"./dist/spinner/a11y.js","./table/styled":"./dist/table/styled.js","./textarea.css":"./dist/textarea/textarea.css","./toast/styled":"./dist/toast/styled.js","./toolbar/a11y":"./dist/toolbar/a11y.js","./tooltip/a11y":"./dist/tooltip/a11y.js","./accordion.css":"./dist/accordion/accordion.css","./avatar/styled":"./dist/avatar/styled.js","./button/styled":"./dist/button/styled.js","./carousel/a11y":"./dist/carousel/a11y.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./drawer/styled":"./dist/drawer/styled.js","./progress/a11y":"./dist/progress/a11y.js","./select/styled":"./dist/select/styled.js","./separator.css":"./dist/separator/separator.css","./skeleton/a11y":"./dist/skeleton/a11y.js","./slider/styled":"./dist/slider/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./toggle/styled":"./dist/toggle/styled.js","./accordion/a11y":"./dist/accordion/a11y.js","./breadcrumb.css":"./dist/breadcrumb/breadcrumb.css","./command/styled":"./dist/command/styled.js","./menubar/styled":"./dist/menubar/styled.js","./pagination.css":"./dist/pagination/pagination.css","./popover/styled":"./dist/popover/styled.js","./separator/a11y":"./dist/separator/a11y.js","./spinner/styled":"./dist/spinner/styled.js","./toolbar/styled":"./dist/toolbar/styled.js","./tooltip/styled":"./dist/tooltip/styled.js","./breadcrumb/a11y":"./dist/breadcrumb/a11y.js","./carousel/styled":"./dist/carousel/styled.js","./checkbox/styled":"./dist/checkbox/styled.js","./collapsible.css":"./dist/collapsible/collapsible.css","./combobox/styled":"./dist/combobox/styled.js","./navigation-menu":"./dist/navigation-menu/index.js","./pagination/a11y":"./dist/pagination/a11y.js","./progress/styled":"./dist/progress/styled.js","./skeleton/styled":"./dist/skeleton/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js","./alert-dialog.css":"./dist/alert-dialog/alert-dialog.css","./collapsible/a11y":"./dist/collapsible/a11y.js","./context-menu.css":"./dist/context-menu/context-menu.css","./separator/styled":"./dist/separator/styled.js","./alert-dialog/a11y":"./dist/alert-dialog/a11y.js","./breadcrumb/styled":"./dist/breadcrumb/styled.js","./context-menu/a11y":"./dist/context-menu/a11y.js","./pagination/styled":"./dist/pagination/styled.js","./collapsible/styled":"./dist/collapsible/styled.js","./alert-dialog/styled":"./dist/alert-dialog/styled.js","./context-menu/styled":"./dist/context-menu/styled.js","./navigation-menu.css":"./dist/navigation-menu/navigation-menu.css","./navigation-menu/a11y":"./dist/navigation-menu/a11y.js","./navigation-menu/styled":"./dist/navigation-menu/styled.js"},"gitHead":"d83185e247b9b56ed31a8c385482f3945ab01b2b","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/check-complete.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css","./dist/*/styled.js","./dist/*/a11y.js"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.6.0_1790286845444_0.7786094544991065","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"abaabil","version":"1.6.1","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"author":{"name":"Abaabil"},"license":"MIT","_id":"abaabil@1.6.1","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"homepage":"https://github.com/w3debugger/abaabil.ui#readme","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"3df95e772a91a32124a51201cec3d7b81da41bd2","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.6.1.tgz","fileCount":167,"integrity":"sha512-Gw0wk4u/TUgrcoJhiUWCenjrcvl2CAesU6K3EQ5U8SsvEEObK8VFciT63tGkThvERPP3qmF3kC5FmAoLieLxuQ==","signatures":[{"sig":"MEUCIHD7A1EDmb6SdZxWNnbGCzBU4X+RT9e+SOGzOYsaPw+4AiEAsuB3ZBwv5U5gPKrOwzv+PB66Oo5CAL0GWAorZw2v+0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHhDpm8p++RVor0abMOaXw8sNrzGsrc6qrYKbuBMQi1jAiAnJhtg72RmFt0+GU0H9GrzGP+0uyoR/UqcCJwelwbB8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322587},"type":"module","exports":{"./otp":"./dist/otp/index.js","./card":"./dist/card/index.js","./file":"./dist/file/index.js","./menu":"./dist/menu/index.js","./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./badge":"./dist/badge/index.js","./field":"./dist/field/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./table":"./dist/table/index.js","./toast":"./dist/toast/index.js","./avatar":"./dist/avatar/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./drawer":"./dist/drawer/index.js","./select":"./dist/select/index.js","./slider":"./dist/slider/index.js","./switch":"./dist/switch/index.js","./toggle":"./dist/toggle/index.js","./command":"./dist/command/index.js","./menubar":"./dist/menubar/index.js","./otp.css":"./dist/otp/otp.css","./popover":"./dist/popover/index.js","./spinner":"./dist/spinner/index.js","./toolbar":"./dist/toolbar/index.js","./tooltip":"./dist/tooltip/index.js","./card.css":"./dist/card/card.css","./carousel":"./dist/carousel/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./file.css":"./dist/file/file.css","./menu.css":"./dist/menu/menu.css","./otp/a11y":"./dist/otp/a11y.js","./progress":"./dist/progress/index.js","./skeleton":"./dist/skeleton/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./badge.css":"./dist/badge/badge.css","./card/a11y":"./dist/card/a11y.js","./field.css":"./dist/field/field.css","./file/a11y":"./dist/file/a11y.js","./input.css":"./dist/input/input.css","./menu/a11y":"./dist/menu/a11y.js","./radio.css":"./dist/radio/radio.css","./separator":"./dist/separator/index.js","./table.css":"./dist/table/table.css","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./toast.css":"./dist/toast/toast.css","./alert/a11y":"./dist/alert/a11y.js","./avatar.css":"./dist/avatar/avatar.css","./badge/a11y":"./dist/badge/a11y.js","./breadcrumb":"./dist/breadcrumb/index.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./drawer.css":"./dist/drawer/drawer.css","./field/a11y":"./dist/field/a11y.js","./input/a11y":"./dist/input/a11y.js","./otp/styled":"./dist/otp/styled.js","./pagination":"./dist/pagination/index.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./slider.css":"./dist/slider/slider.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./table/a11y":"./dist/table/a11y.js","./toast/a11y":"./dist/toast/a11y.js","./toggle.css":"./dist/toggle/toggle.css","./avatar/a11y":"./dist/avatar/a11y.js","./button/a11y":"./dist/button/a11y.js","./card/styled":"./dist/card/styled.js","./collapsible":"./dist/collapsible/index.js","./command.css":"./dist/command/command.css","./dialog/a11y":"./dist/dialog/a11y.js","./drawer/a11y":"./dist/drawer/a11y.js","./file/styled":"./dist/file/styled.js","./menu/styled":"./dist/menu/styled.js","./menubar.css":"./dist/menubar/menubar.css","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./slider/a11y":"./dist/slider/a11y.js","./spinner.css":"./dist/spinner/spinner.css","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./toggle/a11y":"./dist/toggle/a11y.js","./toolbar.css":"./dist/toolbar/toolbar.css","./tooltip.css":"./dist/tooltip/tooltip.css","./alert-dialog":"./dist/alert-dialog/index.js","./alert/styled":"./dist/alert/styled.js","./badge/styled":"./dist/badge/styled.js","./carousel.css":"./dist/carousel/carousel.css","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./command/a11y":"./dist/command/a11y.js","./context-menu":"./dist/context-menu/index.js","./field/styled":"./dist/field/styled.js","./input/styled":"./dist/input/styled.js","./menubar/a11y":"./dist/menubar/a11y.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./progress.css":"./dist/progress/progress.css","./radio/styled":"./dist/radio/styled.js","./skeleton.css":"./dist/skeleton/skeleton.css","./spinner/a11y":"./dist/spinner/a11y.js","./table/styled":"./dist/table/styled.js","./textarea.css":"./dist/textarea/textarea.css","./toast/styled":"./dist/toast/styled.js","./toolbar/a11y":"./dist/toolbar/a11y.js","./tooltip/a11y":"./dist/tooltip/a11y.js","./accordion.css":"./dist/accordion/accordion.css","./avatar/styled":"./dist/avatar/styled.js","./button/styled":"./dist/button/styled.js","./carousel/a11y":"./dist/carousel/a11y.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./drawer/styled":"./dist/drawer/styled.js","./progress/a11y":"./dist/progress/a11y.js","./select/styled":"./dist/select/styled.js","./separator.css":"./dist/separator/separator.css","./skeleton/a11y":"./dist/skeleton/a11y.js","./slider/styled":"./dist/slider/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./toggle/styled":"./dist/toggle/styled.js","./accordion/a11y":"./dist/accordion/a11y.js","./breadcrumb.css":"./dist/breadcrumb/breadcrumb.css","./command/styled":"./dist/command/styled.js","./menubar/styled":"./dist/menubar/styled.js","./pagination.css":"./dist/pagination/pagination.css","./popover/styled":"./dist/popover/styled.js","./separator/a11y":"./dist/separator/a11y.js","./spinner/styled":"./dist/spinner/styled.js","./toolbar/styled":"./dist/toolbar/styled.js","./tooltip/styled":"./dist/tooltip/styled.js","./breadcrumb/a11y":"./dist/breadcrumb/a11y.js","./carousel/styled":"./dist/carousel/styled.js","./checkbox/styled":"./dist/checkbox/styled.js","./collapsible.css":"./dist/collapsible/collapsible.css","./combobox/styled":"./dist/combobox/styled.js","./navigation-menu":"./dist/navigation-menu/index.js","./pagination/a11y":"./dist/pagination/a11y.js","./progress/styled":"./dist/progress/styled.js","./skeleton/styled":"./dist/skeleton/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js","./alert-dialog.css":"./dist/alert-dialog/alert-dialog.css","./collapsible/a11y":"./dist/collapsible/a11y.js","./context-menu.css":"./dist/context-menu/context-menu.css","./separator/styled":"./dist/separator/styled.js","./alert-dialog/a11y":"./dist/alert-dialog/a11y.js","./breadcrumb/styled":"./dist/breadcrumb/styled.js","./context-menu/a11y":"./dist/context-menu/a11y.js","./pagination/styled":"./dist/pagination/styled.js","./collapsible/styled":"./dist/collapsible/styled.js","./alert-dialog/styled":"./dist/alert-dialog/styled.js","./context-menu/styled":"./dist/context-menu/styled.js","./navigation-menu.css":"./dist/navigation-menu/navigation-menu.css","./navigation-menu/a11y":"./dist/navigation-menu/a11y.js","./navigation-menu/styled":"./dist/navigation-menu/styled.js"},"gitHead":"f0535affa0630d448517b6e852dce00a1192a5d2","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/check-complete.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"sideEffects":["*.css","./dist/*/styled.js","./dist/*/a11y.js"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/abaabil_1.6.1_1790288713417_0.08876821805530533","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"_id":"abaabil@1.6.2","bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"dist":{"shasum":"f503f8d784fa6f57ed123eb25cd49003776de15b","tarball":"https://registry.npmjs.org/abaabil/-/abaabil-1.6.2.tgz","fileCount":167,"integrity":"sha512-//zmljiAIieU23Xr/Aa0N9Ryz8HhXl/Hd20SVDJ0+JAQ5iHDmIfGoMnTXxewIOe2XYGHzyFrBomDZfzu+/9Hog==","signatures":[{"sig":"MEQCICTQGqQJ0zWXabMaCucpG1sVYQOiT1JxMESvr1EoPCwqAiAfQcG6AtCe3utI6YTGGKve/ZVC9Mf8JkdBLr20ir02ug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICF9YB5ZSZASlWcc/0hH/b9n7qCnd/sgnOSJ9XluNnEuAiAORMYyZ77RrVvgin2MFDWLwlj6EJ5GL+3b5eULH/BAWw=="}],"unpackedSize":347221},"name":"abaabil","type":"module","author":{"name":"Abaabil"},"exports":{"./otp":"./dist/otp/index.js","./card":"./dist/card/index.js","./file":"./dist/file/index.js","./menu":"./dist/menu/index.js","./tabs":"./dist/tabs/index.js","./alert":"./dist/alert/index.js","./badge":"./dist/badge/index.js","./field":"./dist/field/index.js","./input":"./dist/input/index.js","./radio":"./dist/radio/index.js","./table":"./dist/table/index.js","./toast":"./dist/toast/index.js","./avatar":"./dist/avatar/index.js","./button":"./dist/button/index.js","./dialog":"./dist/dialog/index.js","./drawer":"./dist/drawer/index.js","./select":"./dist/select/index.js","./slider":"./dist/slider/index.js","./switch":"./dist/switch/index.js","./toggle":"./dist/toggle/index.js","./command":"./dist/command/index.js","./menubar":"./dist/menubar/index.js","./otp.css":"./dist/otp/otp.css","./popover":"./dist/popover/index.js","./spinner":"./dist/spinner/index.js","./toolbar":"./dist/toolbar/index.js","./tooltip":"./dist/tooltip/index.js","./card.css":"./dist/card/card.css","./carousel":"./dist/carousel/index.js","./checkbox":"./dist/checkbox/index.js","./combobox":"./dist/combobox/index.js","./file.css":"./dist/file/file.css","./menu.css":"./dist/menu/menu.css","./otp/a11y":"./dist/otp/a11y.js","./progress":"./dist/progress/index.js","./skeleton":"./dist/skeleton/index.js","./tabs.css":"./dist/tabs/tabs.css","./textarea":"./dist/textarea/index.js","./accordion":"./dist/accordion/index.js","./alert.css":"./dist/alert/alert.css","./badge.css":"./dist/badge/badge.css","./card/a11y":"./dist/card/a11y.js","./field.css":"./dist/field/field.css","./file/a11y":"./dist/file/a11y.js","./input.css":"./dist/input/input.css","./menu/a11y":"./dist/menu/a11y.js","./radio.css":"./dist/radio/radio.css","./separator":"./dist/separator/index.js","./table.css":"./dist/table/table.css","./tabs/a11y":"./dist/tabs/a11y.js","./theme.css":"./dist/theme.css","./toast.css":"./dist/toast/toast.css","./alert/a11y":"./dist/alert/a11y.js","./avatar.css":"./dist/avatar/avatar.css","./badge/a11y":"./dist/badge/a11y.js","./breadcrumb":"./dist/breadcrumb/index.js","./button.css":"./dist/button/button.css","./dialog.css":"./dist/dialog/dialog.css","./drawer.css":"./dist/drawer/drawer.css","./field/a11y":"./dist/field/a11y.js","./input/a11y":"./dist/input/a11y.js","./otp/styled":"./dist/otp/styled.js","./pagination":"./dist/pagination/index.js","./radio/a11y":"./dist/radio/a11y.js","./select.css":"./dist/select/select.css","./slider.css":"./dist/slider/slider.css","./styles.css":"./dist/styles.css","./switch.css":"./dist/switch/switch.css","./table/a11y":"./dist/table/a11y.js","./toast/a11y":"./dist/toast/a11y.js","./toggle.css":"./dist/toggle/toggle.css","./avatar/a11y":"./dist/avatar/a11y.js","./button/a11y":"./dist/button/a11y.js","./card/styled":"./dist/card/styled.js","./collapsible":"./dist/collapsible/index.js","./command.css":"./dist/command/command.css","./dialog/a11y":"./dist/dialog/a11y.js","./drawer/a11y":"./dist/drawer/a11y.js","./file/styled":"./dist/file/styled.js","./menu/styled":"./dist/menu/styled.js","./menubar.css":"./dist/menubar/menubar.css","./popover.css":"./dist/popover/popover.css","./select/a11y":"./dist/select/a11y.js","./slider/a11y":"./dist/slider/a11y.js","./spinner.css":"./dist/spinner/spinner.css","./switch/a11y":"./dist/switch/a11y.js","./tabs/styled":"./dist/tabs/styled.js","./toggle/a11y":"./dist/toggle/a11y.js","./toolbar.css":"./dist/toolbar/toolbar.css","./tooltip.css":"./dist/tooltip/tooltip.css","./alert-dialog":"./dist/alert-dialog/index.js","./alert/styled":"./dist/alert/styled.js","./badge/styled":"./dist/badge/styled.js","./carousel.css":"./dist/carousel/carousel.css","./checkbox.css":"./dist/checkbox/checkbox.css","./combobox.css":"./dist/combobox/combobox.css","./command/a11y":"./dist/command/a11y.js","./context-menu":"./dist/context-menu/index.js","./field/styled":"./dist/field/styled.js","./input/styled":"./dist/input/styled.js","./menubar/a11y":"./dist/menubar/a11y.js","./package.json":"./package.json","./popover/a11y":"./dist/popover/a11y.js","./progress.css":"./dist/progress/progress.css","./radio/styled":"./dist/radio/styled.js","./skeleton.css":"./dist/skeleton/skeleton.css","./spinner/a11y":"./dist/spinner/a11y.js","./table/styled":"./dist/table/styled.js","./textarea.css":"./dist/textarea/textarea.css","./toast/styled":"./dist/toast/styled.js","./toolbar/a11y":"./dist/toolbar/a11y.js","./tooltip/a11y":"./dist/tooltip/a11y.js","./accordion.css":"./dist/accordion/accordion.css","./avatar/styled":"./dist/avatar/styled.js","./button/styled":"./dist/button/styled.js","./carousel/a11y":"./dist/carousel/a11y.js","./checkbox/a11y":"./dist/checkbox/a11y.js","./combobox/a11y":"./dist/combobox/a11y.js","./dialog/styled":"./dist/dialog/styled.js","./drawer/styled":"./dist/drawer/styled.js","./progress/a11y":"./dist/progress/a11y.js","./select/styled":"./dist/select/styled.js","./separator.css":"./dist/separator/separator.css","./skeleton/a11y":"./dist/skeleton/a11y.js","./slider/styled":"./dist/slider/styled.js","./switch/styled":"./dist/switch/styled.js","./textarea/a11y":"./dist/textarea/a11y.js","./toggle/styled":"./dist/toggle/styled.js","./accordion/a11y":"./dist/accordion/a11y.js","./breadcrumb.css":"./dist/breadcrumb/breadcrumb.css","./command/styled":"./dist/command/styled.js","./menubar/styled":"./dist/menubar/styled.js","./pagination.css":"./dist/pagination/pagination.css","./popover/styled":"./dist/popover/styled.js","./separator/a11y":"./dist/separator/a11y.js","./spinner/styled":"./dist/spinner/styled.js","./toolbar/styled":"./dist/toolbar/styled.js","./tooltip/styled":"./dist/tooltip/styled.js","./breadcrumb/a11y":"./dist/breadcrumb/a11y.js","./carousel/styled":"./dist/carousel/styled.js","./checkbox/styled":"./dist/checkbox/styled.js","./collapsible.css":"./dist/collapsible/collapsible.css","./combobox/styled":"./dist/combobox/styled.js","./navigation-menu":"./dist/navigation-menu/index.js","./pagination/a11y":"./dist/pagination/a11y.js","./progress/styled":"./dist/progress/styled.js","./skeleton/styled":"./dist/skeleton/styled.js","./textarea/styled":"./dist/textarea/styled.js","./accordion/styled":"./dist/accordion/styled.js","./alert-dialog.css":"./dist/alert-dialog/alert-dialog.css","./collapsible/a11y":"./dist/collapsible/a11y.js","./context-menu.css":"./dist/context-menu/context-menu.css","./separator/styled":"./dist/separator/styled.js","./alert-dialog/a11y":"./dist/alert-dialog/a11y.js","./breadcrumb/styled":"./dist/breadcrumb/styled.js","./context-menu/a11y":"./dist/context-menu/a11y.js","./pagination/styled":"./dist/pagination/styled.js","./collapsible/styled":"./dist/collapsible/styled.js","./alert-dialog/styled":"./dist/alert-dialog/styled.js","./context-menu/styled":"./dist/context-menu/styled.js","./navigation-menu.css":"./dist/navigation-menu/navigation-menu.css","./navigation-menu/a11y":"./dist/navigation-menu/a11y.js","./navigation-menu/styled":"./dist/navigation-menu/styled.js"},"gitHead":"884bae57985dcc2b0fdee2dcb8c12e98c3a017b4","license":"MIT","scripts":{"test":"vitest run","build":"node scripts/build-css.js && rollup -c && node scripts/check-directives.js && node scripts/check-complete.js && node scripts/measure.js","test:watch":"vitest","prepublishOnly":"npm run build && node scripts/check-package.js"},"version":"1.6.2","_npmUser":{"name":"w3debugger","email":"w3debugger@gmail.com"},"homepage":"https://github.com/w3debugger/abaabil.ui#readme","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"_npmVersion":"12.0.2","description":"Minimal, themeable, accessible React components. Zero dependencies.","directories":{},"maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"sideEffects":["*.css","./dist/*/styled.js","./dist/*/a11y.js"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","rollup":"^4.30.1","vitest":"^3.0.0","jest-axe":"^9.0.0","react-dom":"^19.0.0","lightningcss":"^1.29.1","@testing-library/dom":"^10.4.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@rollup/plugin-node-resolve":"^16.0.0","@testing-library/user-event":"^14.5.2","rollup-plugin-preserve-directives":"^0.4.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/abaabil_1.6.2_1790292281340_0.7214891868162201"}}},"time":{"created":"2026-09-20T22:15:38.914Z","modified":"2026-09-24T23:24:41.590Z","1.0.2":"2023-10-14T12:40:16.040Z","1.0.3":"2023-10-14T13:49:08.119Z","1.0.4":"2023-10-14T22:30:05.265Z","0.0.8":"2024-07-21T00:40:58.586Z","0.0.9":"2024-07-21T01:03:33.741Z","0.0.10":"2024-07-21T01:35:14.848Z","0.0.11":"2024-07-21T01:37:56.647Z","0.0.14":"2024-07-21T12:54:25.792Z","0.0.16":"2024-07-22T00:03:52.157Z","0.0.18":"2024-08-03T22:40:11.394Z","0.0.19":"2024-08-03T23:11:47.169Z","0.0.20":"2024-08-03T23:31:28.239Z","0.0.21":"2024-08-04T11:27:46.651Z","0.0.22":"2024-08-11T12:41:58.119Z","0.0.23":"2024-08-11T12:57:49.442Z","0.0.24":"2024-08-11T16:00:15.705Z","0.0.25":"2024-08-11T16:30:03.936Z","0.0.26":"2024-08-11T16:41:12.473Z","0.0.27":"2024-08-11T18:54:42.521Z","0.0.28":"2024-08-15T23:37:42.950Z","0.0.29":"2024-08-15T23:49:37.110Z","0.1.1":"2024-08-16T00:05:49.335Z","0.1.2":"2024-08-16T00:12:08.495Z","0.1.3":"2024-08-16T06:48:48.847Z","0.1.4":"2024-08-18T00:56:25.242Z","0.1.5":"2024-08-18T01:33:50.683Z","0.1.6":"2024-08-18T11:28:05.592Z","0.1.7":"2024-08-18T13:45:32.785Z","0.1.8":"2024-08-18T19:31:59.565Z","0.1.9":"2024-08-18T23:04:07.373Z","0.1.10":"2024-08-18T23:06:51.983Z","0.1.11":"2024-08-18T23:17:14.358Z","0.1.12":"2024-08-18T23:29:49.853Z","0.1.13":"2024-08-23T21:19:44.654Z","0.1.14":"2024-08-23T23:05:03.282Z","0.1.15":"2024-08-23T23:27:17.396Z","0.1.16":"2024-08-23T23:53:49.367Z","0.1.17":"2024-08-24T08:06:34.819Z","0.1.18":"2024-08-24T09:10:34.800Z","0.1.19":"2024-08-24T09:18:52.783Z","0.1.20":"2024-08-24T17:43:45.600Z","0.1.21":"2024-08-24T22:39:09.135Z","0.1.22":"2024-08-24T22:41:50.585Z","0.1.23":"2024-08-24T23:14:41.075Z","0.1.24":"2024-08-24T23:20:55.490Z","0.1.25":"2024-08-25T12:01:36.253Z","0.1.26":"2024-08-25T12:16:11.772Z","0.1.27":"2024-08-25T12:17:45.771Z","0.1.28":"2024-08-25T13:16:39.413Z","0.1.29":"2024-08-25T13:53:43.773Z","0.1.30":"2024-08-25T14:51:27.094Z","0.1.31":"2024-08-25T15:57:15.171Z","0.1.32":"2024-08-25T16:15:20.933Z","0.1.33":"2024-08-25T22:17:13.402Z","0.1.34":"2024-08-28T22:19:30.994Z","0.1.35":"2024-08-28T22:21:16.737Z","0.1.36":"2024-08-28T22:25:57.163Z","0.1.37":"2024-08-28T22:40:13.827Z","0.1.38":"2024-09-01T13:09:31.680Z","0.1.39":"2024-09-01T13:11:41.692Z","0.1.40":"2024-09-01T14:14:18.471Z","0.1.41":"2024-09-01T16:54:12.508Z","0.1.42":"2024-09-01T18:40:56.908Z","0.1.43":"2024-09-01T21:51:54.233Z","0.1.44":"2024-09-02T16:55:27.498Z","0.1.45":"2024-09-02T18:24:15.243Z","0.1.46":"2024-09-02T18:48:27.603Z","0.1.47":"2024-09-03T14:54:28.379Z","0.1.48":"2024-09-03T18:37:50.280Z","0.1.49":"2024-09-03T18:50:47.007Z","0.1.50":"2025-02-14T14:22:55.815Z","0.1.51":"2025-02-14T15:23:17.237Z","0.1.52":"2025-02-14T19:43:22.964Z","0.1.53":"2025-02-14T19:59:23.412Z","0.1.54":"2025-02-14T21:35:05.250Z","0.1.58":"2025-03-14T13:12:20.357Z","0.1.60":"2025-03-19T19:58:27.261Z","0.1.61":"2025-06-28T13:11:59.015Z","0.1.62":"2025-06-28T13:52:34.543Z","0.1.63":"2025-06-28T14:03:15.031Z","0.1.64":"2025-06-28T14:25:37.577Z","0.1.65":"2025-06-28T15:45:23.220Z","0.1.66":"2025-06-28T16:20:58.493Z","0.1.67":"2025-06-28T17:08:10.083Z","0.1.68":"2025-06-28T17:16:54.502Z","0.1.69":"2025-06-28T17:26:41.988Z","0.1.70":"2025-06-28T17:34:52.737Z","0.1.71":"2025-06-28T21:55:18.009Z","0.1.72":"2025-06-28T22:12:31.931Z","0.1.73":"2025-06-28T22:18:32.905Z","0.1.74":"2025-06-28T22:30:33.252Z","0.1.75":"2025-06-28T22:44:46.395Z","0.1.76":"2025-06-28T22:48:53.008Z","0.1.77":"2025-06-28T23:07:32.650Z","0.1.78":"2025-06-29T13:28:38.850Z","0.1.79":"2025-06-29T23:05:27.723Z","0.1.80":"2025-06-29T23:10:52.172Z","1.0.0":"2026-09-20T22:06:56.020Z","1.1.0":"2026-09-20T22:15:39.126Z","1.2.0":"2026-09-21T05:58:41.494Z","1.3.0":"2026-09-21T06:45:17.864Z","1.4.0":"2026-09-21T07:54:40.123Z","1.4.1":"2026-09-21T08:13:37.540Z","1.4.2":"2026-09-21T08:35:30.559Z","1.4.3":"2026-09-21T18:19:42.359Z","1.5.0":"2026-09-21T21:06:22.332Z","1.5.1":"2026-09-21T21:15:30.682Z","1.6.0":"2026-09-24T21:54:05.621Z","1.6.1":"2026-09-24T22:25:13.504Z","1.6.2":"2026-09-24T23:24:41.431Z"},"bugs":{"url":"https://github.com/w3debugger/abaabil.ui/issues"},"author":{"name":"Abaabil"},"license":"MIT","homepage":"https://github.com/w3debugger/abaabil.ui#readme","keywords":["react","components","accessible","accessibility","headless","css-variables","apg","aria","design-system","ui","react-19"],"repository":{"url":"git+https://github.com/w3debugger/abaabil.ui.git","type":"git"},"description":"Minimal, themeable, accessible React components. Zero dependencies.","maintainers":[{"name":"w3debugger","email":"w3debugger@gmail.com"}],"readme":"# abaabil\n\nMinimal, themeable, accessible React components. Zero dependencies.\n\nForty components: button, dialog, alert-dialog, drawer, popover, menu, context-menu, menubar, navigation-menu, command, tooltip, combobox, input, textarea, otp, field, file, checkbox, radio, switch, select, slider, toggle, accordion, collapsible, tabs, toolbar, breadcrumb, pagination, table, carousel, progress, spinner, skeleton, alert, toast, avatar, badge, card, separator.\n\n```js\nimport Button from 'abaabil/button/a11y'\nimport 'abaabil/theme.css'\n\nfunction Example() {\n  return <Button onClick={() => console.log('clicked')}>Save</Button>\n}\n```\n\nEach component ships three tiers, `normal`, `styled`, `a11y`, so you only pay for what you use. Two facts worth knowing up front:\n\n- A fully accessible `dialog/a11y` is **580 B gzipped**, against `@radix-ui/react-dialog` at **13,493 B**. Both are measured the same way: a dialog you can actually open, imported with every part it needs, bundled with esbuild, `react`/`react-dom` external, minified, then gzipped. Both numbers are JS only; Radix ships no stylesheet of its own, and it also bundles its own positioning and portal logic and predates a usable native `<dialog>`, so it isn't attempting exactly what abaabil does. The difference is mostly what the platform now gives you for free, not a claim of doing more with less.\n\n  Earlier releases of this README compared 674 B against Radix at 3,422 B. That Radix figure was wrong: it was what you get importing only `Dialog.Root`, which renders nothing. The corrected comparison is less favourable to Radix, not more, which is why it is stated here rather than quietly changed.\n- `accordion/a11y` needs **no JavaScript at all**. Every tier of accordion, including `a11y`, is server-renderable, because it's built on native `<details>`/`<summary>` rather than a scripted widget.\n\n## Install\n\n```\nnpm install abaabil\n```\n\n`react` and `react-dom` are peer dependencies (`^19.0.0`); abaabil has zero runtime dependencies of its own.\n\n## The three tiers\n\nEvery component ships as three separate entry points so you only pay for what you use. For most components, each tier builds on the one before it: `styled` adds abaabil's CSS on top of `normal`, and `a11y` adds ARIA wiring and keyboard handling on top of `styled`.\n\nCombobox is the exception: its `a11y` tier is an independent implementation that imports `combobox.css` directly, rather than building on `styled`, because its ARIA attributes have to sit on specific elements (the input and the listbox) that the `styled`/`normal` markup does not expose as separate parts.\n\n### Delivered size\n\nThe gzipped cost of importing each entry point on its own, React treated as external (a peer, not bundled):\n\n| Entry | JS | CSS |\n|---|---:|---:|\n| `abaabil/button` | 199 B | - |\n| `abaabil/button/styled` | 198 B | 551 B |\n| `abaabil/button/a11y` | 557 B | 551 B |\n| `abaabil/dialog` | 168 B | - |\n| `abaabil/dialog/styled` | 169 B | 371 B |\n| `abaabil/dialog/a11y` | 580 B | 371 B |\n| `abaabil/combobox` | 455 B | - |\n| `abaabil/combobox/styled` | 455 B | 615 B |\n| `abaabil/combobox/a11y` | 1,097 B | 615 B |\n| `abaabil/input` | 166 B | - |\n| `abaabil/input/styled` | 166 B | 497 B |\n| `abaabil/input/a11y` | 501 B | 497 B |\n| `abaabil/checkbox` | 168 B | - |\n| `abaabil/checkbox/styled` | 168 B | 651 B |\n| `abaabil/checkbox/a11y` | 534 B | 651 B |\n| `abaabil/radio` | 165 B | - |\n| `abaabil/radio/styled` | 166 B | 542 B |\n| `abaabil/radio/a11y` | 444 B | 542 B |\n| `abaabil/select` | 209 B | - |\n| `abaabil/select/styled` | 210 B | 771 B |\n| `abaabil/select/a11y` | 530 B | 771 B |\n| `abaabil/accordion` | 320 B | - |\n| `abaabil/accordion/styled` | 320 B | 528 B |\n| `abaabil/accordion/a11y` | 364 B | 528 B |\n| `abaabil/textarea` | 166 B | - |\n| `abaabil/textarea/styled` | 166 B | 476 B |\n| `abaabil/textarea/a11y` | 506 B | 476 B |\n| `abaabil/switch` | 177 B | - |\n| `abaabil/switch/styled` | 177 B | 585 B |\n| `abaabil/switch/a11y` | 423 B | 585 B |\n| `abaabil/popover` | 387 B | - |\n| `abaabil/popover/styled` | 388 B | 436 B |\n| `abaabil/popover/a11y` | 484 B | 436 B |\n| `abaabil/tabs` | 349 B | - |\n| `abaabil/tabs/styled` | 349 B | 529 B |\n| `abaabil/tabs/a11y` | 786 B | 529 B |\n| `abaabil/alert` | 190 B | - |\n| `abaabil/alert/styled` | 190 B | 345 B |\n| `abaabil/alert/a11y` | 341 B | 345 B |\n\nMeasured against `abaabil@1.2.0`. Each entry point is bundled on its own with its full module graph (so `button/styled`'s cost already includes the `button` markup it imports) using esbuild, `react`/`react-dom` external, minified, then gzipped. The `styled` and `a11y` tiers also pull in their component's stylesheet as a side-effect import; the CSS column is that stylesheet's own gzipped size, separate from the JS number. `normal` tier entries have no CSS column because they import none.\n\nA `styled` entry sometimes measures a byte or two *below* its `normal` entry. That is compression noise, not a real difference: `styled` is `normal` plus a CSS side-effect import, so its JavaScript is the same code, and a byte of difference either way is gzip responding to a different module path. The CSS column is where the `styled` tier's actual cost is.\n\nThis is different from the per-file numbers in `SIZES.md`, which are produced with `preserveModules` and so under-count any tier that imports another module: `styled.js` there shows only the bytes of its own file, not the `index.js` it re-exports.\n\nThese figures are generated, not typed. The script lives in the docs site repo at `scripts/compare/delivered.mjs`, alongside the harness that measures abaabil against nine other libraries with one shared method. Earlier releases of this table were copied by hand and went stale: the 1.1.0 package shipped with 1.0.0's numbers still printed here, some of them out by more than 10%.\n\nImport the tier you need directly:\n\n```js\nimport Button from 'abaabil/button/a11y'\nimport Dialog from 'abaabil/dialog/a11y'\nimport Combobox from 'abaabil/combobox/a11y'\nimport Input from 'abaabil/input/a11y'\nimport Checkbox from 'abaabil/checkbox/a11y'\nimport Radio from 'abaabil/radio/a11y'\nimport Select from 'abaabil/select/a11y'\nimport Accordion from 'abaabil/accordion/a11y'\n```\n\n### Bundler required for `styled` and `a11y` tiers\n\nThe `styled` and `a11y` entry points (all eighty across the forty components) import their\ncomponent's CSS as a JS side effect (`import 'abaabil/button/button.css'` style, resolved\nrelative to the package). That works in any bundler that understands CSS imports, which\ncovers Next.js, Vite, and webpack. It does **not** work if you run the built file directly in\nplain Node with no bundler in front of it (for example `node --input-type=module -e \"import(...)\"`):\nNode has no loader for `.css` and throws `ERR_UNKNOWN_FILE_EXTENSION`.\n\nIf you need a bundler-free environment, use the `normal` tier and import the component's\nstylesheet yourself, which is why each component's CSS is exported separately:\n\n```js\nimport Button from 'abaabil/button'\nimport 'abaabil/button.css'\n```\n\nThe `normal` tier (`abaabil/button`, `abaabil/dialog`, `abaabil/combobox`, `abaabil/input`,\n`abaabil/checkbox`, `abaabil/radio`, `abaabil/select`, `abaabil/accordion`) never imports CSS and\nloads cleanly with no bundler.\n\n### Why a `normal`-tier component can still look styled\n\nThe `normal` tier ships no CSS, but shipping no CSS is not the same as rendering unstyled. All\nthree tiers of a component render the same class name (for example `abaabil-button`), and\n`button.css` styles that class globally, not per tier. So if anything in your app imports the\n`styled` or `a11y` tier of a component, every `normal`-tier instance of that same component on\nthe page picks up those styles too, purely because the stylesheet got loaded somewhere:\n\n```js\nimport Button from 'abaabil/button'          // no CSS import\nimport ButtonA11y from 'abaabil/button/a11y' // imports button.css\n\n// Both render class=\"abaabil-button\". Once button.css is loaded anywhere\n// on the page, both are styled, because the rule targets the class, not\n// the import site.\n```\n\nIf you chose `normal` in order to style the component yourself, this works in your favor: the\nlibrary's own rules live in `@layer abaabil.components`, and ordinary unlayered CSS always beats\na layered rule, so your styles win with no `!important` needed.\n\nTo get a genuinely unstyled component, import only its `normal` tier and make sure nothing else\nin your app imports that component's stylesheet (directly or through its `styled`/`a11y` tier).\n\n## Theming\n\nabaabil ships design tokens in `abaabil/theme.css`. Override the CSS custom properties in your own stylesheet to retheme every component:\n\n```css\n@import 'abaabil/theme.css';\n@import 'abaabil/styles.css';\n\n:root {\n  --color-primary: #7c3aed;\n  --radius-md: 0.75rem;\n}\n```\n\nSetting `--color-primary` is enough. The hover shade and the focus ring are **derived** from it, so a purple theme gets a purple hover and a purple focus ring without naming either:\n\n| Token | Default | Follows `--color-primary`? |\n|---|---|---|\n| `--color-primary` | `#2563eb` | is it |\n| `--color-primary-hover` | `color-mix(in srgb, var(--color-primary) 85%, white)` | yes |\n| `--color-focus-ring` | `var(--color-primary)` | yes |\n| `--color-primary-fg` | `#ffffff` | **no**, see below |\n\nOverride any of them individually if the derived value is not what you want.\n\n`--color-primary-fg` is the text and iconography drawn *on* the primary colour, and it does not derive, because deriving it needs a contrast decision CSS cannot make yet. It is white. If you set `--color-primary` to something light, set `--color-primary-fg` to something dark alongside it, or the text on your buttons will fail contrast.\n\n`--color-danger`, `--color-success` and `--color-warning` are independent on purpose: an error is red whatever your brand colour is.\n\nSemantic tokens (`--color-*`, `--space-*`, `--radius-*`, `--font-*`) are deliberately unprefixed so an app or Tailwind `@theme` block that already defines them re-themes the library with no mapping. If your app defines those names for something else, wrap the library in a scope and redefine them there. Every component stylesheet restates the layer order, so `theme.css` may be imported in any order relative to them.\n\n### The neutrals, and which ones have to stay visible\n\nFour tokens look interchangeable and are not. Each has a contrast floor it\nis chosen to clear, and swapping one for another is how a control quietly\nstops being visible to the people who need it most.\n\n| Token | Default | Its job | Floor |\n|---|---|---|---|\n| `--color-border` | `#8b929e` | the edge of a control: an input, a select, a track, the off state of a switch | 3:1 on the surface |\n| `--color-border-subtle` | `#d1d5db` | decorative rules: accordion dividers, a toolbar separator | none, it carries nothing |\n| `--color-muted` | `#f3f4f6` | a hover wash, an avatar ground | none, hover is a pointer affordance |\n| `--color-track` | `#f3f4f6` | the empty part of a progress bar or slider groove | 3:1 against `--color-primary` |\n\n`--color-muted` and `--color-track` share a value in the light theme and\npart company in the dark one, which is the reason they are two tokens. A\nhover wash wants to sit a hair off the surface; a track has to stay clear\nof the fill drawn over it. Held together, the dark theme put a blue fill\non a grey track at 2.84:1.\n\nIf you re-theme, the pairs worth re-checking are `--color-border` against\n`--color-surface`, and `--color-primary` against both `--color-surface`\nand `--color-track`. The library's own test suite asserts these; yours\nshould too if you change them.\n\nabaabil's own component rules live inside `@layer abaabil.components`. CSS layers give unlayered rules the higher priority by default, so any selector you write in your normal (unlayered) application CSS beats the library's layered styles automatically, with no `!important` needed:\n\n```css\n/* this wins over abaabil's layered .btn rules, with no !important */\n.btn {\n  border-radius: 999px;\n}\n```\n\n## Server Components\n\nOnly the entry points that need interactivity are marked `\"use client\"`. The rest render inside a React Server Component tree as plain server components, shipping zero client JS:\n\n| Entry point | `\"use client\"` |\n|---|---|\n| `abaabil/button` | no |\n| `abaabil/button/styled` | no |\n| `abaabil/button/a11y` | no |\n| `abaabil/dialog` | no |\n| `abaabil/dialog/styled` | no |\n| `abaabil/dialog/a11y` | yes |\n| `abaabil/combobox` | yes |\n| `abaabil/combobox/styled` | yes (see note) |\n| `abaabil/combobox/a11y` | yes |\n| `abaabil/input` | no |\n| `abaabil/input/styled` | no |\n| `abaabil/input/a11y` | yes |\n| `abaabil/checkbox` | no |\n| `abaabil/checkbox/styled` | no |\n| `abaabil/checkbox/a11y` | yes |\n| `abaabil/radio` | no |\n| `abaabil/radio/styled` | no |\n| `abaabil/radio/a11y` | yes |\n| `abaabil/select` | no |\n| `abaabil/select/styled` | no |\n| `abaabil/select/a11y` | yes |\n| `abaabil/accordion` | no |\n| `abaabil/accordion/styled` | no |\n| `abaabil/accordion/a11y` | no |\n| `abaabil/textarea` | no |\n| `abaabil/textarea/styled` | no |\n| `abaabil/textarea/a11y` | yes |\n| `abaabil/switch` | no |\n| `abaabil/switch/styled` | no |\n| `abaabil/switch/a11y` | yes |\n| `abaabil/popover` | no |\n| `abaabil/popover/styled` | no |\n| `abaabil/popover/a11y` | no |\n| `abaabil/tabs` | yes |\n| `abaabil/tabs/styled` | yes (see note) |\n| `abaabil/tabs/a11y` | yes |\n| `abaabil/alert` | no |\n| `abaabil/alert/styled` | no |\n| `abaabil/alert/a11y` | no |\n| `abaabil/progress` | no |\n| `abaabil/progress/styled` | no |\n| `abaabil/progress/a11y` | yes |\n| `abaabil/slider` | no |\n| `abaabil/slider/styled` | no |\n| `abaabil/slider/a11y` | yes |\n| `abaabil/breadcrumb` | no |\n| `abaabil/breadcrumb/styled` | no |\n| `abaabil/breadcrumb/a11y` | no |\n| `abaabil/tooltip` | no |\n| `abaabil/tooltip/styled` | no |\n| `abaabil/tooltip/a11y` | yes |\n| `abaabil/menu` | no |\n| `abaabil/menu/styled` | no |\n| `abaabil/menu/a11y` | yes |\n| `abaabil/pagination` | no |\n| `abaabil/pagination/styled` | no |\n| `abaabil/pagination/a11y` | no |\n| `abaabil/file` | no |\n| `abaabil/file/styled` | no |\n| `abaabil/file/a11y` | yes |\n| `abaabil/toolbar` | no |\n| `abaabil/toolbar/styled` | no |\n| `abaabil/toolbar/a11y` | yes |\n| `abaabil/avatar` | no |\n| `abaabil/avatar/styled` | no |\n| `abaabil/avatar/a11y` | no |\n| `abaabil/badge` | no |\n| `abaabil/badge/styled` | no |\n| `abaabil/badge/a11y` | no |\n| `abaabil/alert-dialog` | no |\n| `abaabil/alert-dialog/styled` | no |\n| `abaabil/alert-dialog/a11y` | yes |\n| `abaabil/card` | no |\n| `abaabil/card/styled` | no |\n| `abaabil/card/a11y` | yes |\n| `abaabil/collapsible` | no |\n| `abaabil/collapsible/styled` | no |\n| `abaabil/collapsible/a11y` | no |\n| `abaabil/drawer` | no |\n| `abaabil/drawer/styled` | no |\n| `abaabil/drawer/a11y` | yes |\n| `abaabil/separator` | no |\n| `abaabil/separator/styled` | no |\n| `abaabil/separator/a11y` | no |\n| `abaabil/skeleton` | no |\n| `abaabil/skeleton/styled` | no |\n| `abaabil/skeleton/a11y` | no |\n| `abaabil/spinner` | no |\n| `abaabil/spinner/styled` | no |\n| `abaabil/spinner/a11y` | no |\n| `abaabil/toast` | no |\n| `abaabil/toast/styled` | no |\n| `abaabil/toast/a11y` | yes |\n| `abaabil/toggle` | no |\n| `abaabil/toggle/styled` | no |\n| `abaabil/toggle/a11y` | no |\n| `abaabil/field` | no |\n| `abaabil/field/styled` | no |\n| `abaabil/field/a11y` | yes |\n| `abaabil/otp` | no |\n| `abaabil/otp/styled` | no |\n| `abaabil/otp/a11y` | yes |\n| `abaabil/command` | yes |\n| `abaabil/command/styled` | yes (see note) |\n| `abaabil/command/a11y` | yes |\n| `abaabil/table` | no |\n| `abaabil/table/styled` | no |\n| `abaabil/table/a11y` | yes |\n| `abaabil/navigation-menu` | no |\n| `abaabil/navigation-menu/styled` | no |\n| `abaabil/navigation-menu/a11y` | yes |\n| `abaabil/context-menu` | no |\n| `abaabil/context-menu/styled` | no |\n| `abaabil/context-menu/a11y` | yes |\n| `abaabil/menubar` | no |\n| `abaabil/menubar/styled` | no |\n| `abaabil/menubar/a11y` | yes |\n| `abaabil/carousel` | no |\n| `abaabil/carousel/styled` | no |\n| `abaabil/carousel/a11y` | yes |\n\nFifty-one of the sixty-nine entry points carry no client directive and render from a Server Component with zero client JS.\n\nNine components are server-renderable at **every** tier, `a11y` included, because they need no JavaScript at all:\n\n- **button**, which attaches handlers only when you actually pass one (see the note at the end of this section).\n- **accordion**, where exclusive open/close comes from the native `name` attribute on `<details>`.\n- **popover**, where the trigger, the top layer, light-dismiss and Escape all come from the native Popover API.\n- **alert**, which is a live region and a border.\n- **breadcrumb** and **pagination**, which are a `<nav>` and an ordered list.\n- **avatar** and **badge**, which are markup and CSS.\n- **progress** and **slider** at `normal` and `styled`; their `a11y` tiers need `useId`.\n\n**tooltip** is the interesting case: it shows and hides on `:hover` and `:focus-within`, which are selectors, so its `normal` and `styled` tiers need no JavaScript to work at all. Only the tier that adds `aria-describedby` and Escape is a client component.\n\nTwo components are client modules at every tier, because neither has a native element to build on and both need state to show one thing at a time: **combobox** and **tabs**.\n\nThe rest (dialog, input, textarea, checkbox, radio, switch, select) are server-renderable at `normal` and `styled`, and client at `a11y`, where `useId` mints the ids that wire labels and descriptions together.\n\n`abaabil/combobox/styled`, `abaabil/tabs/styled` and `abaabil/command/styled` have no literal `\"use client\"` directive of their own; they only re-export their `normal` tier, which does carry one, so the client boundary is already established there and the directive isn't duplicated. They still behave as client modules once bundled, which is why they're marked \"yes\" above.\n\nThis split is enforced at build time by `scripts/check-directives.js`, which runs as part of `npm run build` and fails the build in both directions: a required `\"use client\"` that got stripped, or an accidental one on a component that's supposed to stay server-only. That gate is checked against the built output, not just the source, so this table can't silently drift from what actually ships.\n\n`button/a11y` has no hooks and stays server-renderable even though it wires up click suppression and Space activation: it only attaches `onClick`/`onKeyDown` to the underlying element when they are actually needed (you passed a handler yourself, or the case requires suppressing a click: `disabled` with `keepFocusable`, or a disabled link-button). A plain `<Button>Save</Button>` with no handlers and no `disabled` renders with no function props at all, which is what keeps it serializable from a server module. Since passing your own `onClick` already puts you in a client component, this never puts a function prop where the flight serializer would reject it.\n\n## Props\n\nProp tables below cover the props each tier adds on top of standard HTML attributes (`className`, `id`, `aria-*`, event handlers, etc., which all pass through). \"Default\" is the value used when the prop is omitted.\n\n### Button\n\n`normal` and `styled` (`abaabil/button`, `abaabil/button/styled`):\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `as` | `string \\| Component` | `'button'` | Element or component to render. |\n| `type` | `string` | `'button'` (only when `as` renders a `<button>`) | Native button type. |\n| `className` | `string` | — | Merged with the base class. |\n\n`a11y` (`abaabil/button/a11y`), in addition to the above:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `disabled` | `boolean` | `false` | Disables the button. On a non-`button` `as`, sets `aria-disabled` and removes it from the tab order instead (elements like `<a>` have no native disabled state). |\n| `keepFocusable` | `boolean` | `false` | Use `aria-disabled` instead of the native `disabled` attribute, so the button stays focusable and screen reader users can still find it. Clicks are still suppressed. |\n| `leftIcon` | `ReactNode` | — | Rendered before the children, marked `aria-hidden`. Warns in dev if the button has no accessible name. |\n| `rightIcon` | `ReactNode` | — | Rendered after the children, marked `aria-hidden`. Same accessible-name warning as `leftIcon`. |\n\nOn a link-button, Enter is left to the browser, which follows `href` and fires the click natively; Space is turned into that same native click, so `href` and `onClick` both run from either key. A link-button always carries that Space handler, so render link-buttons at the a11y tier from a client component. `keepFocusable` on a disabled link-button keeps it in the tab order. Secondary and ghost buttons take a `--color-muted` fill on hover; each variant exposes `--btn-bg-hover` and `--btn-border-hover`, and a disabled button keeps its resting colours on hover.\n\n### Dialog\n\n`normal`/`styled` (`abaabil/dialog`, `abaabil/dialog/styled`) render a plain `<dialog>` and accept no props beyond standard HTML attributes; you drive `showModal()`/`close()` yourself through a `ref`.\n\n`a11y` (`abaabil/dialog/a11y`):\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `open` | `boolean` | `false` | Calls `showModal()`/`close()` on the underlying `<dialog>` as it changes. |\n| `onClose` | `() => void` | — | Called when the dialog closes, whether via `open` becoming `false`, Escape, or a backdrop click. |\n| `label` | `string` | — | Accessible name, rendered as the dialog's heading and wired to `aria-labelledby`. The platform supplies no name on its own; omitting this warns in dev. |\n\nPage scroll is locked from CSS while the dialog is modal (`html:has(.abaabil-dialog:modal)` with `scrollbar-gutter: stable`), so the page does not shift sideways and nothing on `body` is changed. Closing animates out through a discrete `display` and `overlay` transition. Unmounting while `open` does not fire the close event, so set `open` to `false` first if focus should return to the element that opened it.\n\n### Combobox\n\nUncontrolled at every tier: there is no `value` prop, the input manages its own text, and you observe the selection through `onChange`.\n\n`normal` (`abaabil/combobox`, `abaabil/combobox/styled`):\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `options` | `Array<{ value: string, label: string }>` | `[]` | The full option list; filtered client-side against the typed text. |\n| `placeholder` | `string` | — | Passed to the input. |\n| `onChange` | `(value: string) => void` | — | Called with the selected option's `value` when an option is chosen. |\n| `className` | `string` | — | Merged with the wrapper's base class. |\n\n`a11y` (`abaabil/combobox/a11y`), in addition to the above:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | — | Accessible name for the input, wired to `aria-labelledby`. Required for the combobox to have a usable accessible name; omitting it warns in dev. |\n| `hideLabel` | `boolean` | `false` | Visually hides the label (it is always present in the accessibility tree). Set to `true` to visually hide it. |\n| `onChange` | `(value: string \\| null) => void` | — | Called with the selected option's `value`, or `null` when the query is cleared via Escape. |\n\n### Input\n\n`normal` and `styled` (`abaabil/input`, `abaabil/input/styled`):\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `type` | `string` | `'text'` | Native input type. |\n| `className` | `string` | - | Merged with the base class. |\n\n`a11y` (`abaabil/input/a11y`), in addition to the above:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Rendered as a real `<label>`, associated with the input via `htmlFor`/`id`. |\n| `hideLabel` | `boolean` | `false` | Visually hides the label (it is always present in the accessibility tree, still a real `<label>` associated via `htmlFor`/`id`). Set to `true` to visually hide it. Matches combobox's `hideLabel` semantics and default. |\n| `description` | `string` | - | Rendered as help text and wired into `aria-describedby`. |\n| `error` | `string` | - | Rendered as an error message, sets `aria-invalid`, and is wired into `aria-describedby` alongside the description. |\n| `required` | `boolean` | `false` | Passed to the underlying input. |\n| `id` | `string` | - | Overrides the generated input id. |\n\nThis is the tier that carries `input`'s reason for existing: a real associated `<label>` (not just `aria-label`), `description` and `error` both joined into a single `aria-describedby`, and `aria-invalid` set when `error` is present. If you pass your own `aria-describedby`, it's merged with the generated description/error ids, not discarded. Without a `label` (and no `aria-label`/`aria-labelledby`), the input has no accessible name and this tier warns in dev.\n\n`className` and `style` land on the wrapper (`.abaabil-input-group`), which is the flex item in your layout; every other prop lands on the input. The description and error ids derive from the control id: `id=\"email\"` gives `email-description` and `email-error`, the same shape as Field. The error is not a live region: it is read with the control as part of its description, the same policy as Select and Field. The label draws a required mark from the control's own `required` attribute, as Field does.\n\n### Checkbox\n\n`normal` and `styled` (`abaabil/checkbox`, `abaabil/checkbox/styled`):\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `className` | `string` | - | Merged with the base class. |\n\n`a11y` (`abaabil/checkbox/a11y`), in addition to the above:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Accessible name, rendered as a real `<label>`. The platform supplies none on its own; omitting it warns in dev. |\n| `description` | `string` | - | Rendered text, wired into `aria-describedby`. |\n| `indeterminate` | `boolean` | `false` | Puts the checkbox in a mixed state. `indeterminate` is a DOM property, not an HTML attribute, so it cannot be set through JSX at all; this tier applies it to the underlying input via a ref and an effect, and mirrors it to `aria-checked=\"mixed\"` so it's also exposed correctly to assistive tech. |\n| `id` | `string` | - | Overrides the generated input id. |\n\nA consumer-supplied `ref` composes with the ref this tier uses internally for `indeterminate`, so passing your own doesn't silently break it.\n\n`CheckboxGroup` (`abaabil/checkbox/a11y` only; there is no `normal`/`styled` version) renders a `<fieldset>`/`<legend>` pair, the accessible way to group checkboxes under a shared label:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Group label, rendered as the `<legend>`. |\n| `className` | `string` | - | Merged with the group wrapper's base class. |\n\nThe `<label>` wraps the control and its text, so the whole row, gap included, is the click target; that is how the 18px box (36 by 20 track for Switch) meets the 24px target size of WCAG 2.5.8. The description is a sibling beneath the label, indented under the text, and not part of the label, so it is never read as the name. Its id derives from the control id: `id=\"terms\"` gives `terms-description`. In Windows forced-colors mode the mark is painted in `CanvasText` so the state stays visible.\n\n### Radio\n\n`normal` and `styled` (`abaabil/radio`, `abaabil/radio/styled`):\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `className` | `string` | - | Merged with the base class. |\n\n`a11y` (`abaabil/radio/a11y`), in addition to the above:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Accessible name, rendered as a real `<label>`. Omitting it warns in dev. |\n| `description` | `string` | - | Rendered text, wired into `aria-describedby`. |\n| `name` | `string` | inherited from `RadioGroup` | Overrides the shared name a `RadioGroup` ancestor supplies through context. |\n| `id` | `string` | - | Overrides the generated input id. |\n\n`RadioGroup` shares one `name` with every descendant `Radio` through context, which is what makes them one native group rather than several independent radios. This matters because nothing visible tells you when it's broken: radios that don't share a `name` render fine, but arrow-key navigation and single-selection both key off that shared attribute, so an ungrouped set silently allows multiple radios to appear selected at once.\n\n`RadioGroup` (`abaabil/radio/a11y` only) renders a `<fieldset>`/`<legend>` pair and supplies that shared `name`, generating one via `useId` if you don't pass one:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Group label, rendered as the `<legend>`. |\n| `name` | `string` | generated via `useId` | Shared name for every radio in the group. |\n| `className` | `string` | - | Merged with the group wrapper's base class. |\n\nThe `<label>` wraps the control and its text, so the whole row, gap included, is the click target; that is how the 18px box (36 by 20 track for Switch) meets the 24px target size of WCAG 2.5.8. The description is a sibling beneath the label, indented under the text, and not part of the label, so it is never read as the name. Its id derives from the control id: `id=\"terms\"` gives `terms-description`. In Windows forced-colors mode the mark is painted in `CanvasText` so the state stays visible.\n\n### Select\n\n`normal` and `styled` (`abaabil/select`, `abaabil/select/styled`) render a real native `<select>`, styled, not a custom listbox:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `options` | `Array<{ value: string, label: string }>` | - | Rendered as `<option>` elements. Only consulted when given; pass `children` instead for `<optgroup>` or hand-written `<option>` markup, since the two never fight over which one renders. |\n| `className`, `style` | `string`, `object` | - | Land on the wrapper (`.abaabil-select-group`), which is the flex item in your layout; every other prop lands on the select. |\n\n`a11y` (`abaabil/select/a11y`), in addition to the above:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Accessible name, rendered as a real `<label>`. |\n| `hideLabel` | `boolean` | `false` | Visually hides the label (it is always present in the accessibility tree, still a real `<label>` associated via `htmlFor`/`id`). Set to `true` to visually hide it. Matches combobox's `hideLabel` semantics and default. |\n| `description` | `string` | - | Rendered and wired into `aria-describedby`. |\n| `error` | `string` | - | Rendered, sets `aria-invalid`, and is joined into `aria-describedby` alongside the description. |\n| `id` | `string` | - | Overrides the generated select id. |\n\nCSS customizable select (`appearance: base-select`) was deliberately not used to build this. It is not Baseline: support is Chrome 135 only, with no Firefox support at all, far above this library's Chrome 116 / Firefox 125 / Safari 17 floor.\n\nThe description and error ids derive from the control id, the same shape as Field, and the label draws a required mark from the control's own `required` attribute.\n\n### Accordion\n\nAccordion is the only component whose every tier, including `a11y`, is server-renderable: no `\"use client\"`, no hooks, no JavaScript. Exclusive open/close (opening one panel closes its siblings) comes entirely from the native `name` attribute on `<details>`.\n\n`Disclosure` (`abaabil/accordion`, `abaabil/accordion/styled`), a single native `<details>`/`<summary>` pair:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `summary` | `ReactNode` | - | Content for the `<summary>` element. |\n| `className` | `string` | - | Merged with the base class. |\n| `summaryClassName` | `string` | - | Merged with the summary's base class. |\n\n`Accordion` (`abaabil/accordion`, `abaabil/accordion/styled`), a list of `Disclosure`s that share a `name`:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `items` | `Array<{ key?, summary, children? }>` | - | One entry per disclosure. |\n| `name` | `string` | - | Shared native group name, unique on the page. Required for exclusive open/close; without it more than one panel can be open at a time. |\n| `className` | `string` | - | Merged onto the wrapping element. |\n\n`a11y` (`abaabil/accordion/a11y`): `Disclosure` is re-exported unchanged, since `<summary>` already carries the correct implicit role and expanded/collapsed state and there's nothing this tier can add to a single disclosure. `Accordion_a11y`, in addition to `Accordion`'s props above:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Accessible name for the group as a whole. When given, applies `role=\"group\"` and `aria-label` to the wrapper. Left unset by default: an unnamed group announces to screen readers as \"group\" with no name, which is worse than not grouping at all, and each panel's own summary text already names it. |\n\n**Deliberate limitation:** `Accordion_a11y` offers no `headingLevel` prop, and this is intentional, not an oversight. `<summary>` has an implicit ARIA role of `button` in some browsers, and a heading nested inside a button is not reliably exposed to assistive technology (VoiceOver, for one, does not expose a heading nested inside `<summary>` as a heading). The reverse, wrapping `<summary>` in a heading element, isn't an option either: `<summary>` must be the literal first child of `<details>` for the browser to recognize it as the disclosure trigger. Consumers who need reliable heading navigation across sections need the button-in-heading accordion pattern instead (an explicit heading wrapping a button, with `aria-expanded` and `aria-controls`), a different, ARIA-driven widget that this component does not attempt to be.\n\nExclusive open/close (opening one panel closes its siblings) comes entirely from the native `name` attribute on `<details>`, so pass a `name` that is unique on the page. `Accordion_a11y` warns in development when there are two or more items and no `name`.\n\n### Textarea\n\n`normal` / `styled` (`abaabil/textarea`, `abaabil/textarea/styled`):\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `rows` | `number` | `3` | Visible line count. The browser default of 2 is too short to read back what you typed. |\n| `className` | `string` | - | Merged with the base class. |\n\n`a11y` (`abaabil/textarea/a11y`), the same wiring as Input on a `<textarea>`:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Rendered as a real `<label>`, associated via `htmlFor`/`id`. |\n| `hideLabel` | `boolean` | `false` | Hide the label visually. It stays in the accessibility tree. |\n| `description` | `string` | - | Help text, wired into `aria-describedby`. |\n| `error` | `string` | - | Error message. Sets `aria-invalid` and joins `aria-describedby`. |\n| `required` | `boolean` | `false` | |\n| `id` | `string` | - | Overrides the generated id. |\n\n`className` and `style` land on the wrapper (`.abaabil-textarea-group`), which is the flex item in your layout; every other prop lands on the textarea. The description and error ids derive from the control id: `id=\"email\"` gives `email-description` and `email-error`, the same shape as Field. The error is not a live region: it is read with the control as part of its description, the same policy as Select and Field. The label draws a required mark from the control's own `required` attribute, as Field does.\n\n### Switch\n\n`normal` / `styled` (`abaabil/switch`, `abaabil/switch/styled`) render `<input type=\"checkbox\" role=\"switch\">`.\n\nThe role is in the `normal` tier, not held back for `a11y`, because it is this component's identity rather than wiring, the same way `<dialog>` and `<details>` are for the components built on them. There is no native switch element, so the role is the only thing that makes a switch a switch; without it the component would be `abaabil/checkbox` with different CSS, and the styled tier would look like a switch while announcing itself as a checkbox.\n\nThere is no `aria-checked`. The native `checked` property already exposes the state, and a second copy of a piece of state is a second copy that can disagree with the first.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `className` | `string` | - | Merged with the base class. |\n\n`a11y` (`abaabil/switch/a11y`):\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Accessible name. The platform does not supply one. |\n| `description` | `string` | - | Rendered text, wired via `aria-describedby`. |\n| `id` | `string` | - | Overrides the generated id. |\n\nDeliberately not included: visible \"On\"/\"Off\" text beside the control. A switch already announces its state from `checked`, so rendering the same state as adjacent text means a screen reader says it twice. Render your own and mark it `aria-hidden` if you want it visible.\n\nThe `<label>` wraps the control and its text, so the whole row, gap included, is the click target; that is how the 18px box (36 by 20 track for Switch) meets the 24px target size of WCAG 2.5.8. The description is a sibling beneath the label, indented under the text, and not part of the label, so it is never read as the name. Its id derives from the control id: `id=\"terms\"` gives `terms-description`. In Windows forced-colors mode the mark is painted in `CanvasText` so the state stays visible.\n\n### Popover\n\nBuilt on the native Popover API. The trigger, the top layer, light-dismiss and Escape all come from the browser, so **all three tiers ship zero JavaScript** and all three are server-renderable.\n\n`id` is required rather than generated. Generating one would mean `useId`, which would mean a client boundary, which would cost this component the only property that makes it interesting.\n\n`Popover` (all tiers), trigger and panel together, rendered as a fragment so nothing is added to your layout:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `id` | `string` | - | Panel id; also wires the trigger. Required. |\n| `trigger` | `ReactNode` | - | Button content. |\n| `triggerProps` | `object` | - | Spread onto the button. |\n| `mode` | `'auto' \\| 'manual'` | `'auto'` | `auto` light-dismisses and closes on Escape; `manual` does neither. |\n\n`PopoverTrigger` and `PopoverPanel` are also exported from every tier, for placing the two apart.\n\n`a11y` (`abaabil/popover/a11y`) adds a name for the panel, which is the one thing the platform does not supply:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Accessible name for the panel, as `aria-label`. |\n| `labelledBy` | `string` | - | Id of an element naming the panel. Use instead of `label` when the panel renders a visible heading, so the name is not said twice. |\n\nDeliberately not included: `aria-expanded` on the trigger. With no JavaScript it could only ever be a static value, and a static `aria-expanded` is worse than none, because it states a fact that stops being true the moment the popover opens. Browsers expose the `popovertarget` relationship natively.\n\n### Tabs\n\nThe W3C APG tabs pattern. Tabs have no native element behind them, so unlike most of this library every tier is a client module: showing one panel at a time needs state.\n\n`normal` / `styled` (`abaabil/tabs`, `abaabil/tabs/styled`) give you the structure and the selection, with no ARIA and no keyboard handling:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `items` | `Array<{ key?, label, children? }>` | - | One entry per tab. |\n| `defaultIndex` | `number` | `0` | Tab selected on first render. |\n| `onChange` | `(index: number) => void` | - | Called with the newly selected index. |\n| `className` | `string` | - | Merged with the base class. |\n\n`a11y` (`abaabil/tabs/a11y`) adds the roles, the pairing, the roving tabindex and the arrow keys, plus:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Accessible name for the tablist. |\n| `labelledBy` | `string` | - | Id of an element naming the tablist. |\n| `orientation` | `'horizontal' \\| 'vertical'` | `'horizontal'` | Chooses the arrow pair and sets `aria-orientation`. |\n| `activation` | `'automatic' \\| 'manual'` | `'automatic'` | `automatic` selects as focus moves, which is the APG's recommendation when rendering a panel is cheap. `manual` moves focus without selecting; Enter or Space commits. |\n\nUncontrolled, like the combobox: observe the selection through `onChange`.\n\n`orientation=\"vertical\"` lays the list beside the panel. The list wraps when the tabs do not fit the width. ArrowLeft and ArrowRight follow the visual direction in a right-to-left document.\n\n### Alert\n\n`normal` / `styled` (`abaabil/alert`, `abaabil/alert/styled`):\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `variant` | `'info' \\| 'success' \\| 'warning' \\| 'danger'` | `'info'` | Applied as `data-variant`. |\n| `className` | `string` | - | Merged with the base class. |\n\n`a11y` (`abaabil/alert/a11y`) adds the live-region semantics, which are the whole difference between a coloured box and a message anyone using a screen reader finds out about. The role follows the variant, because the right answer is the same every time and getting it wrong is the common failure: `info` and `success` get `role=\"status\"` (polite), `warning` and `danger` get `role=\"alert\"` (interrupting).\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `variant` | `'info' \\| 'success' \\| 'warning' \\| 'danger'` | `'info'` | Also selects the role. |\n| `live` | `'polite' \\| 'assertive' \\| 'off'` | from `variant` | Overrides the politeness the variant implies. `off` drops the role entirely. |\n| `title` | `string` | - | Rendered above the message as `<strong>`, not a heading: an alert is usually not a section of the document, and a stray heading damages the outline for anyone navigating by headings. |\n\n**Read this before using it.** A live region is announced when its *contents change*, and assistive tech has to be watching the region before that happens. An alert that arrives in the DOM already carrying its message may not be announced at all, and behaviour differs between screen readers. If the message appears in response to something the user did, render the component with empty children from the start and fill it in, rather than mounting the whole alert at the moment you have something to say. Rendered empty it paints nothing.\n\n### Progress\n\nNative `<progress>`. Omit `value` for an indeterminate bar; it has no default, because defaulting it to 0 would turn every unknown-duration operation into one claiming to be 0% done.\n\n`normal` / `styled`:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `value` | `number` | - | Omit for indeterminate. |\n| `max` | `number` | `100` | |\n| `className` | `string` | - | Merged with the base class. |\n\n`a11y` adds the label wiring and the one thing people get wrong about a progress bar, which is what it announces:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Rendered as a real `<label>`. |\n| `hideLabel` | `boolean` | `false` | Hide it visually; it stays in the accessibility tree. |\n| `description` | `string` | - | Help text, wired into `aria-describedby`. |\n| `valueText` | `string` | - | Announced instead of the percentage. A bare `<progress value=\"3\" max=\"8\">` says \"38 percent\"; pass `\"3 of 8 files\"` when the number means something else. |\n\nUnder `prefers-reduced-motion`, an indeterminate bar shows static stripes instead of a partial fill, so it cannot be read as a percentage.\n\n### Slider\n\nNative `<input type=\"range\">`. The keyboard support, the min/max/step arithmetic and the announced role all come from the platform, which is why this is under 200 bytes at the lower tiers.\n\n`normal` / `styled`:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `min` / `max` / `step` | `number` | `0` / `100` / `1` | |\n| `className` | `string` | - | Merged with the base class. |\n\n`a11y`:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Rendered as a real `<label>`. |\n| `hideLabel` | `boolean` | `false` | |\n| `description` | `string` | - | Wired into `aria-describedby`. |\n| `showValue` | `boolean` | `false` | Renders the value in an `<output>`, marked `aria-hidden` because the input already announces it. |\n| `formatValue` | `(value: number) => string` | - | Sets `aria-valuetext` and the visible output. A price slider announces \"50\" without it. |\n\nUncontrolled by default; pass `defaultValue` and read `onChange`. An uncontrolled slider starts at the midpoint, matching the native thumb.\n\nThe slider's pointer target is 44px tall (WCAG 2.5.8); the visible track and thumb are unchanged. `showValue` snaps the displayed value to `step` the same way the browser snaps the thumb.\n\n### Breadcrumb\n\nA `<nav>` around an ordered list, because the order is the information. All three tiers are server-renderable.\n\nThe separator is drawn in CSS, never rendered as text, so a screen reader is not reading punctuation between the steps.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `items` | `Array<{ key?, label, href? }>` | - | Root first. An item with no `href` renders as text. |\n| `className` | `string` | - | |\n\n`a11y` adds the two things a hand-rolled breadcrumb almost always misses:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | `'Breadcrumb'` | Names the `<nav>`. A page usually has several navigation landmarks, and unnamed ones are announced as \"navigation, navigation, navigation\". |\n| `linkCurrent` | `boolean` | `false` | By default the last item renders as text even if given an `href`, because a link to the page you are on is a link that does nothing. Either way it gets `aria-current=\"page\"`. |\n\n### Tooltip\n\n**Read this before using one.** A tooltip is the control most often used for the wrong job.\n\n- **Never put essential information in one.** There is no hover on touch, so it is simply unreachable there.\n- **Never put interactive content in one.** Moving towards a link inside a tooltip dismisses the tooltip. If you need that, you want a popover.\n- **The trigger must be focusable.** A tooltip on a plain `<span>` does not exist for keyboard users. The `a11y` tier warns when its child cannot receive props.\n\nShowing and hiding is done in CSS, by `:hover` and `:focus-within`. Those are the two events that should reveal a tooltip and both are expressible as selectors, so the `normal` and `styled` tiers need no JavaScript.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `content` | `ReactNode` | - | The tooltip text. |\n| `placement` | `'top' \\| 'bottom'` | `'top'` | |\n| `children` | `ReactElement` | - | The trigger. |\n\n`a11y` adds the two things CSS cannot: `aria-describedby` from the trigger to the bubble, which is what makes a screen reader read it at all, and Escape to dismiss, which WCAG 1.4.13 requires for content revealed on hover. It clones the child to attach them, so the trigger stays your element rather than a wrapper of ours.\n\nThe bubble is positioned inside the wrapper, not in the top layer, so an ancestor with `overflow` other than `visible` (a table cell, a card, a scrolling toolbar) clips it, and `placement=\"top\"` on a trigger at the top of the viewport is cut off; use `placement=\"bottom\"` in a page header. Hover shows after 300ms so sweeping across a toolbar does not flash every tooltip; focus shows instantly.\n\n### Menu\n\nThe W3C APG menu button pattern, on top of the native Popover API. The browser supplies the top layer, the outside-click dismissal and Escape; this component supplies the menu semantics and keyboard.\n\nLike popover, `id` is required rather than generated.\n\n**When not to use it.** `role=\"menu\"` means a list of *actions*, in the application-menu sense. A button revealing a few navigation links is not a menu, and marking it up as one makes a screen reader announce a widget the user then cannot operate as one. Use `abaabil/popover` with links in it.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `id` | `string` | - | Panel id; also wires the trigger. Required. |\n| `trigger` | `ReactNode` | - | Button content. |\n| `items` | `Array<{ key?, label, href?, onSelect?, disabled? }>` | - | An item with `href` renders an `<a>`, otherwise a `<button>`. |\n| `triggerProps` | `object` | - | Spread onto the trigger button. A `className` in it is merged with `abaabil-menu__trigger`, not swapped for it. |\n\n`a11y` adds:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Names the menu itself. Without it the panel is `aria-labelledby` the trigger, so the menu is named by whatever the trigger says. Without it the menu is named by its trigger. |\n\nplus `aria-haspopup`, a live `aria-expanded` kept in step with the panel's own `toggle` event, `role=\"menu\"`/`role=\"menuitem\"`, a roving tabindex, Up/Down with wrapping, Home/End, multi-character typeahead, Tab to close, and focus moving to the first item on open and back to the trigger on close.\n\nAn item with `href` renders an `<a>`, otherwise a `<button>`. A disabled `href` item keeps its element but loses the `href`; `a11y` marks it `aria-disabled`, the other tiers `data-disabled`.\n\n### Pagination\n\nA `<nav>` around an ordered list of real links, so each page is a URL you can open in a new tab, bookmark and share. A paginator built from buttons takes all of that away for nothing. Server-renderable at every tier.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `page` | `number` | - | Current page, 1-based. |\n| `pageCount` | `number` | - | Total pages. |\n| `href` | `(page) => string` | - | Builds each page's URL. |\n| `siblings` | `number` | `1` | Pages shown either side of the current one before the list collapses. |\n| `className` | `string` | - | |\n\nThe gap is drawn in CSS, never rendered as text, so an ellipsis is never read out between numbers. It also only ever appears when it stands in for **two or more** pages: a gap replacing a single number takes the same room and says less.\n\n`a11y` adds the four things a hand-rolled paginator usually misses:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | `'Pagination'` | Names the `<nav>`. See the note below if a page has two paginators. |\n| `pageLabel` | `(n) => string` | `` `Page ${n}` `` | Names each number. A link whose whole content is \"7\" is announced as \"7\", which in a list of links means nothing. Replace to translate. |\n| `previousLabel` | `string` | `'Previous page'` | |\n| `nextLabel` | `string` | `'Next page'` | |\n\nplus `aria-current=\"page\"` on the current page. At either end, Previous and Next are not links at all, so nothing dead stays in the tab order.\n\nA page with a paginator above the list and another below it has two\nnavigation landmarks with the same name, which screen reader users hear\nas \"navigation, navigation\" with nothing to tell them apart. Give the\nsecond one its own `label`. The component cannot do this for you: from\ninside a single paginator there is no way to know another exists.\n\n```jsx\n<Pagination label=\"Results, top\" page={p} pageCount={n} href={href} />\n<Pagination label=\"Results, bottom\" page={p} pageCount={n} href={href} />\n```\n\n### File\n\nA native `<input type=\"file\">`, not a `<button>` with a hidden input behind it. That pattern has to reimplement the label association, the keyboard activation and the announcement of the chosen file, and usually manages one of the three. The real control does all three, and it is stylable: `::file-selector-button` is a real pseudo-element.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `className` | `string` | - | Merged with the base class. |\n\n`a11y` adds the same label, description and error wiring as `input`:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Rendered as a real `<label>`. |\n| `hideLabel` | `boolean` | `false` | |\n| `description` | `string` | - | Wired into `aria-describedby`. |\n| `error` | `string` | - | Sets `aria-invalid` and joins `aria-describedby`. |\n| `required` | `boolean` | `false` | |\n\nIt also warns when you pass `accept` without a `description`. `accept` filters the file dialog silently: it is never announced, and it does not apply to a file dropped onto the control. Say what you take in words.\n\n`className` and `style` land on the wrapper (`.abaabil-file-group`), which is the flex item in your layout; every other prop lands on the input. The description and error ids derive from the control id: `id=\"email\"` gives `email-description` and `email-error`, the same shape as Field. The error is not a live region: it is read with the control as part of its description, the same policy as Select and Field. The label draws a required mark from the control's own `required` attribute, as Field does.\n\n### Toolbar\n\nThe W3C APG toolbar pattern. The point of it is the tab sequence: a row of eight buttons is eight stops on the way to the rest of the page, and as a toolbar it is one, with the arrow keys moving between the controls inside. A toolbar that does not do that is a `<div>` with a role on it.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `orientation` | `'horizontal' \\| 'vertical'` | `'horizontal'` | Chooses the arrow pair. |\n| `className` | `string` | - | |\n\n`a11y` adds `role=\"toolbar\"`, `aria-orientation`, a roving tabindex, arrow keys following the orientation, and Home/End:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Accessible name. An unnamed toolbar is announced as \"toolbar\" and nothing else. |\n| `labelledBy` | `string` | - | Id of an element naming it. |\n\nIt takes arbitrary children rather than an `items` array, because a toolbar's contents are heterogeneous by definition, and manages `tabindex` on its focusable descendants directly: cloning would only reach the top level. A control that needs the arrows itself, such as a `<select>` or a text field, keeps them.\n\nClicking or focusing a control makes it the stop, so the next Tab into the toolbar returns to the last used control; a control that disables itself is caught by a `MutationObserver` on `disabled`. A consumer `onKeyDown` or `onFocus` runs before the toolbar's own. Arrow keys follow the visual direction in a right-to-left document.\n\n### Avatar\n\nAn image when there is one, initials when there is not. There is no fallback-on-load-error, which would need state and make every tier a client component for a case the server usually already knows about: pass no `src` and you get initials.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `src` | `string` | - | Omit for initials. |\n| `name` | `string` | - | Used for the initials. |\n| `alt` | `string` | `''` | Empty by default, which is right more often than not. |\n| `className` | `string` | - | |\n\n`a11y` asks the question the component cannot answer for you:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `decorative` | `boolean` | `true` | Whether the avatar repeats something already on screen. |\n\nBeside a visible name an avatar is **decorative**: it says nothing the text does not, and naming it means hearing the person twice. Alone, in a stack of collaborators or a comment with no byline, it is the only thing identifying someone and needs a name, so pass `decorative={false}`.\n\nThe initials are never the accessible name. \"FA\" read aloud is not a person: when meaningful, the letters are hidden and the name is carried by a `role=\"img\"` that can hold one.\n\n### Badge\n\nA small piece of status text. Server-renderable at every tier.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `variant` | `'neutral' \\| 'info' \\| 'success' \\| 'warning' \\| 'danger'` | `'neutral'` | Applied as `data-variant`. |\n| `className` | `string` | - | |\n\n`a11y` adds the one thing that makes a badge worth a component:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `context` | `string` | - | The rest of the sentence, announced but not drawn. |\n\nA badge is shorthand that only means something beside what it is attached to. \"3\" next to an inbox icon, read out on its own in a list of everything on the page, is noise: the user hears \"three\" with no way to know three of what. `context` supplies the rest as visually hidden text, so the badge still draws \"3\" and announces \"3 unread messages\".\n\nIt is hidden text rather than `aria-label`, deliberately. A badge is a `<span>`, a span has no role, and `aria-label` is prohibited on a generic element: set it there and it is discarded, leaving the badge as unlabelled as before while looking fixed. That exact mistake shipped in this library's own popover, and is why this component does it the other way.\n\nA badge is not a live region. A count that changes while the page is open does not announce itself, and this does not make it do so; wrap it in `abaabil/alert` if the change is worth interrupting for, which for an unread count it usually is not.\n\n## Combobox: uncontrolled in 1.x\n\nThe combobox is uncontrolled in this release: it does not accept a `value` prop. Observe the selected value through the `onChange` callback instead of driving it from external state.\n\n## Browser support\n\nThe floor is Chrome 99, Firefox 98, Safari 15.4, set by `@layer` (needed from Chrome 99 and Safari 15.4) and by Firefox's `<dialog>`/`showModal()` support (Firefox 98). `:focus-visible` and `<details>`/`<summary>` need less everywhere and don't raise the floor. A few features are used only as progressive enhancement and degrade safely instead of raising it:\n\n| Feature | Needs | Degrades to |\n|---|---|---|\n| `<details name>` | Chrome 120, Firefox 130, Safari 17.2 | multiple panels open at once |\n| `@starting-style` | Chrome 117, Firefox 129, Safari 17.5 | no entry animation |\n| CSS anchor positioning | Chrome 125, Firefox 147, Safari 26 | absolute positioning, behind `@supports` |\n\n`abaabil/popover` is the one component with a floor of its own: the Popover API needs **Chrome 114, Firefox 125, Safari 17**. That is below this library's build target, so it raises nothing in practice, but it is a hard requirement rather than an enhancement. Below it, an unknown `popover` attribute is inert and the panel renders as an ordinary always-visible block under its trigger. Content stays reachable, which is why it is left that way rather than hidden, but it will not open and close. Import it only if that floor is acceptable; the other twelve components are unaffected.\n\nWhere the panel appears is a separate question from whether it works. Attaching it to its trigger needs CSS anchor positioning, which is not yet Baseline, so it is applied behind `@supports`. Without it the popover falls back to the UA default, centred in the viewport. Placing it next to the trigger any other way would mean measuring the DOM in JavaScript, which would cost this component the zero-JavaScript property that is the reason to use it.\n\n## Accessibility\n\n- The combobox implements the [WAI-ARIA Authoring Practices Guide 1.2 combobox pattern](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/).\n- Dialog modality (focus containment, inert background, Escape to close) is handled natively by the browser's `showModal()` on `<dialog>`, not by a JavaScript focus trap.\n- Checkbox's `indeterminate` is mirrored to `aria-checked=\"mixed\"`, because `indeterminate` itself is a DOM property with no attribute equivalent, so it's invisible to assistive tech unless something does this explicitly.\n- `RadioGroup` supplies the shared `name` every descendant `Radio` needs to behave as one native group; without it, arrow-key navigation and single-selection silently stop working.\n- Accordion's `a11y` tier needs no JavaScript at all: every tier, including `a11y`, is server-renderable, and exclusive open/close comes from the native `name` attribute on `<details>`.\n- Popover leans entirely on the native Popover API for the top layer, light-dismiss, Escape and the trigger-to-panel relationship. Its `a11y` tier adds only an accessible name for the panel, which is the one thing the platform does not supply.\n- Tabs implement the [WAI-ARIA Authoring Practices Guide tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/), including a roving tabindex so Tab steps past the tablist rather than through every tab in it.\n- Switch carries `role=\"switch\"` from its `normal` tier, so it never looks like a switch while announcing itself as a checkbox.\n- Alert derives `role=\"status\"` or `role=\"alert\"` from its variant, so a confirmation does not interrupt and an error does. Read the note in its props section about when live regions actually announce.\n- Menu implements the [WAI-ARIA Authoring Practices Guide menu button pattern](https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/), and its docs say when a menu is the wrong widget.\n- Tooltip shows on both hover and focus, dismisses on Escape as WCAG 1.4.13 requires, and its bubble is never a pointer target so it cannot be hovered instead of its trigger.\n- Progress accepts `valueText`, because a bar whose number is not a percentage is otherwise announced as one.\n- Slider is a native range input, so its keyboard support is the platform's rather than a reimplementation; `formatValue` sets `aria-valuetext` for values that are not self-explanatory.\n- Breadcrumb names its `<nav>` and marks the current page with `aria-current`, and draws its separators in CSS so they are never read aloud.\n- Toolbar implements the [WAI-ARIA Authoring Practices Guide toolbar pattern](https://www.w3.org/WAI/ARIA/apg/patterns/toolbar/), collapsing a row of controls to one tab stop with arrow-key movement inside.\n- Pagination names its `<nav>`, gives every number a real name rather than a bare digit, marks the current page with `aria-current`, and draws its gap in CSS so it is never read aloud.\n- File warns when `accept` is set with nothing explaining it in words, because `accept` is never announced and does not apply to a dropped file.\n- Avatar treats decorative and meaningful as different cases, and never uses the initials as the accessible name.\n- Badge carries its context as visually hidden text rather than `aria-label`, which a `<span>` discards.\n- `a11y` tiers are the recommended default for production use; `normal` and `styled` tiers exist for cases where you want to compose your own accessibility behavior.\n\n## License\n\nMIT\n\n### Separator\n\nA rule between two things. An `<hr>`, which already carries\n`role=\"separator\"`. Server-renderable at every tier.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `orientation` | `'horizontal' \\| 'vertical'` | `'horizontal'` | Applied as `data-orientation`. |\n| `className` | `string` | - | |\n\n`a11y` fixes the one thing the element gets wrong and adds one thing it\ncannot know:\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `decorative` | `boolean` | `false` | Hides it from assistive technology, for a rule that is only a visual device. |\n\nA vertical `<hr>` still reports an implicit `aria-orientation` of\nhorizontal however it is rotated in CSS, so the `a11y` tier sets it\nexplicitly. That, and being able to hide a purely decorative rule, is\nthe whole reason this is a component rather than an element.\n\nA vertical separator stretches to its flex row; outside a flex row it is an inline 1em rule.\n\n### Spinner\n\nAn indeterminate busy indicator. Server-renderable at every tier.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `size` | `'sm' \\| 'md' \\| 'lg'` | `'md'` | Applied as `data-size`. Scales with `font-size`. |\n| `className` | `string` | - | |\n\n| `a11y` prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | `'Loading'` | Announced through `role=\"status\"` when the spinner appears. |\n| `decorative` | `boolean` | `false` | Hides it, for a spinner beside text that already says what is happening. |\n\nUnder `prefers-reduced-motion` the ring stops and pulses instead. It\nstill has to indicate that work is happening, so it does not simply\nfreeze.\n\n### Skeleton\n\nA placeholder for content that has not arrived. Server-renderable at\nevery tier.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `shape` | `'text' \\| 'rect' \\| 'circle'` | `'text'` | Applied as `data-shape`. |\n| `lines` | `number` | `1` | Draws several text bars, the last one short. |\n| `width` | `string` | - | Any CSS length, as `--skeleton-width`. |\n| `height` | `string` | - | Any CSS length, as `--skeleton-height`. |\n| `className` | `string` | - | |\n\n| `a11y` prop | Type | Default | Description |\n|---|---|---|---|\n| `label` | `string` | - | Announced once through `role=\"status\"`. Put it on one skeleton per loading region, not on each. |\n\nThe `a11y` tier always hides the bars from assistive technology, with no\nway to opt out: they are a picture of a layout and read aloud they are\nnoise. Set `aria-busy` on your own container, not on the skeleton.\n\n`height` applies to every bar when `lines` is greater than one.\n\n### Card\n\nA surface with optional header and footer bands.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `header` | `ReactNode` | - | Rendered in its own band above the body. |\n| `footer` | `ReactNode` | - | Rendered in its own band below it. |\n| `className` | `string` | - | |\n\n| `a11y` prop | Type | Default | Description |\n|---|---|---|---|\n| `heading` | `ReactNode` | - | Rendered as a real heading and used as","readmeFilename":"README.md"}