{"_id":"@busy-office/ui","_rev":"9-4abfc881ba8981bbf65a46039aa960b0","name":"@busy-office/ui","dist-tags":{"latest":"0.9.0"},"versions":{"0.1.0":{"name":"@busy-office/ui","version":"0.1.0","keywords":["css","ui","framework","erp","design-system","dark-mode","density","container-queries","htmx"],"license":"MIT","_id":"@busy-office/ui@0.1.0","maintainers":[{"name":"thepfmind","email":"thepfmind@gmail.com"}],"homepage":"https://github.com/ThePFMind/busy-office-ui#readme","bugs":{"url":"https://github.com/ThePFMind/busy-office-ui/issues"},"dist":{"shasum":"9e0068d2c6daeb3029a7d792ebdd840598b94aba","tarball":"https://registry.npmjs.org/@busy-office/ui/-/ui-0.1.0.tgz","fileCount":106,"integrity":"sha512-Pgii95SbO69/B+6TnvMbpT8Q21QGn1FT2TQtbrWfneR98IK8dC/NuFgPbICraIP8zeTWwuALDNBdobuqgCqf9g==","signatures":[{"sig":"MEQCIGUehOTr6CocdvbQoCiDeaWrjp6at3V695S4+1ui81P/AiB1Ocj5I2ApqpdT+YsI4cr6lFMKIs9g9O2cJifIIT6PKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":465701},"type":"module","exports":{"./js":{"types":"./dist/js/index.d.ts","import":"./dist/js/index.js"},"./api":"./dist/api.json","./css":"./dist/css/index.css","./css/*":"./dist/css/*.css","./css/min":"./dist/css/index.min.css","./contrast":"./dist/contrast.json","./css/htmx":"./dist/css/htmx.css","./css/reset":"./dist/css/reset.css","./css/motion":"./dist/css/motion.css","./css/tokens":"./dist/css/tokens.css","./package.json":"./package.json","./css/primitives":"./dist/css/primitives.css","./js/behaviors/*":"./dist/js/behaviors/*.js","./css/components/*":"./dist/css/components/*.css","./behaviors-manifest":"./dist/behaviors.json"},"gitHead":"532a6498a2a72eaf7892f2e8b16004b840328263","scripts":{"test":"vitest run","build":"npm run build:css && npm run build:js && npm run build:api && npm run build:behaviors && npm run check:contrast","pretest":"npm run build:js","build:js":"tsc -p tsconfig.json","lint:css":"stylelint \"src/css/**/*.css\"","build:api":"node scripts/extract-api.mjs","build:css":"node scripts/build-component-css.mjs","new:component":"node scripts/new-component.mjs","check:contrast":"node scripts/check-contrast.mjs","build:behaviors":"node scripts/extract-behaviors.mjs"},"_npmUser":{"name":"thepfmind","email":"thepfmind@gmail.com"},"repository":{"url":"git+https://github.com/ThePFMind/busy-office-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.16.0","description":"CSS-first ERP UI framework: semantic components, density-aware tokens, modern CSS, zero runtime dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"26.3.0","browserslist":["chrome >= 119","edge >= 119","firefox >= 128","safari >= 17.4"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","cssnano":"^7.0.6","postcss":"^8.4.47","stylelint":"^16.10.0","typescript":"^5.6.3","autoprefixer":"^10.4.20","postcss-import":"^16.1.0","postcss-nesting":"^13.0.1","postcss-custom-media":"^11.0.5"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.0_1786781734726_0.8217573547827242","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@busy-office/ui","version":"0.1.1","keywords":["css","ui","framework","erp","design-system","dark-mode","density","container-queries","htmx"],"license":"MIT","_id":"@busy-office/ui@0.1.1","maintainers":[{"name":"thepfmind","email":"thepfmind@gmail.com"}],"homepage":"https://github.com/Busy-Office/busy-office-ui#readme","bugs":{"url":"https://github.com/Busy-Office/busy-office-ui/issues"},"dist":{"shasum":"137186c2d8ed68ee9ec913401781e5591c7d1fd3","tarball":"https://registry.npmjs.org/@busy-office/ui/-/ui-0.1.1.tgz","fileCount":104,"integrity":"sha512-Few096EnCfZlh+vdyYq+LFYo6NGrIlz+39nFDk0q3FHq9Szkl62k2js6QqoY8YQhbl+8lgxs0uo4REb1yc587Q==","signatures":[{"sig":"MEYCIQCWZFVC1qNniGH4tRubO7/PxbKMCniEG+0/JanTYlrY7AIhAO1X8Zw4uYc9u8MexeNQ7isGjnucVVxo30PrfXqJrJ+6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@busy-office%2fui@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":462254},"type":"module","exports":{"./js":{"types":"./dist/js/index.d.ts","import":"./dist/js/index.js"},"./api":"./dist/api.json","./css":"./dist/css/index.css","./css/*":"./dist/css/*.css","./css/min":"./dist/css/index.min.css","./contrast":"./dist/contrast.json","./css/htmx":"./dist/css/htmx.css","./css/reset":"./dist/css/reset.css","./css/motion":"./dist/css/motion.css","./css/tokens":"./dist/css/tokens.css","./package.json":"./package.json","./css/primitives":"./dist/css/primitives.css","./js/behaviors/*":"./dist/js/behaviors/*.js","./css/components/*":"./dist/css/components/*.css","./behaviors-manifest":"./dist/behaviors.json"},"gitHead":"4929c586ee7afe61937bb56b932c09c33e34f06b","scripts":{"test":"vitest run","build":"npm run build:css && npm run build:js && npm run build:api && npm run build:behaviors && npm run check:contrast","pretest":"npm run build:js","build:js":"tsc -p tsconfig.json","lint:css":"stylelint \"src/css/**/*.css\"","build:api":"node scripts/extract-api.mjs","build:css":"node scripts/build-component-css.mjs","new:component":"node scripts/new-component.mjs","check:contrast":"node scripts/check-contrast.mjs","build:behaviors":"node scripts/extract-behaviors.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4f55316a-3cb4-4ff6-97ab-293dcf1ef521"}},"repository":{"url":"git+https://github.com/Busy-Office/busy-office-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"12.0.2","description":"CSS-first ERP UI framework: semantic components, density-aware tokens, modern CSS, zero runtime dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.23.2","browserslist":["chrome >= 119","edge >= 119","firefox >= 128","safari >= 17.4"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","cssnano":"^7.0.6","postcss":"^8.4.47","stylelint":"^16.10.0","typescript":"^5.6.3","autoprefixer":"^10.4.20","postcss-import":"^16.1.0","postcss-nesting":"^13.0.1","postcss-custom-media":"^11.0.5"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.1_1786788724844_0.917388483826513","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@busy-office/ui","version":"0.3.0","keywords":["css","ui","framework","erp","design-system","dark-mode","density","container-queries","htmx"],"license":"MIT","_id":"@busy-office/ui@0.3.0","maintainers":[{"name":"thepfmind","email":"thepfmind@gmail.com"}],"homepage":"https://github.com/Busy-Office/busy-office-ui#readme","bugs":{"url":"https://github.com/Busy-Office/busy-office-ui/issues"},"bin":{"bo-check-markup":"scripts/check-markup.mjs"},"dist":{"shasum":"99afb9fbd77ef7112d9525939517cf3818b9914e","tarball":"https://registry.npmjs.org/@busy-office/ui/-/ui-0.3.0.tgz","fileCount":175,"integrity":"sha512-E6e9krDHd7ieu8ph7cC17TE96hS3G/5G2LqhV5VbMEiegkuQug6IjivVwfV9NQ1M7woVBEV2PBChdzlD10gqFg==","signatures":[{"sig":"MEUCIFu/RNqqD+49kipmIqXSHex5gas+QhhsH4T7Yg7x8BuaAiEAkbSS2GwUfYAPBtJpqooAZh+HNPURjemQ5MCYO2Sq2FA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@busy-office%2fui@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1128910},"type":"module","exports":{"./js":{"types":"./dist/js/index.d.ts","import":"./dist/js/index.js"},"./acr":"./dist/acr.json","./api":"./dist/api.json","./css":"./dist/css/index.css","./css/*":"./dist/css/*.css","./events":"./dist/events.json","./keymap":"./dist/keymap.json","./scales":"./dist/scales.json","./css/min":"./dist/css/index.min.css","./contrast":"./dist/contrast.json","./css/htmx":"./dist/css/htmx.css","./css/reset":"./dist/css/reset.css","./css/motion":"./dist/css/motion.css","./css/tokens":"./dist/css/tokens.css","./floor.json":"./dist/floor.json","./package.json":"./package.json","./css/primitives":"./dist/css/primitives.css","./js/behaviors/*":"./dist/js/behaviors/*.js","./css/components/*":"./dist/css/components/*.css","./behaviors-manifest":"./dist/behaviors.json"},"gitHead":"1eb60c836d5b58db9c2c94ef0ba6cc559575984b","scripts":{"test":"vitest run","build":"node scripts/generate-scales.mjs --check && npm run lint:css && npm run build:css && npm run build:js && npm run build:api && npm run build:behaviors && npm run build:events && npm run build:keymap && npm run check:contrast && npm run check:composited && npm run check:rtl && npm run check:motion && npm run build:acr && npm run build:floor && npm run build:rf-essentials && npm run check:rf-floor && node scripts/stamp-readme.mjs --check && npm run check:package","pretest":"npm run build:js","build:js":"tsc -p tsconfig.json","lint:css":"stylelint \"src/css/**/*.css\"","build:acr":"node scripts/extract-acr.mjs","build:api":"node scripts/extract-api.mjs","build:css":"node scripts/build-component-css.mjs","check:rtl":"node scripts/check-rtl.mjs","gen:scales":"node scripts/generate-scales.mjs","build:floor":"node scripts/derive-floor.mjs","build:events":"node scripts/extract-events.mjs","build:keymap":"node scripts/extract-keymap.mjs","check:markup":"node scripts/check-markup.mjs","check:motion":"node scripts/check-motion.mjs","check:package":"node scripts/check-package.mjs","new:component":"node scripts/new-component.mjs","check:contrast":"node scripts/check-contrast.mjs","check:rf-floor":"node scripts/check-rf-floor.mjs","build:behaviors":"node scripts/extract-behaviors.mjs","check:composited":"node scripts/check-composited.mjs","build:rf-essentials":"node scripts/build-rf-essentials.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4f55316a-3cb4-4ff6-97ab-293dcf1ef521"}},"repository":{"url":"git+https://github.com/Busy-Office/busy-office-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.19.0","description":"CSS-first ERP UI framework: semantic components, density-aware tokens, modern CSS, zero runtime dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.23.2","browserslist":["chrome >= 119","edge >= 119","firefox >= 128","safari >= 17.4"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","cssnano":"^7.0.6","postcss":"^8.4.47","stylelint":"^16.10.0","typescript":"^5.6.3","autoprefixer":"^10.4.20","browserslist":"^4.28.8","caniuse-lite":"^1.0.30001809","postcss-import":"^16.1.0","postcss-nesting":"^13.0.1","postcss-custom-media":"^11.0.5","@mdn/browser-compat-data":"^8.0.11"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.3.0_1787447021521_0.8154792976645269","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@busy-office/ui","version":"0.4.0","keywords":["css","ui","framework","erp","design-system","dark-mode","density","container-queries","htmx"],"license":"MIT","_id":"@busy-office/ui@0.4.0","maintainers":[{"name":"thepfmind","email":"thepfmind@gmail.com"}],"homepage":"https://github.com/Busy-Office/busy-office-ui#readme","bugs":{"url":"https://github.com/Busy-Office/busy-office-ui/issues"},"bin":{"bo-check-markup":"scripts/check-markup.mjs"},"dist":{"shasum":"b2097f3be31fda85b25b2e5c8eb0bd8d12f93389","tarball":"https://registry.npmjs.org/@busy-office/ui/-/ui-0.4.0.tgz","fileCount":177,"integrity":"sha512-NZAbXqX3rJmWHCj7u80zS9rxnTfVfn2MREkvixKa+thN30D6UgI1gnQOaFxKqAt0z54uDJLawzuqC2qYnSL9nQ==","signatures":[{"sig":"MEYCIQD2Iddj5+wqz0Vr9t83LuzuefV5oqk/n0AsYSrl8XctGAIhALd/UpBnONaChfgg1xSfr+oSNpk8jcopfj/Ggkm7pBMl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@busy-office%2fui@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1148707},"type":"module","exports":{"./js":{"types":"./dist/js/index.d.ts","import":"./dist/js/index.js"},"./acr":"./dist/acr.json","./api":"./dist/api.json","./css":"./dist/css/index.css","./css/*":"./dist/css/*.css","./events":"./dist/events.json","./keymap":"./dist/keymap.json","./scales":"./dist/scales.json","./css/min":"./dist/css/index.min.css","./contrast":"./dist/contrast.json","./css/htmx":"./dist/css/htmx.css","./css/reset":"./dist/css/reset.css","./css/motion":"./dist/css/motion.css","./css/tokens":"./dist/css/tokens.css","./floor.json":"./dist/floor.json","./package.json":"./package.json","./css/primitives":"./dist/css/primitives.css","./js/behaviors/*":"./dist/js/behaviors/*.js","./css/components/*":"./dist/css/components/*.css","./behaviors-manifest":"./dist/behaviors.json"},"gitHead":"4669b239106d66ee6e7cbf8b9c1c1b75b5ffe7ce","scripts":{"test":"vitest run","build":"node scripts/generate-scales.mjs --check && npm run lint:css && npm run build:css && npm run build:js && npm run build:api && npm run build:behaviors && npm run build:events && npm run build:keymap && npm run check:contrast && npm run check:composited && npm run check:rtl && npm run check:motion && npm run build:acr && npm run build:floor && npm run build:rf-essentials && npm run check:rf-floor && node scripts/stamp-readme.mjs --check && npm run check:package","pretest":"npm run build:js","build:js":"tsc -p tsconfig.json","lint:css":"stylelint \"src/css/**/*.css\"","build:acr":"node scripts/extract-acr.mjs","build:api":"node scripts/extract-api.mjs","build:css":"node scripts/build-component-css.mjs","check:rtl":"node scripts/check-rtl.mjs","gen:scales":"node scripts/generate-scales.mjs","build:floor":"node scripts/derive-floor.mjs","build:events":"node scripts/extract-events.mjs","build:keymap":"node scripts/extract-keymap.mjs","check:markup":"node scripts/check-markup.mjs","check:motion":"node scripts/check-motion.mjs","check:package":"node scripts/check-package.mjs","new:component":"node scripts/new-component.mjs","check:contrast":"node scripts/check-contrast.mjs","check:rf-floor":"node scripts/check-rf-floor.mjs","build:behaviors":"node scripts/extract-behaviors.mjs","check:composited":"node scripts/check-composited.mjs","build:rf-essentials":"node scripts/build-rf-essentials.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4f55316a-3cb4-4ff6-97ab-293dcf1ef521"}},"repository":{"url":"git+https://github.com/Busy-Office/busy-office-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.19.0","description":"CSS-first ERP UI framework: semantic components, density-aware tokens, modern CSS, zero runtime dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.23.2","browserslist":["chrome >= 119","edge >= 119","firefox >= 128","safari >= 17.4"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","cssnano":"^7.0.6","postcss":"^8.4.47","stylelint":"^16.10.0","typescript":"^5.6.3","autoprefixer":"^10.4.20","browserslist":"^4.28.8","caniuse-lite":"^1.0.30001809","postcss-import":"^16.1.0","postcss-nesting":"^13.0.1","postcss-custom-media":"^11.0.5","@mdn/browser-compat-data":"^8.0.11"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.4.0_1787466257697_0.18964709330349283","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@busy-office/ui","version":"0.5.0","keywords":["css","ui","framework","erp","design-system","dark-mode","density","container-queries","htmx"],"license":"MIT","_id":"@busy-office/ui@0.5.0","maintainers":[{"name":"thepfmind","email":"thepfmind@gmail.com"}],"homepage":"https://github.com/Busy-Office/busy-office-ui#readme","bugs":{"url":"https://github.com/Busy-Office/busy-office-ui/issues"},"bin":{"bo-check-markup":"scripts/check-markup.mjs"},"dist":{"shasum":"7be940610db6bdb8e6a3bab0d6789644c44a35ac","tarball":"https://registry.npmjs.org/@busy-office/ui/-/ui-0.5.0.tgz","fileCount":179,"integrity":"sha512-CK42b+V17o5C1dcKWhXCH+1uzHdstrgetlAnHZZu31/wD9r12SToyZpaKlQkM0w1qRQaGYgItF5z2uk3a+6F2w==","signatures":[{"sig":"MEYCIQDlqiC77XfcoshS75O1fQw43qAxH3swMTo0pYJxuA/SkQIhAOHfNm3dPAHTj2Mc7bEt0OXGr3i07l+JQEnR9joi0ces","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@busy-office%2fui@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1179948},"type":"module","exports":{"./js":{"types":"./dist/js/index.d.ts","import":"./dist/js/index.js"},"./acr":"./dist/acr.json","./api":"./dist/api.json","./css":"./dist/css/index.css","./css/*":"./dist/css/*.css","./events":"./dist/events.json","./keymap":"./dist/keymap.json","./scales":"./dist/scales.json","./css/min":"./dist/css/index.min.css","./contrast":"./dist/contrast.json","./css/htmx":"./dist/css/htmx.css","./css/reset":"./dist/css/reset.css","./css/motion":"./dist/css/motion.css","./css/tokens":"./dist/css/tokens.css","./floor.json":"./dist/floor.json","./package.json":"./package.json","./css/primitives":"./dist/css/primitives.css","./js/behaviors/*":"./dist/js/behaviors/*.js","./css/components/*":"./dist/css/components/*.css","./behaviors-manifest":"./dist/behaviors.json"},"gitHead":"c6c5c673f119755e12bad5699a4903661431efe8","scripts":{"test":"vitest run","build":"node scripts/generate-scales.mjs --check && npm run lint:css && npm run build:css && npm run build:js && npm run build:api && npm run build:behaviors && npm run build:events && npm run build:keymap && npm run check:contrast && npm run check:composited && npm run check:rtl && npm run check:motion && npm run build:acr && npm run build:floor && npm run build:rf-essentials && npm run check:rf-floor && node scripts/stamp-readme.mjs --check && npm run check:package","pretest":"npm run build:js","build:js":"tsc -p tsconfig.json","lint:css":"stylelint \"src/css/**/*.css\"","build:acr":"node scripts/extract-acr.mjs","build:api":"node scripts/extract-api.mjs","build:css":"node scripts/build-component-css.mjs","check:rtl":"node scripts/check-rtl.mjs","gen:scales":"node scripts/generate-scales.mjs","build:floor":"node scripts/derive-floor.mjs","build:events":"node scripts/extract-events.mjs","build:keymap":"node scripts/extract-keymap.mjs","check:markup":"node scripts/check-markup.mjs","check:motion":"node scripts/check-motion.mjs","check:package":"node scripts/check-package.mjs","new:component":"node scripts/new-component.mjs","check:contrast":"node scripts/check-contrast.mjs","check:rf-floor":"node scripts/check-rf-floor.mjs","build:behaviors":"node scripts/extract-behaviors.mjs","check:composited":"node scripts/check-composited.mjs","build:rf-essentials":"node scripts/build-rf-essentials.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4f55316a-3cb4-4ff6-97ab-293dcf1ef521"}},"repository":{"url":"git+https://github.com/Busy-Office/busy-office-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.19.0","description":"CSS-first ERP UI framework: semantic components, density-aware tokens, modern CSS, zero runtime dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.23.2","browserslist":["chrome >= 119","edge >= 119","firefox >= 128","safari >= 17.4"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","cssnano":"^7.0.6","postcss":"^8.4.47","stylelint":"^16.10.0","typescript":"^5.6.3","autoprefixer":"^10.4.20","browserslist":"^4.28.8","caniuse-lite":"^1.0.30001809","postcss-import":"^16.1.0","postcss-nesting":"^13.0.1","postcss-custom-media":"^11.0.5","@mdn/browser-compat-data":"^8.0.11"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.5.0_1787489476700_0.19896740944813396","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@busy-office/ui","version":"0.6.0","keywords":["css","ui","framework","erp","design-system","dark-mode","density","container-queries","htmx"],"license":"MIT","_id":"@busy-office/ui@0.6.0","maintainers":[{"name":"thepfmind","email":"thepfmind@gmail.com"}],"homepage":"https://github.com/Busy-Office/busy-office-ui#readme","bugs":{"url":"https://github.com/Busy-Office/busy-office-ui/issues"},"bin":{"bo-check-markup":"scripts/check-markup.mjs"},"dist":{"shasum":"e2d0ae9baba7a2b0ce20c4a673649e350129a71a","tarball":"https://registry.npmjs.org/@busy-office/ui/-/ui-0.6.0.tgz","fileCount":182,"integrity":"sha512-qibcJPb+G6v8I5XWipUSpZfICm+k1TQ6mSrNTFPFAVa4Z5SuR2IVfF+LNgQqpwCclXC4b9Min+E8M/E2eI4Elg==","signatures":[{"sig":"MEUCIDks2/H9FtfODlpensGq45JazAlstfzvR7AgYZm6hkFkAiEAryDdYrv5qJ0NRENEvV0F+pPVv/EvDZEJM0xbKaGeVvQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@busy-office%2fui@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1404060},"type":"module","exports":{"./js":{"types":"./dist/js/index.d.ts","import":"./dist/js/index.js"},"./acr":"./dist/acr.json","./api":"./dist/api.json","./css":"./dist/css/index.css","./css/*":"./dist/css/*.css","./events":"./dist/events.json","./keymap":"./dist/keymap.json","./scales":"./dist/scales.json","./css/min":"./dist/css/index.min.css","./contrast":"./dist/contrast.json","./css/htmx":"./dist/css/htmx.css","./css/reset":"./dist/css/reset.css","./css/motion":"./dist/css/motion.css","./css/tokens":"./dist/css/tokens.css","./floor.json":"./dist/floor.json","./package.json":"./package.json","./css/primitives":"./dist/css/primitives.css","./js/behaviors/*":"./dist/js/behaviors/*.js","./css/components/*":"./dist/css/components/*.css","./behaviors-manifest":"./dist/behaviors.json"},"gitHead":"fffae6c31e16f4ac9c9fa6b894aff2510f65e02d","scripts":{"test":"vitest run","build":"node scripts/generate-scales.mjs --check && npm run lint:css && npm run build:css && npm run build:js && npm run build:api && npm run build:behaviors && npm run build:events && npm run build:keymap && npm run check:contrast && npm run check:composited && npm run check:rtl && npm run check:motion && npm run check:sticky-layers && npm run build:acr && npm run build:floor && npm run build:rf-essentials && npm run check:rf-floor && npm run check:token-refs && node scripts/stamp-readme.mjs --check && npm run check:package","pretest":"npm run build:js","build:js":"tsc -p tsconfig.json","lint:css":"stylelint \"src/css/**/*.css\"","build:acr":"node scripts/extract-acr.mjs","build:api":"node scripts/extract-api.mjs","build:css":"node scripts/build-component-css.mjs","check:rtl":"node scripts/check-rtl.mjs","gen:scales":"node scripts/generate-scales.mjs","build:floor":"node scripts/derive-floor.mjs","build:events":"node scripts/extract-events.mjs","build:keymap":"node scripts/extract-keymap.mjs","check:markup":"node scripts/check-markup.mjs","check:motion":"node scripts/check-motion.mjs","check:package":"node scripts/check-package.mjs","new:component":"node scripts/new-component.mjs","check:contrast":"node scripts/check-contrast.mjs","check:rf-floor":"node scripts/check-rf-floor.mjs","build:behaviors":"node scripts/extract-behaviors.mjs","check:composited":"node scripts/check-composited.mjs","check:token-refs":"node scripts/check-token-refs.mjs","report:css-repeats":"node scripts/report-css-repeats.mjs","build:rf-essentials":"node scripts/build-rf-essentials.mjs","check:sticky-layers":"node scripts/check-sticky-layers.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4f55316a-3cb4-4ff6-97ab-293dcf1ef521"}},"repository":{"url":"git+https://github.com/Busy-Office/busy-office-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.19.1","description":"CSS-first ERP UI framework: semantic components, density-aware tokens, modern CSS, zero runtime dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.23.2","browserslist":["chrome >= 119","edge >= 119","firefox >= 128","safari >= 17.4"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","cssnano":"^7.0.6","postcss":"^8.4.47","stylelint":"^16.10.0","typescript":"^5.6.3","autoprefixer":"^10.4.20","browserslist":"^4.28.8","caniuse-lite":"^1.0.30001809","postcss-import":"^16.1.0","postcss-nesting":"^13.0.1","postcss-custom-media":"^11.0.5","@mdn/browser-compat-data":"^8.0.11"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.6.0_1788011949355_0.8417373822327185","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@busy-office/ui","version":"0.7.0","keywords":["css","ui","framework","erp","design-system","dark-mode","density","container-queries","htmx"],"license":"MIT","_id":"@busy-office/ui@0.7.0","maintainers":[{"name":"thepfmind","email":"thepfmind@gmail.com"}],"homepage":"https://github.com/Busy-Office/busy-office-ui#readme","bugs":{"url":"https://github.com/Busy-Office/busy-office-ui/issues"},"bin":{"bo-check-markup":"scripts/check-markup.mjs"},"dist":{"shasum":"33f56bbaccd5263ae9c06e5dd9ab51fb6fb5aa7c","tarball":"https://registry.npmjs.org/@busy-office/ui/-/ui-0.7.0.tgz","fileCount":182,"integrity":"sha512-6mtnVW5X4bPr3GdPvwhiJl2kzFG2s8abBweUHyiGCjqUuM1wHqc+IWXq5FmBsndHk121LJwnBrc2XEyWVkPneA==","signatures":[{"sig":"MEYCIQCEe5pBxOE9cRfc2GIF/dAGbWv7VkhKYaE3mQkMTyTCHAIhAOiCuQgeamGZc/M/lGkpgAfjzn6fqqPzrZ8i5GC87aUF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@busy-office%2fui@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1440841},"type":"module","exports":{"./js":{"types":"./dist/js/index.d.ts","import":"./dist/js/index.js"},"./acr":"./dist/acr.json","./api":"./dist/api.json","./css":"./dist/css/index.css","./css/*":"./dist/css/*.css","./events":"./dist/events.json","./keymap":"./dist/keymap.json","./scales":"./dist/scales.json","./css/min":"./dist/css/index.min.css","./contrast":"./dist/contrast.json","./css/htmx":"./dist/css/htmx.css","./css/reset":"./dist/css/reset.css","./css/motion":"./dist/css/motion.css","./css/tokens":"./dist/css/tokens.css","./floor.json":"./dist/floor.json","./package.json":"./package.json","./css/primitives":"./dist/css/primitives.css","./js/behaviors/*":"./dist/js/behaviors/*.js","./css/components/*":"./dist/css/components/*.css","./behaviors-manifest":"./dist/behaviors.json"},"gitHead":"d338755b40ad9093d724fb0387bc5887fbf302bd","scripts":{"test":"vitest run","build":"node scripts/generate-scales.mjs --check && npm run lint:css && npm run build:css && npm run build:js && npm run build:api && npm run build:behaviors && npm run build:events && npm run build:keymap && npm run check:contrast && npm run check:composited && npm run check:rtl && npm run check:motion && npm run check:sticky-layers && npm run build:acr && npm run build:floor && npm run build:rf-essentials && npm run check:rf-floor && npm run check:token-refs && node scripts/stamp-readme.mjs --check && npm run check:package","pretest":"npm run build:js","build:js":"tsc -p tsconfig.json","lint:css":"stylelint \"src/css/**/*.css\"","build:acr":"node scripts/extract-acr.mjs","build:api":"node scripts/extract-api.mjs","build:css":"node scripts/build-component-css.mjs","check:rtl":"node scripts/check-rtl.mjs","gen:scales":"node scripts/generate-scales.mjs","build:floor":"node scripts/derive-floor.mjs","build:events":"node scripts/extract-events.mjs","build:keymap":"node scripts/extract-keymap.mjs","check:markup":"node scripts/check-markup.mjs","check:motion":"node scripts/check-motion.mjs","check:package":"node scripts/check-package.mjs","new:component":"node scripts/new-component.mjs","check:contrast":"node scripts/check-contrast.mjs","check:rf-floor":"node scripts/check-rf-floor.mjs","build:behaviors":"node scripts/extract-behaviors.mjs","check:composited":"node scripts/check-composited.mjs","check:token-refs":"node scripts/check-token-refs.mjs","report:css-repeats":"node scripts/report-css-repeats.mjs","build:rf-essentials":"node scripts/build-rf-essentials.mjs","check:sticky-layers":"node scripts/check-sticky-layers.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4f55316a-3cb4-4ff6-97ab-293dcf1ef521"}},"repository":{"url":"git+https://github.com/Busy-Office/busy-office-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.19.1","description":"CSS-first ERP UI framework: semantic components, density-aware tokens, modern CSS, zero runtime dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.23.2","browserslist":["chrome >= 119","edge >= 119","firefox >= 128","safari >= 17.4"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","cssnano":"^7.0.6","postcss":"^8.4.47","stylelint":"^16.10.0","typescript":"^5.6.3","autoprefixer":"^10.4.20","browserslist":"^4.28.8","caniuse-lite":"^1.0.30001809","postcss-import":"^16.1.0","postcss-nesting":"^13.0.1","postcss-custom-media":"^11.0.5","@mdn/browser-compat-data":"^8.0.11"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.7.0_1788092916504_0.9956198077543119","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@busy-office/ui","version":"0.8.0","keywords":["css","ui","framework","erp","design-system","dark-mode","density","container-queries","htmx"],"license":"MIT","_id":"@busy-office/ui@0.8.0","maintainers":[{"name":"thepfmind","email":"thepfmind@gmail.com"}],"homepage":"https://github.com/Busy-Office/busy-office-ui#readme","bugs":{"url":"https://github.com/Busy-Office/busy-office-ui/issues"},"bin":{"bo-check-markup":"scripts/check-markup.mjs"},"dist":{"shasum":"e27bf54cfe556861fe546ef3be1aee65cc0d2561","tarball":"https://registry.npmjs.org/@busy-office/ui/-/ui-0.8.0.tgz","fileCount":184,"integrity":"sha512-5O51BaSt9tu/ff5uIGuGx9jZcLHwlJjFRQTK0ZI7V/rRef6qVu/hurooS3Ggig3hqF17GNv+BT2/1A2wJMNV7g==","signatures":[{"sig":"MEYCIQDNl+zwCL4jYTR31s+RpsUY4ZkGy7nPyLFtTtfbQ8bR1gIhANZB5/QjffUPmPuIHoiSV+7Iq/cWPJ0JztDSk3dn+ZlK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@busy-office%2fui@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1602166},"type":"module","exports":{"./js":{"types":"./dist/js/index.d.ts","import":"./dist/js/index.js"},"./acr":"./dist/acr.json","./api":"./dist/api.json","./css":"./dist/css/index.css","./css/*":"./dist/css/*.css","./events":"./dist/events.json","./keymap":"./dist/keymap.json","./scales":"./dist/scales.json","./css/min":"./dist/css/index.min.css","./contrast":"./dist/contrast.json","./css/htmx":"./dist/css/htmx.css","./css/reset":"./dist/css/reset.css","./css/motion":"./dist/css/motion.css","./css/tokens":"./dist/css/tokens.css","./floor.json":"./dist/floor.json","./package.json":"./package.json","./css/primitives":"./dist/css/primitives.css","./js/behaviors/*":"./dist/js/behaviors/*.js","./introduced.json":"./dist/introduced.json","./css/components/*":"./dist/css/components/*.css","./behaviors-manifest":"./dist/behaviors.json"},"gitHead":"2a4bb245246490013405417e04121c6dc1899ba7","scripts":{"test":"vitest run","build":"node scripts/generate-scales.mjs --check && npm run lint:css && npm run build:css && npm run build:js && npm run build:api && npm run build:behaviors && npm run build:events && npm run build:keymap && npm run check:contrast && npm run check:composited && npm run check:rtl && npm run check:motion && npm run check:sticky-layers && npm run build:acr && npm run build:floor && npm run build:introduced && npm run build:rf-essentials && npm run check:rf-floor && npm run check:token-refs && npm run check:size && npm run check:readme-facts && node scripts/stamp-readme.mjs --check && npm run check:package","pretest":"npm run build:js","build:js":"tsc -p tsconfig.json","lint:css":"stylelint \"src/css/**/*.css\"","build:acr":"node scripts/extract-acr.mjs","build:api":"node scripts/extract-api.mjs","build:css":"node scripts/build-component-css.mjs","check:rtl":"node scripts/check-rtl.mjs","check:size":"node scripts/check-size.mjs","gen:scales":"node scripts/generate-scales.mjs","build:floor":"node scripts/derive-floor.mjs","build:events":"node scripts/extract-events.mjs","build:keymap":"node scripts/extract-keymap.mjs","check:markup":"node scripts/check-markup.mjs","check:motion":"node scripts/check-motion.mjs","check:package":"node scripts/check-package.mjs","new:component":"node scripts/new-component.mjs","check:contrast":"node scripts/check-contrast.mjs","check:rf-floor":"node scripts/check-rf-floor.mjs","build:behaviors":"node scripts/extract-behaviors.mjs","build:introduced":"node scripts/derive-introduced.mjs","check:composited":"node scripts/check-composited.mjs","check:token-refs":"node scripts/check-token-refs.mjs","build:readme-facts":"node scripts/derive-readme-facts.mjs","check:readme-facts":"node scripts/derive-readme-facts.mjs --check","refresh:introduced":"node scripts/derive-introduced.mjs --refresh","report:css-repeats":"node scripts/report-css-repeats.mjs","build:rf-essentials":"node scripts/build-rf-essentials.mjs","check:sticky-layers":"node scripts/check-sticky-layers.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4f55316a-3cb4-4ff6-97ab-293dcf1ef521"}},"repository":{"url":"git+https://github.com/Busy-Office/busy-office-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.19.1","description":"CSS-first ERP UI framework: semantic components, density-aware tokens, modern CSS, zero runtime dependencies.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.23.2","browserslist":["chrome >= 119","edge >= 119","firefox >= 128","safari >= 17.4"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","cssnano":"^7.0.6","postcss":"^8.4.47","stylelint":"^16.10.0","typescript":"^5.6.3","autoprefixer":"^10.4.20","browserslist":"^4.28.8","caniuse-lite":"^1.0.30001809","postcss-import":"^16.1.0","postcss-nesting":"^13.0.1","postcss-custom-media":"^11.0.5","@mdn/browser-compat-data":"^8.0.11"},"_npmOperationalInternal":{"tmp":"tmp/ui_0.8.0_1788702056226_0.765091914244814","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"_id":"@busy-office/ui@0.9.0","bin":{"bo-check-markup":"scripts/check-markup.mjs"},"bugs":{"url":"https://github.com/Busy-Office/busy-office-ui/issues"},"dist":{"shasum":"0d4dd87deffb7e0b0eab13b49e9e138d2c3b7c9a","tarball":"https://registry.npmjs.org/@busy-office/ui/-/ui-0.9.0.tgz","fileCount":185,"integrity":"sha512-6bs+SgV4PoBGefgFfOp/B4DfYkb5fPPN8D+Ph/ixWkh022abik/VCNomuwX6AD+8KMVVcRNYJlWOTBPiWAEitw==","signatures":[{"sig":"MEQCID6S22dRboiYHRf0inbbljchLb8FpYcq3IhBRTH4AtswAiBgi/ANXI8jWTdMNNbJciZ08GCbjkR1dQy/YAPNmQNmkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIF09dOewN/deAVwJW3gR5Tj8CkqkKuzklWKK4nqtcudZAiBXmLIMR8CRCzILgc3p21Ao65sgZEqsyIRyfncedwpXrQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@busy-office%2fui@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1185574},"name":"@busy-office/ui","type":"module","exports":{"./js":{"types":"./dist/js/index.d.ts","import":"./dist/js/index.js"},"./acr":"./dist/acr.json","./api":"./dist/api.json","./css":"./dist/css/index.css","./css/*":"./dist/css/*.css","./events":"./dist/events.json","./keymap":"./dist/keymap.json","./scales":"./dist/scales.json","./css/min":"./dist/css/index.min.css","./contrast":"./dist/contrast.json","./css/htmx":"./dist/css/htmx.css","./css/reset":"./dist/css/reset.css","./css/motion":"./dist/css/motion.css","./css/tokens":"./dist/css/tokens.css","./floor.json":"./dist/floor.json","./package.json":"./package.json","./css/primitives":"./dist/css/primitives.css","./js/behaviors/*":"./dist/js/behaviors/*.js","./introduced.json":"./dist/introduced.json","./css/components/*":"./dist/css/components/*.css","./behaviors-manifest":"./dist/behaviors.json"},"gitHead":"116f6e8677ca0d0c794491e49b73b6b3e8c3fb30","license":"Apache-2.0","scripts":{"test":"vitest run","build":"node scripts/generate-scales.mjs --check && npm run lint:css && npm run build:css && npm run build:js && npm run build:api && npm run build:behaviors && npm run build:events && npm run build:keymap && npm run check:contrast && npm run check:composited && npm run check:rtl && npm run check:motion && npm run check:sticky-layers && npm run check:print-tokens && npm run build:acr && npm run build:floor && npm run build:introduced && npm run build:rf-essentials && npm run check:rf-floor && npm run check:token-refs && npm run check:size && npm run check:readme-facts && node scripts/stamp-readme.mjs --check && npm run check:package","pretest":"npm run build:js","build:js":"tsc -p tsconfig.json","lint:css":"stylelint \"src/css/**/*.css\"","build:acr":"node scripts/extract-acr.mjs","build:api":"node scripts/extract-api.mjs","build:css":"node scripts/build-component-css.mjs","check:rtl":"node scripts/check-rtl.mjs","check:size":"node scripts/check-size.mjs","gen:scales":"node scripts/generate-scales.mjs","build:floor":"node scripts/derive-floor.mjs","build:events":"node scripts/extract-events.mjs","build:keymap":"node scripts/extract-keymap.mjs","check:markup":"node scripts/check-markup.mjs","check:motion":"node scripts/check-motion.mjs","check:package":"node scripts/check-package.mjs","new:component":"node scripts/new-component.mjs","check:contrast":"node scripts/check-contrast.mjs","check:rf-floor":"node scripts/check-rf-floor.mjs","build:behaviors":"node scripts/extract-behaviors.mjs","build:introduced":"node scripts/derive-introduced.mjs","check:composited":"node scripts/check-composited.mjs","check:token-refs":"node scripts/check-token-refs.mjs","build:readme-facts":"node scripts/derive-readme-facts.mjs","check:print-tokens":"node scripts/check-print-tokens.mjs","check:readme-facts":"node scripts/derive-readme-facts.mjs --check","refresh:introduced":"node scripts/derive-introduced.mjs --refresh","report:css-repeats":"node scripts/report-css-repeats.mjs","build:rf-essentials":"node scripts/build-rf-essentials.mjs","check:sticky-layers":"node scripts/check-sticky-layers.mjs"},"version":"0.9.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4f55316a-3cb4-4ff6-97ab-293dcf1ef521"}},"homepage":"https://github.com/Busy-Office/busy-office-ui#readme","keywords":["css","ui","framework","erp","design-system","dark-mode","density","container-queries","htmx"],"repository":{"url":"git+https://github.com/Busy-Office/busy-office-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.20.0","description":"CSS-first ERP UI framework: semantic components, density-aware tokens, modern CSS, zero runtime dependencies.","directories":{},"maintainers":[{"name":"thepfmind","email":"thepfmind@gmail.com"}],"sideEffects":["*.css"],"_nodeVersion":"22.23.2","browserslist":["chrome >= 119","edge >= 119","firefox >= 129","safari >= 17.5"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","cssnano":"^7.0.6","postcss":"^8.4.47","stylelint":"^16.10.0","typescript":"^5.6.3","autoprefixer":"^10.4.20","browserslist":"^4.28.8","caniuse-lite":"^1.0.30001809","postcss-import":"^16.1.0","postcss-nesting":"^13.0.1","postcss-custom-media":"^11.0.5","@mdn/browser-compat-data":"^8.0.11"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ui_0.9.0_1790393051585_0.7297133262010282"}}},"time":{"created":"2026-08-15T08:15:34.580Z","modified":"2026-09-26T03:24:12.142Z","0.1.0":"2026-08-15T08:15:34.872Z","0.1.1":"2026-08-15T10:12:04.999Z","0.3.0":"2026-08-23T01:03:41.678Z","0.4.0":"2026-08-23T06:24:17.849Z","0.5.0":"2026-08-23T12:51:16.842Z","0.6.0":"2026-08-29T13:59:09.512Z","0.7.0":"2026-08-30T12:28:36.698Z","0.8.0":"2026-09-06T13:40:56.356Z","0.9.0":"2026-09-26T03:24:11.779Z"},"bugs":{"url":"https://github.com/Busy-Office/busy-office-ui/issues"},"license":"Apache-2.0","homepage":"https://github.com/Busy-Office/busy-office-ui#readme","keywords":["css","ui","framework","erp","design-system","dark-mode","density","container-queries","htmx"],"repository":{"url":"git+https://github.com/Busy-Office/busy-office-ui.git","type":"git","directory":"packages/core"},"description":"CSS-first ERP UI framework: semantic components, density-aware tokens, modern CSS, zero runtime dependencies.","maintainers":[{"name":"thepfmind","email":"thepfmind@gmail.com"}],"readme":"# @busy-office/ui\n\nCSS-first UI framework for ERP and back-office screens. Semantic components — not\nutility soup — built on modern CSS: `@layer` cascade contract, `:has()`, named\ncontainer queries, native `<dialog>` and `popover`.\n<!-- stat:size -->98 kB minified (16.0 kB gzipped)<!-- /stat --> for the whole\nframework, zero runtime dependencies, tree-shakable per-component files.\n\n![Hand-made screenshot: the list-report pattern at data-density=\"compact\" — a\nsaved-view bar, a filter row, and a dense invoice table whose status column pairs\ncolour with the word, captured from the docs site at 1440px in the light\ntheme.](https://raw.githubusercontent.com/Busy-Office/busy-office-ui/main/packages/core/media/list-report-compact.png)\n\n*Above: `/patterns/list-report` at `data-density=\"compact\"`. Hand-made — a\nscreenshot, not a generated artifact, and the one image here no gate keeps\ncurrent. The same file ships in this package at `media/list-report-compact.png`.*\n\n**Docs & live demos:** https://busy-office.github.io/busy-office-ui/\n\n## Install\n\n```sh\nnpm i @busy-office/ui\n```\n\n```js\n// all-in-one\nimport \"@busy-office/ui/css\";\n\n// or à la carte — order matters: tokens, then reset, then components\nimport \"@busy-office/ui/css/tokens\";\nimport \"@busy-office/ui/css/reset\";\nimport \"@busy-office/ui/css/components/data-table\";\n```\n\nNo bundler? Copy `dist/` into your asset pipeline (Rails, Django, PHP, Go — anything)\nand link `css/index.min.css` as a plain file. The output is plain CSS and standard\nES modules; Node is never required at runtime.\n\n## Interactive components\n\nBehaviors are opt-in, call-once, and delegation-based — they survive any DOM swap\n(HTMX, Turbo, fetch-and-replace) with no re-init:\n\n```js\nimport { initDialogs, initDataTables, initTabs, initDropdowns, initAlerts }\n  from \"@busy-office/ui/js\";\ninitDialogs(); initDataTables(); initTabs(); initDropdowns(); initAlerts();\n```\n\nComponents whose docs page says \"JS required\" are inert until you call their init.\nAll <!-- stat:behaviors -->26<!-- /stat --> behaviors communicate through intent\nevents (<!-- stat:events -->`bo:cell-change`, `bo:combobox-select`, `bo:row-cancel`, `bo:row-save`, `bo:scan`, `bo:table-export`, `bo:table-load-more`, `bo:tag-add`, `bo:tag-remove`, `bo:tree-toggle`<!-- /stat -->) — your app owns the data\nlayer.\n\n## Why this framework\n\n- **Density is a first-class dimension.** `data-density=\"compact|comfortable|spacious\"`\n  on `<html>` or any wrapper remaps the size-token tier — dense grids for back-office,\n  touch targets for the warehouse tablet. Cascading, overridable per-region.\n- **Semantic HTML + one class.** `.bo-data-table`, `.bo-form-field`, `.bo-timeline`.\n  State lives in ARIA (`aria-invalid`, `aria-sort`, `aria-current`) and `data-*` —\n  styled directly, no invented state classes.\n- **The cascade is the API.** All framework CSS lives in `@layer`; anything you write\n  unlayered wins. Re-brand by remapping the semantic token tier only.\n- **Two-channel state, always.** Every state signal ships a visible non-color cue and\n  a programmatic channel — enforced by a build gate, not a style guide.\n- **HTMX-ready, not HTMX-coupled.** An opt-in stylesheet styles HTMX's lifecycle\n  classes; core never references it.\n\n## What's in the box\n\nTokens (light/dark, 3 densities) · layout primitives · buttons · badges · forms ·\ndense data tables (selection, sticky header/column, pagination, filters, toolbar,\ninline edit) · combobox & multi-select dropdown · tabs · alerts/toasts · navigation\n(navbar, sidebar, breadcrumb, off-canvas) · dialogs · dashboards · progress ·\ntree · CSS icons (`mask-image`, themable via `currentColor`) · approval timelines ·\naudit trails · wizard stepper · print/report layer.\n\nBrowser floor: **<!-- stat:floor -->Chrome/Edge 119 · Firefox 129 · Safari 17.5<!-- /stat -->**.\n\n## What it is not\n\nDeliberately not shipped — each refusal is recorded with its reasoning on the\n[scope page](https://busy-office.github.io/busy-office-ui/getting-started/scope),\nand a real adopter requirement reopens any of them:\n\n<!-- stat:notfor -->A charting engine · A rich-text editing engine · A virtualised table · A JS component framework · Page builders and WYSIWYG layout engines · Icons as a shipped set · State management, routing, i18n runtime<!-- /stat -->\n\n## When something doesn't work\n\nThis framework's failure modes are unusually *silent* — modern CSS degrades by\ndoing nothing rather than by erroring. [Troubleshooting](https://busy-office.github.io/busy-office-ui/getting-started/troubleshooting)\nis symptom → cause: <!-- stat:faq -->11 symptom→cause entries, plus “My markup looks right but nothing happens” and “Using with Tailwind or an existing reset”<!-- /stat -->.\n\nRun `npx bo-check-markup dist` over your built HTML to catch the most common\ncause — a `bo-*` class or a framework `data-*` value that does not exist. Both\nfail silently.\n\n## How it's kept honest\n\nEvery claim on this page is generated from the shipped artifact or the repo, and\nthe build runs <!-- stat:gates -->57 build gates, 24 of them heuristic detectors that each ship a `--self-test`<!-- /stat -->.\nContrast, named container queries, two-channel state signals, print behaviour and\nthe browser floor are all gated rather than aspirational.\n\n## Links\n\n- [Documentation & component gallery](https://busy-office.github.io/busy-office-ui/)\n- [Changelog](https://github.com/Busy-Office/busy-office-ui/blob/main/CHANGELOG.md)\n- [Report an issue](https://github.com/Busy-Office/busy-office-ui/issues/new/choose)\n\nApache-2.0 — see the LICENSE file in this package. Third-party notices,\nincluding the Tailwind palette the colour scales seed from, are in NOTICE.\n","readmeFilename":"README.md"}