{"_id":"@fwkui/x-css","_rev":"26-cdbc178fdf7bc783c13c9e0cda5881ee","name":"@fwkui/x-css","dist-tags":{"latest":"1.0.26"},"versions":{"1.0.0":{"name":"@fwkui/x-css","version":"1.0.0","keywords":["css","auto generate css"],"author":{"name":"Do Vui"},"license":"ISC","_id":"@fwkui/x-css@1.0.0","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"dist":{"shasum":"4a692d36c8417563a78f3af05cc1e7d178d90b6c","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.0.tgz","fileCount":4,"integrity":"sha512-qY2rmTE/0FfZ3KucEOcX2ke9cqyQgUqGU/uo2iRmw8uRirxnGnF7SBSUCNwEVCjX1XJUXGefsutJgds5VAJbmA==","signatures":[{"sig":"MEUCIGbUhf+PYIXQIEd1rIyUpnNlqKIB/5d/td07lE/K4GKpAiEA3NfpsY8/4nsF4w/ctIBMKsYmvsfhMERkxd+PcCy8sko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102758},"main":"index.js","types":"./index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"_npmVersion":"10.8.2","description":"Auto generate css","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.0_1757246348274_0.5802464628754223","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@fwkui/x-css","version":"1.0.1","keywords":["css","auto generate css"],"author":{"name":"Do Vui"},"license":"ISC","_id":"@fwkui/x-css@1.0.1","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"dist":{"shasum":"9ae1ff3e2b1f822c05bee9b87f8042b69ea620fa","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.1.tgz","fileCount":4,"integrity":"sha512-SDmVKHySA6HKDU5PR3r+ZhnkKbHLg3Ee6oW7T9wSLyAr/r/Q1f01CQ/q2awVHMjLbimWWDmH7Ci3IuQYK63YEg==","signatures":[{"sig":"MEUCIQCztjOjzGCFpVcp/7xQPTGSwRGGwD/OK+pWYKvDXatNUQIgWFsSK3fOqKb+3heGeo9lXzJAfSj2DY2QdoU3lOsVeBY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177447},"main":"index.js","types":"./index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"_npmVersion":"10.8.2","description":"Auto generate css","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.1_1757248595212_0.03235301945924651","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@fwkui/x-css","version":"1.0.2","keywords":["css","auto generate css"],"author":{"name":"Do Vui"},"license":"ISC","_id":"@fwkui/x-css@1.0.2","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"dist":{"shasum":"87d982d27b3ba1ac81343f0d7109e212cdcbfac0","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.2.tgz","fileCount":4,"integrity":"sha512-n7dKzFJSgbq12sUgSD6SAaGCiMkLpiJ3y2dwZ00WmRi2kVSgUYwgGmZNv05rQ/DBdl3OmiIgKuskv/eXgwByxA==","signatures":[{"sig":"MEYCIQDOdqjY8Iw4WOjn9n9mYjQIUFzT6/fajhEh9Q9CuFqpwwIhAKs6Czcczq7kO9e//0GnvV6d3b0M2UlERTqEIpkuAPBJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177439},"main":"index.js","types":"./index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"_npmVersion":"10.8.2","description":"Auto generate css","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.2_1757264581322_0.734919073123524","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@fwkui/x-css","version":"1.0.3","keywords":["css","auto generate css"],"author":{"name":"Do Vui"},"license":"ISC","_id":"@fwkui/x-css@1.0.3","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"dist":{"shasum":"4d7d736b9f84601dd9d4d45ebca36c55dcb6802b","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.3.tgz","fileCount":5,"integrity":"sha512-1G0DGIrsFQ8k3TU+vC6ybNaDPomS2NHXDUWfYNebKNHjKneNU0F7rx2b440tAG/hsOzW1Zj+/z63BTkpc6bqUA==","signatures":[{"sig":"MEQCIEut7FRHfXjA2axgxyerZfr+voSxcPztoeAPc7PlDDU6AiAj06xHLlfc1mq9nZDnQsny/YjEWfSyBW7JBc2Bl9wDSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218232},"main":"index.js","types":"./index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"_npmVersion":"10.8.2","description":"Auto generate css","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.3_1758903713150_0.15677640884821864","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@fwkui/x-css","version":"1.0.4","keywords":["css","auto generate css"],"author":{"name":"Do Vui"},"license":"ISC","_id":"@fwkui/x-css@1.0.4","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"dist":{"shasum":"8e50aed4cdff49dd5807c8dcaaf0f0b8043141ed","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.4.tgz","fileCount":6,"integrity":"sha512-To2dR2xx5o+D0bbgUTSH6wrOoxlp9gUQ4NrdBR2LBm6Jjwsr4pr7+NKV4xDf0hCMCh6wRwxXKVZu52A8UfaOsg==","signatures":[{"sig":"MEUCIQDEbuYCShAJYrhTB4VAhpXwj3r9hAm7hT4dMWLDJFI92wIgIJL7GZTIPnskcDupVr3+BrqT/7NnB9WjWKdu5SPKAzw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64189},"main":"index.js","types":"./index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"_npmVersion":"10.8.2","description":"Auto generate css","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.4_1766337645964_0.39431516712477754","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@fwkui/x-css","version":"1.0.6","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.6","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"dist":{"shasum":"4541190f2ff8362d0165ad620ea7d222efb30b8d","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.6.tgz","fileCount":15,"integrity":"sha512-xzM78FBjHpNlu6Csa9F99I9miFnCwAKV8y8jfmEUhZTuSDzRCP60hV8qhvq/PcVMhVt6LRD7EmdzQgME1OVkag==","signatures":[{"sig":"MEYCIQCXW0yzlyIu0HnZs89L/LZUzIJYrhaGHE0BOFSVCpVNRQIhANIUVdYc6w170c8iIs2Y4jMWtFGptYgBgkmauWpOGer1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":545509},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.6_1769504052928_0.13743719905960972","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@fwkui/x-css","version":"1.0.7","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.7","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"dist":{"shasum":"6b4c2f82165f3aea1c17a0590628f67982617bd1","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.7.tgz","fileCount":15,"integrity":"sha512-eagSRMZUpJAkHjCqoUk7QdUq9B/lsPknCJ+s8TiOq6foGpFzEhdi+CylszvTZyBXbawiOxO1+v8fACy0Klt67w==","signatures":[{"sig":"MEQCIDY7W72cHOwC3tu1zDfy1DBjyD452UKxMdOsOHsiWNvnAiBrobfFLe7B+FVRmTEal8N5KyktxihKZAcuybYq33/YmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":548936},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.7_1769533952989_0.32949216813849325","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@fwkui/x-css","version":"1.0.8","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.8","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"dist":{"shasum":"76487a6aeb92a9fe0d969d7d244f22186fe4a965","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.8.tgz","fileCount":15,"integrity":"sha512-tUtz/sJtO27hjUMbZJZ0d3sr8qSCd3S9XwofjeVkLmialywA1O8FedMj9Mi564pPzslf/6OcngsayeURESQ4Zw==","signatures":[{"sig":"MEUCIQCV8jPWpF5HYPHKgajP0UpX2ZyjEoQo3H/PFL8hVSbw3AIgVOMNN714MnHpcpeInwW0TKAZrpwox/CCEYe9sHkA/fQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":593389},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.8_1769569673945_0.08202014355652465","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@fwkui/x-css","version":"1.0.9","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.9","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"45b54e2bef6ecd75b2399960045b9ee1ee60a8d1","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.9.tgz","fileCount":15,"integrity":"sha512-rpv5/IVtx0/i6adevrQpFxQJrJ42+KTzEZglNCTBf+UjYkvsnc6r0b9EMOVEDzVWZ6cHcaSNWRxv+bkLSJXuHA==","signatures":[{"sig":"MEYCIQDIsAIXYnoXFXBGjA7w28dAVIm2q68TadZshv7Vr367nwIhAKBn5DxbvwSzUkFmWxjtiPsyTFz8hWDuijULL1hr5DXH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":595172},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"d06dd750f766d6f00403da7d37977b736a1ae8c4","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.9_1770368287786_0.7938040802315081","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@fwkui/x-css","version":"1.0.10","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.10","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"fba6ba72e1901a5dadb285baa1a9223c997598d9","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.10.tgz","fileCount":15,"integrity":"sha512-42RYzBEWjjPiFKPHTLFmAwpFMzfvUV7HxuZhQReIuklraJc6v0W9cbdz11YIzBIYC7tGBtJyogaCy5kMly+0lQ==","signatures":[{"sig":"MEQCICEby97zm3QzomWpxWXIseBM498JVzm1l6LpliKnZ6mRAiAexlku+NJesbScqNsNS+JpejSwLGi7zioIDNU6lBp4BA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":596190},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"d06dd750f766d6f00403da7d37977b736a1ae8c4","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.10_1772244699644_0.5889257642909436","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@fwkui/x-css","version":"1.0.11","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.11","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"cc2b9d86be1064042bcbd9fbdf357f3158d605ed","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.11.tgz","fileCount":15,"integrity":"sha512-gsIQFlNMWW76O/rctRZ7Fafde4SVTmhldL+BO+598OiQU4cmRTIgOGXMHTdhcVqpghE/WEBHG3mw+oLx6JaMiQ==","signatures":[{"sig":"MEYCIQDFYA7o39nIzYTharDzBh4m9N28DZjx18ABsFqvllB9aQIhAOmpOSDftQf00y2Edxjyh6MM47G0tRYwj7bzf6FarCC5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621170},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"7cb54683d190eeffdc524ca72966ee8b410286ab","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.11_1772388149162_0.07186665825737348","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@fwkui/x-css","version":"1.0.12","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.12","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"3c3d7d04df43f8cd0145c86e845051a53d505484","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.12.tgz","fileCount":16,"integrity":"sha512-7pbid34+oa1PppPBdU+7+qUw/gBwsB5rA2q5GCz3XVZKBOu7ISwLHGhIYzWtK+tbBsmTsj2AXs1wTKc5ipwr4A==","signatures":[{"sig":"MEUCIFqm4I+dwS3mL3dvZPDyV2nUAMG+oXizoDsjNsWM4Xe9AiEA5I+PfTt8EB+BhC1Yk0LRa7IoNCbe1Uy1nkoL3WigD7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":624027},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"b90ba92292af3935a5f02fe88d506210d7a2ade3","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.12_1772391305855_0.9078857376277629","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@fwkui/x-css","version":"1.0.13","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.13","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"d8c48cfcf0d8b034e55f9f463ab71684c0b5db37","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.13.tgz","fileCount":16,"integrity":"sha512-vFPestxgsj5yiKc50XDBKBliTFKYNLroLUsNXUs74gm9LLJ3aRaIRmDZNDCZNP+ubDb45VEYIvDbc2VMCD3vqA==","signatures":[{"sig":"MEYCIQDl79BNiN8ui5oc2wSXVBd4jVzs7cCrqxaOyeFZ0xOzagIhAI2eVOq7LLaGZw3HKWBxXB3Sq3v1D6r2wKVdSPgiDHQJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":639235},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"b0e9e768eddc2765dc488b0a5f2fba7f97b2947f","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.13_1772452422188_0.662284324138563","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@fwkui/x-css","version":"1.0.14","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.14","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"13d86e9402a8a0421da99652670bd9646bbda7fa","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.14.tgz","fileCount":22,"integrity":"sha512-fEHYfzwvXE3WlhpkeFTxtkJEih8o+6G7nAyub9ol98h5Z7VEmb0fsE9kD5neysu8CCUUAAifus4tprPk4RnKBQ==","signatures":[{"sig":"MEUCIQDarbC+xdYlWfdEccOfEbp8CxNAJD32jWqy9BLa+n1MgAIgH2RM/YQ5TUsw49IQ9/woLX1aPgJXck7AXFfLivn+D24=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":533567},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"39ac1c2ce0df8d1cf28f96b6e3b67d01872565c3","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.14_1772455052611_0.38963727461838293","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@fwkui/x-css","version":"1.0.15","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.15","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"86bb3a8fcceaacec8006c80c4ef643f5ba8d74c0","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.15.tgz","fileCount":22,"integrity":"sha512-+nSo/FeaORb+WYGq7HswMtlqiEzvhT2t1G/mnGUalN7BcznNyGMr9XW7AldRy/dIOGqOCgeKr0wQFW/MLqo8PQ==","signatures":[{"sig":"MEUCIGCh7UVFr0lIuENK8BRX/M2+uRAYAOrnHhhIzfzM62H5AiEAxH93EfYMPPHXLY7J1TPfipFuMogJJpDTCvzELCc4l3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":745758},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"e36d24dbc2996ca0d396a220458e58d459c9c03b","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.15_1772583930949_0.9897106916740088","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@fwkui/x-css","version":"1.0.16","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.16","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"0ae0a9f1c519db5d9cc6b570c2e512007445af17","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.16.tgz","fileCount":22,"integrity":"sha512-wEc6DdHAzsAGVnc4b0ZVYQVqBFM6guMgPI1WFi79HkJWYqyAX6sRkVmJ2UQWSBbTgeHdWKFOQCGRlf+0iWqZwA==","signatures":[{"sig":"MEQCIFnACtgUkv24eoYKsdYdD/uuHr0Yng94pxNaNp5uRWvSAiBhK9EgKHdt7src7UWmAzWk4PIqk5V7ES5LuzehKt82+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":756194},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"46e7a40cad24b3e1b08868b49ef3b652f7f7ce3a","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.16_1773217848386_0.03856493375678527","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"@fwkui/x-css","version":"1.0.17","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.17","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"ad300d185dad4ca9ab886375dbb435e060882203","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.17.tgz","fileCount":22,"integrity":"sha512-WmSwq98lvaz9h8ad9Mu3MEeSb80GoO/U335pf3R+a7NYKibdkuiLE9iX20F0D0S9HkR92Jqo2ESU7Jid+0hTDQ==","signatures":[{"sig":"MEQCIDEFjzdHIfbwMviAziBW0cpGjeXr6ET6ifRA7ER9cMB5AiBqBauZVEO/aRXpSo0ZbHwsUtpgC1JsbGUoebAt8jaPqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":741152},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"9b1d023e508e59364a7763b1fbe52b2b9b1fbece","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.17_1773764515713_0.11714016607757927","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"@fwkui/x-css","version":"1.0.18","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.18","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"ba7fde2fc6cec7793243aaf2b54e7d805f3f8f15","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.18.tgz","fileCount":22,"integrity":"sha512-X8fz3wi0j2DCM3N4VxthdtGaHVo2RWcxC3EDBZmgnuF6poPbMe36GRyA8XcWUINCIIKX13FL6fzYhtBTEXRuPQ==","signatures":[{"sig":"MEUCIQC12eU/rdOFIKsoFYdPfKAXhFGKnC9SvTlMGba8RJm+FQIgI8z5Tp2BN5pnodOG325zpligWHHHGBncG1dD7o3bbvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":752811},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"0317ab77766399fdaf74d9e4a86a940514cd825e","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.18_1773805454110_0.008080489853107942","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"@fwkui/x-css","version":"1.0.19","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.19","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"62c422cdee191bc036da28a205dae2122a023205","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.19.tgz","fileCount":22,"integrity":"sha512-sjeCBBaxox93z/pNS9t4TJeqCgnrfjiEFKNWIl7CYk80qfcpQN3fpejSV4cEA/OiwrrkkWqvefZGvYez/F8x6A==","signatures":[{"sig":"MEUCIQCwmArSuU2WpCGtfduZ2n1qzwnFTwTJj0INvSx93WiTNAIgfJGpB9j6LLVTXYmdw+zgsNkT0VH8t6+mjIeycGba13c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":749051},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"f2ed756dd5c22e3f68864cd399d7a229a13442b3","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.19_1773807696459_0.3592020538258158","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"@fwkui/x-css","version":"1.0.20","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.20","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"fd49ebdd2b4c0bf99d2efc7edaafc5b05fe6f89d","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.20.tgz","fileCount":16,"integrity":"sha512-b5HLNanis1UBvJCzmEJuE16fszJdfSUO0NpiFXNuPnXAKzkIXVZsJR1b2gGQvu4aOeBKKqTSynASKsBFRVkFhw==","signatures":[{"sig":"MEQCIF7Y9lb/uw1D5/13OqmZmqcoh6deViMrt2XQi6EkKscIAiA4kC5DHvjeVDjepOlEBpXjwPLo4/cWMjf/k7yARhtq5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":963746},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"9d2a7b092bdc20601860f63f270ad93317ae408c","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.20_1773985663643_0.5427846248041095","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"@fwkui/x-css","version":"1.0.21","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.21","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"fe9362df7a2279dbe52818d10ca3c6a5675e2561","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.21.tgz","fileCount":16,"integrity":"sha512-Dmk6THOmLvy+MDDLPEHe9wkLH2mB9XX9gNVpkOTLmN5pYtO8BqzLFhjkitMtex4nnpxo7ZCfmdkBoifPt2bh+A==","signatures":[{"sig":"MEUCIQCcn+Vyu/lwDG67eXkK3nEmxmHOYwVwGbT+cxNsmXtcswIgJPVOaSsQ6QBmMnZKmyglYsxhcqEC/PFvWDvsERCzdwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":970837},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"9d2a7b092bdc20601860f63f270ad93317ae408c","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.21_1774411413367_0.8374526743424142","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"@fwkui/x-css","version":"1.0.22","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.22","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"e71298c1c52a32414dc24017a0523ccafe0b3028","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.22.tgz","fileCount":16,"integrity":"sha512-6scCgxwc8PSvDoNNoiA4Y5pHClUv+bhSt/gjS1oQeIyv5p+3fLjBDsmVDAKcDWT3PLdH65CacbCBv5PQMz4L3g==","signatures":[{"sig":"MEUCIBfc555SbvmAzZyd80Sd1elXmb9PKruALcwzI9oqjQC6AiEA6/qhWLk6G35mSOMF2a721VM7bv4JTb+JcGS/mDMpEco=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1022745},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"9d2a7b092bdc20601860f63f270ad93317ae408c","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.22_1774509789759_0.8160081555904053","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"@fwkui/x-css","version":"1.0.23","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.23","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/dwork-dev/fwkui#readme","bugs":{"url":"https://github.com/dwork-dev/fwkui/issues"},"dist":{"shasum":"4965429dfd8f785e8b617ca97c6c6f6a38048daf","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.23.tgz","fileCount":16,"integrity":"sha512-mjRZbdYcCdkx8sJzaWXqZGDEcHFdbLMDxxy1nhgwDXi7W8FqtdkfKEXOb8K1nuMX7/bq+XAvGBvZsVOEg+Mwfw==","signatures":[{"sig":"MEUCIBSg8sUNRpgEHL9lXOne+Eas7U/s7s1+wF6sDE8d3XQpAiEAk7YKIpjpI5ZTyBg+5bCE0sVqCRkRaKuQ3JSMaKSMuXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1411005},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"68588a0bfaa1b74f955f7cb29251b37b7efc8fc0","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/dwork-dev/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.23_1776667572110_0.4857407717414288","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"@fwkui/x-css","version":"1.0.24","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.24","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/vuits24/fwkui#readme","bugs":{"url":"https://github.com/vuits24/fwkui/issues"},"dist":{"shasum":"b26a172a1ff9b5983350ee5fb5cef5da2ededbb1","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.24.tgz","fileCount":16,"integrity":"sha512-M2hFP4FNrN3lzji64JH68k6pe8g5y5UlGy72Zg5OjFcU3q27NcTkymg62HrVmPgP9mLKD5cXal5oCNvEbiRGJg==","signatures":[{"sig":"MEYCIQCzYXnu7153W6FeLqMijttlG/HTlHfwqtiVzTx8xC5jZQIhALa5uHKfdDDxIP+G5vx4HXEHvf3d9u/OJxhpR5zOzRVz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1410994},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"60a9cb563b857b6ad4a569db15061fd05dc33a45","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/vuits24/fwkui.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.24_1776668775540_0.432604309017373","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"@fwkui/x-css","version":"1.0.25","keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","_id":"@fwkui/x-css@1.0.25","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"homepage":"https://github.com/vuits24/fwkui#readme","bugs":{"url":"https://github.com/vuits24/fwkui/issues"},"dist":{"shasum":"b199566f347b662ac3ac95533be8841c7032b5df","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.25.tgz","fileCount":16,"integrity":"sha512-0E4bCl/5X6062iwAq5nYEyBjoJsJO2znU0UvqnF1tNGFar4XjgswMsMcoR5Ks2cfJFHUxqIfAphfjLGXbzf9fg==","signatures":[{"sig":"MEUCICJV7mrqu2FjiDmLgdBH2bXW7k3azB0wOidcNFR/ahtIAiEA96BCkbTY1iDLVu/tIacu4QKkI4QjmyRjwZ9E5E7o1pk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1415763},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"b795183cbf26d1e68b9c0bc0595c79e424379d93","scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"repository":{"url":"git+https://github.com/vuits24/fwkui.git","type":"git"},"_npmVersion":"11.12.1","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.0.18","typescript":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/x-css_1.0.25_1778132913783_0.5992068027102908","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"@fwkui/x-css","version":"1.0.26","description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest","test:coverage":"vitest run --coverage","lint":"eslint src/","prepublishOnly":"npm run build"},"keywords":["css","css-in-js","utility","atomic-css","typescript"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/vuits24/fwkui.git"},"bugs":{"url":"https://github.com/vuits24/fwkui/issues"},"homepage":"https://github.com/vuits24/fwkui#readme","devDependencies":{"@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","tsup":"^8.0.0","typescript":"^5.0.0","vitest":"^4.0.18"},"gitHead":"b795183cbf26d1e68b9c0bc0595c79e424379d93","_id":"@fwkui/x-css@1.0.26","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-ID6k/4ODXuA0uRwRN7RxTV4ncKi+s8nR+kNxIzKjCsYJFy+CZDKtgPRCQK/OFtDLoywDjVTNYUlx1/VbcgF+9w==","shasum":"3b8974a5511739f091e75400d53475287df49720","tarball":"https://registry.npmjs.org/@fwkui/x-css/-/x-css-1.0.26.tgz","fileCount":16,"unpackedSize":1415762,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDDWcow9C4LJ579Xe37yihZZmT6BPOZun2zfVj+IErOZAiA/GNfUz3BS/nxQ/2+u3SA96fVsZWADOgryPBfKgFROXw=="}]},"_npmUser":{"name":"vuits24","email":"vui.ts24@gmail.com"},"directories":{},"maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/x-css_1.0.26_1778477526671_0.9660705634023079"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-07T11:59:08.186Z","modified":"2026-05-11T05:32:07.075Z","1.0.0":"2025-09-07T11:59:08.458Z","1.0.1":"2025-09-07T12:36:35.411Z","1.0.2":"2025-09-07T17:03:01.510Z","1.0.3":"2025-09-26T16:21:53.358Z","1.0.4":"2025-12-21T17:20:46.115Z","1.0.6":"2026-01-27T08:54:13.158Z","1.0.7":"2026-01-27T17:12:33.158Z","1.0.8":"2026-01-28T03:07:54.147Z","1.0.9":"2026-02-06T08:58:07.974Z","1.0.10":"2026-02-28T02:11:39.887Z","1.0.11":"2026-03-01T18:02:29.324Z","1.0.12":"2026-03-01T18:55:06.097Z","1.0.13":"2026-03-02T11:53:42.337Z","1.0.14":"2026-03-02T12:37:32.790Z","1.0.15":"2026-03-04T00:25:31.134Z","1.0.16":"2026-03-11T08:30:48.594Z","1.0.17":"2026-03-17T16:21:56.004Z","1.0.18":"2026-03-18T03:44:14.325Z","1.0.19":"2026-03-18T04:21:36.634Z","1.0.20":"2026-03-20T05:47:43.823Z","1.0.21":"2026-03-25T04:03:33.545Z","1.0.22":"2026-03-26T07:23:09.944Z","1.0.23":"2026-04-20T06:46:12.270Z","1.0.24":"2026-04-20T07:06:15.681Z","1.0.25":"2026-05-07T05:48:33.957Z","1.0.26":"2026-05-11T05:32:06.935Z"},"bugs":{"url":"https://github.com/vuits24/fwkui/issues"},"license":"MIT","homepage":"https://github.com/vuits24/fwkui#readme","keywords":["css","css-in-js","utility","atomic-css","typescript"],"repository":{"type":"git","url":"git+https://github.com/vuits24/fwkui.git"},"description":"A fast, modular CSS-in-JS library with utility-first approach and static extraction support.","maintainers":[{"name":"vuits24","email":"vui.ts24@gmail.com"}],"readme":"# @fwkui/x-css\n\n`@fwkui/x-css` là utility CSS engine siêu nhẹ, parse class theo cú pháp ngắn và sinh CSS runtime theo layer + media.\n\nMục tiêu của README này:\n1. Người dùng có thể tích hợp ngay.\n2. AI có thể suy luận đúng cú pháp để sinh class dùng được ngay.\n3. QA có thể kiểm thử parser theo vector cố định.\n\n![License](https://img.shields.io/npm/l/@fwkui/x-css)\n![Version](https://img.shields.io/npm/v/@fwkui/x-css)\n\n## Cài Đặt Nhanh\n\n### 1) NPM\n\n```bash\nnpm install @fwkui/x-css\n```\n\n### 2) Dùng trực tiếp qua URL (không cần bundler)\n\nLưu ý:\n1. `dist/index.js` là CommonJS (Node).\n2. Trình duyệt dùng `dist/index.mjs` hoặc `dist/index-auto.mjs`.\n\nOption A: chủ động khởi tạo\n\n```html\n<script type=\"module\">\n  import xcss from 'https://unpkg.com/@fwkui/x-css@latest/dist/index.mjs';\n\n  xcss.cssObserve(document, {\n    dictionaryImport: true\n  });\n</script>\n```\n\nOption B: auto observe khi import\n\n```html\n<script type=\"module\" src=\"https://unpkg.com/@fwkui/x-css@latest/dist/index-auto.mjs\"></script>\n```\n\nCDN thay thế:\n`https://cdn.jsdelivr.net/npm/@fwkui/x-css@latest/dist/index.mjs`\n\n## Dùng Trong 60 Giây\n\n```js\nimport xcss from '@fwkui/x-css';\n\nxcss.cssObserve(document);\n```\n\n```html\n<button class=\"dF aiC jcC p10px;16px bdN bdra8px bgc#0a64e8 cWhite\">\n  Đăng nhập\n</button>\n```\n\n## Contract Cú Pháp\n\nMỗi utility class theo form:\n\n`[Media]:[Layer][Property][Value][@Selector]`\n\nThứ tự parse bắt buộc:\n1. `selector` (hậu tố `@...`, nằm ngoài `[]`).\n2. `media` (tiền tố trước `:`).\n3. `layer` (chuỗi số liên tiếp ở đầu).\n4. `property`.\n5. `value`.\n\nÝ nghĩa từng phần:\n1. `Media` (tùy chọn): key media như `sm`, `md`, `lg`, hoặc key custom.\n2. `Layer` (tùy chọn): số ưu tiên cascade.\n3. `Property` (bắt buộc): alias thuộc dictionary hoặc CSS property hợp lệ.\n4. `Value` (bắt buộc với utility chuẩn): giá trị CSS, alias value hoặc arbitrary value.\n5. `@Selector` (tùy chọn): ví dụ `@:hover`, `@::before`.\n\nNgoại lệ parser (special syntax):\n1. `[AliasName]`: class group alias (không dùng value trực tiếp).\n2. `&...`: nhánh selector đặc biệt theo parser hiện tại.\n\n### Media Mặc Định Và Thứ Tự Nội Bộ\n\nEngine nạp media theo thứ tự:\n\n| Thứ tự | Key | Query |\n| :--- | :--- | :--- |\n| 1 | `default` | Không bọc `@media` |\n| 2 | `xs` | `screen and (max-width: 575px)` |\n| 3 | `sm` | `screen and (min-width: 576px)` |\n| 4 | `md` | `screen and (min-width: 768px)` |\n| 5 | `lg` | `screen and (min-width: 992px)` |\n| 6 | `xl` | `screen and (min-width: 1200px)` |\n| 7 | `2xl` | `screen and (min-width: 1400px)` |\n| 8 | `sma` | `screen and (max-width: 768px)` |\n| 9 | `mda` | `screen and (max-width: 992px)` |\n| 10 | `lga` | `screen and (max-width: 1200px)` |\n| 11 | `xla` | `screen and (max-width: 1400px)` |\n\nQuy tắc custom breakpoint:\n1. `breakpoints` được nối vào sau danh sách mặc định.\n2. Nếu trùng key, key khai báo sau cùng ghi đè key trước (`last write wins`).\n\nVí dụ:\n\n```js\nxcss.cssObserve(document, {\n  breakpoints: [\n    { tablet: 'screen and (min-width: 768px)' }\n  ]\n});\n```\n\nDùng class: `tablet:dB`.\n\n### Layer Mặc Định\n\n1. Nếu không khai báo layer, engine dùng `0`.\n2. Engine tạo sẵn 24 layer: `l0 -> l23`.\n3. Nên dùng dải `0-23` để giữ thứ tự ổn định.\n4. Số layer lớn hơn có ưu tiên cascade cao hơn trong cùng media.\n\n## Quy Tắc Điểm Ngắt Đầy Đủ (Theo Parser Hiện Tại)\n\nMục tiêu là tách class thành tuple:\n`{ media, layer, property, value, selector }`\n\nThứ tự suy luận bắt buộc:\n1. Tách `selector`: lấy phần sau ký tự `@` cuối cùng, chỉ khi `@` nằm ngoài `[]`.\n2. Tách `media`: nếu còn `:` thì phần trước `:` là `media`.\n3. Tách `layer`: đọc chuỗi số liên tiếp ở đầu phần còn lại.\n4. Tách `property/value`: quét trái -> phải và dừng `property` theo bảng quyết định.\n5. Nếu phần còn lại bắt đầu bằng `&` hoặc `[` thì đi vào nhánh special syntax.\n\n### Bảng Quyết Định Khi Quét `property`\n\n| Ký tự đang xét | Điều kiện | Hành động |\n| :--- | :--- | :--- |\n| `a-z` | luôn đúng | vẫn là `property` |\n| `-` hoặc `.` | ký tự kế tiếp là số | dừng `property`, phần còn lại là `value` |\n| `-` | gặp `--` và đã có ít nhất 1 ký tự property | dừng `property`, bắt đầu `value` (CSS variable) |\n| `-` hoặc `.` | không rơi vào 2 điều kiện trên | vẫn là `property` |\n| ký tự khác (`A-Z`, `0-9`, `#`, `!`, `[`, `(`, `%`, ...) | luôn đúng | dừng `property`, phần còn lại là `value` |\n\n### Chuẩn Hóa `value` Sau Khi Tách\n\n1. Value bắt đầu bằng `!` -> thêm hậu tố `!important`.\n2. Value bắt đầu bằng `--` -> đổi thành `var(--...)`.\n3. Value dạng `[...]` -> bỏ `[` `]`, rồi thay `;` thành khoảng trắng.\n4. Ký tự `#` trong value giữ nguyên (hex color).\n\nPseudo-flow cho AI:\n\n```text\nclass -> selector -> media -> layer -> property -> value\nif value startsWith('!') => important\nif value startsWith('--') => var(value)\nif value is bracketed [..] => strip brackets + replace ';' with ' '\n```\n\n### Test Vector Mini (10 input -> expected tuple)\n\n| # | Input | Expected tuple |\n| :--- | :--- | :--- |\n| 1 | `m10px` | `{ media: '', layer: '', property: 'm', value: '10px', selector: '' }` |\n| 2 | `md:w100%` | `{ media: 'md', layer: '', property: 'w', value: '100%', selector: '' }` |\n| 3 | `sm:3bgWhite` | `{ media: 'sm', layer: '3', property: 'bg', value: 'White', selector: '' }` |\n| 4 | `cBlue@:hover` | `{ media: '', layer: '', property: 'c', value: 'Blue', selector: ':hover' }` |\n| 5 | `m-10px` | `{ media: '', layer: '', property: 'm', value: '-10px', selector: '' }` |\n| 6 | `opc0.8` | `{ media: '', layer: '', property: 'opc', value: '0.8', selector: '' }` |\n| 7 | `bgc--brand` | `{ media: '', layer: '', property: 'bgc', value: '--brand', selector: '' }` |\n| 8 | `c!#0a64e8` | `{ media: '', layer: '', property: 'c', value: '!#0a64e8', selector: '' }` |\n| 9 | `w[calc(100%;-;10px)]` | `{ media: '', layer: '', property: 'w', value: '[calc(100%;-;10px)]', selector: '' }` |\n| 10 | `[btnPrimary]` | `{ media: '', layer: '', property: '[btnPrimary]', value: '', selector: '' }` |\n\n## Bảng Sai -> Đúng (Những Lỗi Gây Vỡ Parse)\n\n| Sai | Đúng | Giải thích |\n| :--- | :--- | :--- |\n| `bdn` | `bdN` | Value viết tắt dạng chữ cái phải viết hoa ký tự đầu (`N` = none). |\n| `df` | `dF` | `F` là value viết tắt của `flex`. |\n| `posa` | `posA` | `A` là value viết tắt của `absolute`. |\n| `tr0.2s` | `tran0.2s` | Property `transition` là `tran`, không phải `tr`. |\n| `op0.8` | `opc0.8` | `op` là `object-position`; `opc` mới là `opacity`. |\n| `3:bgWhite` | `3bgWhite` | Layer là số đứng liền trước property, không có `:` sau layer. |\n| `hover:cRed` | `cRed@:hover` | Selector modifier dùng hậu tố `@Selector`. |\n| `tablet:dB` (chưa khai báo) | `tablet:dB` + `breakpoints` config | Media custom phải được khai báo trước trong config. |\n| `m--10px` | `m-10px` | Số âm dùng `-`; `--` dành cho CSS variable (`bgc--brand`). |\n| `bgcbrand` | `bgcBrand` hoặc `bgc--brand` | Cần điểm ngắt rõ ràng để parser tách đúng value. |\n| `wcalc(100%-10px)` | `w[calc(100%;-;10px)]` | Value phức tạp nên bọc `[]`, dùng `;` để biểu diễn khoảng trắng. |\n| `!cRed` | `c!Red` | `!` phải đứng trong phần value (sau property), không đứng đầu class. |\n\n## Ví Dụ Chính Xác Theo Dictionary\n\nDanh sách đầy đủ alias xem tại [DICTIONARY.md](./DICTIONARY.md).\n\nMột số alias dễ nhầm:\n1. `op` = `object-position`\n2. `opc` = `opacity`\n3. `tran` = `transition`\n4. `tr` = `transparent` (value alias, không phải property transition)\n\nVí dụ:\n\n```html\n<div class=\"dF aiC jcSp p12px;16px bdN bgcWhite\"></div>\n<div class=\"tran0.2s opc0.8@:hover\"></div>\n<div class=\"c!#0a64e8\"></div>\n<div class=\"w[calc(100%;-;10px)]\"></div>\n```\n\nChuỗi thuộc tính bằng `&` (đúng):\n1. `fk-dF&fxdC@;li`\n2. `fk-md:dF&fxdC`\n3. `md:[row]&[col]@;li` (với `aliases.row`, `aliases.col`)\n\nQuy ước `aliases` khuyến nghị (đầy đủ declaration):\n```js\naliases: {\n  row: ['display:flex', 'padding:5px'],\n  col: ['flex-direction: column', 'margin:5px']\n}\n```\n\nSai -> Đúng:\n1. `aliases: { row:['dF'], col:['fxdC'] }` -> sai (không còn hỗ trợ).\n2. `aliases: { row:['display:flex'], col:['flex-direction: column'] }` -> đúng.\n\n## Dùng Trong React / Component\n\n```jsx\nimport { clsx } from '@fwkui/x-css';\n\nexport function Button({ primary, children }) {\n  return (\n    <button\n      className={clsx(\n        'dF aiC jcC p10px;16px bdN bdra8px tran0.2s',\n        primary ? 'bgc#0a64e8 cWhite' : 'bgc#e5e7eb c#111827',\n        'opc0.9@:hover'\n      )}\n    >\n      {children}\n    </button>\n  );\n}\n```\n\n## Shared Instance (Khởi Tạo Một Lần)\n\nNếu bạn muốn tái sử dụng cùng một instance, dùng factory.\nKhuyến nghị mặc định cho app chạy thật:\n1. Không đặt `prefix`.\n2. Không bật `cache`.\n3. Giữ `hashClassName` mặc định nếu muốn class output ngắn và ổn định.\n4. Chỉ bật `cache`, `prefix`, hoặc tắt `hashClassName` khi bạn chủ động chấp nhận tradeoff vận hành.\n\n```ts\nimport { createSharedInstance } from '@fwkui/x-css';\n\nexport const fx = createSharedInstance();\n\n// Browser: gọi 1 lần khi app khởi động\nfx.observe(document);\n\n// Dùng ở mọi nơi\nconst className = fx.clsx('dF aiC jcC p10px;16px');\n\n// Nếu dictionaryImport là true/string và cần chắc chắn CSS đã sẵn sàng:\nawait fx.ready();\n\n// SSR / debug\nconst cssText = fx.getCss();\n```\n\n## Tắt Hash Class Name\n\nMặc định `clsx` trả về class đã rút gọn dạng `D...`.\nNếu muốn giữ nguyên class x-css ở output, đặt `hashClassName: false`.\n\n```ts\nimport xcss from '@fwkui/x-css';\n\nconst { clsx, getCssString } = xcss.css({\n  hashClassName: false\n}).buildCss();\n\nconst className = clsx('dF aiC jcC p10px;16px bgc#0a64e8 cWhite');\n// className = 'dF aiC jcC p10px;16px bgc#0a64e8 cWhite'\n\nconst css = getCssString();\n// CSS selector vẫn được escape đúng cho ký tự như :, %, [, ], @.\n```\n\nLưu ý:\n1. `hashClassName: false` chỉ đổi output class name, không tắt parser/generator.\n2. Token không hợp lệ hoặc bị `excludes`/`excludePrefixes` vẫn giữ nguyên như trước.\n3. Khi dùng `prefix: 'fk-'`, output sẽ giữ nguyên `fk-m10px`, còn token không có prefix vẫn không parse.\n\n## Rust / fwkui-rs\n\nRepo có workspace Rust tại `fwkui-rs/` gồm `fwkui-x-core` và `fwkui-x-css`.\nMặc định Rust cũng hash class name dạng `D...`; dùng `XCss::raw()` nếu muốn giữ nguyên token.\n\n```rust\nuse fwkui_x_css::XCss;\n\nlet xcss = XCss::new();\n\nview! {\n  <button class=xcss.c(\"dF aiC jcC p10px;16px bgc--brand cWhite\")>\n    \"Đăng nhập\"\n  </button>\n  <style>{xcss.style()}</style>\n}\n```\n\nVới Yew/Leptos, ưu tiên viết trực tiếp `class=xcss.c(\"...\")` và đặt `<style>{xcss.style()}</style>` sau các node đã dùng class.\nVới Leptos Router hoặc nhiều route, truyền clone cùng một `XCss` vào từng route; mỗi route đặt style node ở cuối route đó. Không cần tạo danh sách seed class riêng.\n\nVí dụ runnable:\n\n```bash\ncd fwkui-rs/examples/leptos-hash-complete\nNO_COLOR=false trunk serve\n```\n\n## Tailwind Migration Helper\n\n`@fwkui/x-css` có helper bán tự động để hỗ trợ migration từ chuỗi utility Tailwind sang token `x-css`.\n\nPublic API:\n\n```ts\nimport {\n  assessTailwindMigrationReadiness,\n  classifyTailwindToken,\n  convertTailwindClasses,\n  convertTailwindToken,\n  getTailwindCoverageMatrix\n} from '@fwkui/x-css';\n\nconst result = convertTailwindClasses(\n  'flex items-center justify-between gap-4 p-4 bg-white text-slate-900 rounded-lg border border-slate-200'\n);\n\nconsole.log(result.output);\n// dF ai[center] jc[space-between] gap16px p16px bgc#ffffff c#0f172a bdra8px bdw1px bds[solid] bdcCurrentColor bdc#e2e8f0\n\nconsole.log(classifyTailwindToken('md:fxd[row]'));\n// 'xcss'\n\nconst readiness = assessTailwindMigrationReadiness(\n  'transition flex group-hover:bg-slate-50 md:fxd[row]'\n);\n\nconsole.log(readiness.releaseDecision);\n// 'blocked'\n\nconsole.log(readiness.autoApplyOutput);\n// dF md:fxd[row]\n```\n\nContract hiện tại:\n1. Helper ưu tiên các utility Tailwind phổ biến cho layout, spacing, color, typography, border, shadow, width/height.\n2. Responsive/state variants phổ biến như `sm:`, `md:`, `hover:`, `focus:` được chuyển sang format `x-css`.\n3. Token đầu vào được phân loại thành `tailwind`, `xcss`, `ambiguous`, hoặc `unknown`.\n4. Đây là migration helper, không phải promise “convert 100% Tailwind không cần review”.\n5. Khi publish hoặc migrate codebase thật, nên ưu tiên `mode: 'safe'` thay vì `legacy`.\n6. Helper này làm việc trên raw utility string và bỏ qua config `prefix`; khi migrate Tailwind, nên coi `prefix` là rỗng.\n\nVí dụ:\n\n```ts\nconst converted = convertTailwindToken('md:hover:bg-slate-50');\n\nconsole.log(converted.outputs);\n// ['md:bgc#f8fafc@:hover']\n\nconst safe = convertTailwindClasses('md:fxd[row] p-2.5', { mode: 'safe' });\nconsole.log(safe.passthrough); // ['md:fxd[row]']\nconsole.log(safe.converted);   // ['p10px']\nconsole.log(safe.ambiguous);   // ['p-2.5']\n```\n\n### Mode\n\n`convertTailwindToken()` và `convertTailwindClasses()` nhận option:\n\n```ts\ntype TailwindConversionMode = 'legacy' | 'safe' | 'strict'\n```\n\nÝ nghĩa:\n1. `legacy`:\n   giữ hành vi tương thích cũ.\n   Token không convert được có thể được passthrough nếu `preserveUnknown !== false`.\n2. `safe`:\n   chỉ passthrough token đã được xác nhận là `x-css`.\n   Token `ambiguous` hoặc `unknown` sẽ không được giữ nguyên mù.\n3. `strict`:\n   dùng cùng `preserveUnknown: false` để ép toàn bộ token không chắc chắn đi vào `unsupported`.\n   Đây là mode phù hợp cho codemod, CI, hoặc review trước khi deploy.\n\nVí dụ khuyến nghị:\n\n```ts\nconst result = convertTailwindClasses(source, {\n  mode: 'safe',\n  preserveUnknown: false\n});\n```\n\n### Kết Quả Trả Về\n\n`convertTailwindToken()` trả:\n\n```ts\n{\n  input: string\n  outputs: string[]\n  status: 'converted' | 'passthrough' | 'unsupported'\n  classification: 'tailwind' | 'xcss' | 'ambiguous' | 'unknown'\n  exact: boolean\n  warnings: Array<{ token: string; message: string }>\n}\n```\n\n`convertTailwindClasses()` trả:\n\n```ts\n{\n  input: string\n  output: string\n  details: TailwindTokenConversion[]\n  converted: string[]\n  passthrough: string[]\n  unsupported: string[]\n  ambiguous: string[]\n  warnings: TailwindConversionWarning[]\n}\n```\n\nÝ nghĩa thực tế:\n1. `converted`: token đã map sang `x-css`.\n2. `passthrough`: token được giữ nguyên vì là `x-css` thật, hoặc vì caller vẫn bật giữ token gốc.\n3. `unsupported`: token chưa có mapping an toàn.\n4. `ambiguous`: token có hình thức dễ nhầm giữa Tailwind và `x-css`, cần review.\n\n### Readiness API Cho Sản Phẩm Thật\n\nNếu dùng framework này để migrate code chạy production, không nên dùng mỗi `convertTailwindClasses()` làm quyết định release.\nHãy chạy preflight bằng `assessTailwindMigrationReadiness()`:\n\n```ts\nconst report = assessTailwindMigrationReadiness(source);\n\nif (report.releaseDecision === 'safe') {\n  // Chỉ còn exact conversion hoặc x-css thật\n  apply(report.autoApplyOutput);\n}\n\nif (report.releaseDecision === 'review') {\n  // Có output gần đúng như `transition -> tran0.2s`\n  review(report.approximateConverted);\n}\n\nif (report.releaseDecision === 'blocked') {\n  // Có utility không an toàn để tự động migrate\n  fail(report.blocked);\n}\n```\n\nContract của report:\n1. `autoApplyOutput`: chỉ chứa token exact-converted và token `x-css` thật, theo đúng thứ tự gốc.\n2. `approximateConverted`: token đã convert nhưng không đủ an toàn để áp thẳng production.\n3. `reviewRequired`: tất cả token cần con người xem lại.\n4. `blocked`: token không nên auto-apply trong flow migration thật.\n5. `safeToAutoApply`: chỉ `true` khi không còn token phải review.\n\nCoverage machine-readable:\n\n```ts\nconst matrix = getTailwindCoverageMatrix();\n```\n\n`matrix` dùng được cho codemod, CI gate, dashboard coverage, hoặc rule riêng của team sản phẩm.\n\n### Canonical Output\n\nKhi helper sinh token `x-css`, nên coi các output dưới đây là canonical:\n1. `inline-flex -> dIf`\n2. `inline-block -> dIb`\n3. `inline-grid -> dIg`\n4. `border -> bdw1px bds[solid] bdcCurrentColor`\n5. `text-transparent -> cTransparent`\n6. `border-transparent -> bdcTransparent`\n7. `bg-[currentColor] -> bgcCurrentColor`\n\nKhông nên dựa vào việc runtime parser “vẫn hiểu được” để sinh các biến thể khác như `dIF`, `dIB`, `bdctransparent`.\n\n### Coverage Hiện Tại\n\nNhóm utility đã hỗ trợ tốt:\n1. display / position / flex cơ bản\n2. spacing / size / fraction / width scale / `mx-auto` / `inset-x-*` / `inset-y-*`\n3. color cơ bản (`bg-*`, `text-*`, `border-*`)\n4. rounded / border / shadow / `appearance-none`\n5. font-size / font-weight / line-height / letter-spacing / `basis-*` / `order-*`\n6. object-fit / object-position cơ bản\n7. align / place / justify / content helpers phổ biến\n8. một phần responsive + selector variants (`sm`, `md`, `hover`, `focus`, `before`, `after`, `placeholder`, `selection`)\n\nNhóm nên coi là cần review thủ công hoặc fallback riêng:\n1. `group-hover:*`, `group-focus:*`, `peer-*`\n2. `dark:*`\n3. `divide-*`\n4. `duration-*`, `ease-*`, `delay-*`\n5. transform chain phức hợp như `translate-*`, `scale-*`, `rotate-*`\n\n### Quy Trình Dùng An Toàn\n\nKhi migrate project thật:\n1. Chạy converter với `mode: 'safe'`.\n2. Áp dụng trực tiếp các token trong `converted`.\n3. Giữ nguyên các token trong `passthrough` chỉ khi chúng là `x-css` thật.\n4. Review bắt buộc các token trong `ambiguous` và `unsupported`.\n5. Chạy lại app, build, và kiểm tra giao diện thực tế sau mỗi đợt chuyển đổi.\n\nKhuyến nghị:\n1. Không chạy codemod toàn repo ở `legacy mode` rồi deploy thẳng.\n2. Không dùng parser `x-css` như bằng chứng rằng token Tailwind “đã an toàn”.\n3. Nếu output chứa nhiều `ambiguous`, hãy dừng batch hiện tại và bổ sung mapping trước khi chuyển tiếp.\n\nAlias tương đương:\n\n```ts\nimport { createSharedClsx } from '@fwkui/x-css';\nconst fx = createSharedClsx();\n```\n\nQuy tắc dùng ổn định:\n1. Tạo shared instance đúng 1 lần ở bootstrap.\n2. Không khởi tạo lại instance ở mỗi lần render component.\n3. Mặc định để `prefix` rỗng và `cache` tắt.\n4. Nếu bạn tự bật `cache` hoặc `prefix`, giữ nguyên cấu hình đó trong suốt vòng đời app.\n\n## Cấu Hình\n\n```js\nimport xcss from '@fwkui/x-css';\n\nxcss.cssObserve(document, {\n  theme: {\n    brand: '#0a64e8',\n    danger: '#ef4444'\n  },\n  breakpoints: [\n    { tablet: 'screen and (min-width: 768px)' }\n  ],\n  base: 'body{margin:0;font-family:system-ui,sans-serif;}',\n  excludePrefixes: ['bs-', 'rs-'],\n  excludes: ['legacy-*'],\n  dictionaryImport: true\n});\n```\n\nSau đó dùng class: `cBrand tablet:dB`.\n\nGợi ý tối ưu bỏ qua parse:\n1. Ưu tiên `excludePrefixes` để bỏ qua nhanh theo tiền tố, ví dụ `bs-`, `rs-`.\n2. Dùng `excludes` khi cần rule chính xác hoặc wildcard (`*`), ví dụ `legacy-*`, `tmp-debug`.\n3. Không nên lấy `prefix` làm cấu hình mặc định; chỉ dùng khi bạn thật sự cần tách namespace class.\n\nVí dụ đầu vào cho `excludes`:\n\n| Cấu hình | Input class | Kết quả mong đợi |\n| :--- | :--- | :--- |\n| `excludes: ['container']` | `container m10px` | `container` giữ nguyên; chỉ `m10px` được parse thành CSS |\n| `excludes: ['bs-*']` | `bs-btn m10px` | `bs-btn` bị bỏ qua parse; `m10px` vẫn parse |\n| `excludes: ['*-debug']` | `card-debug p8px` | `card-debug` bị bỏ qua parse; `p8px` vẫn parse |\n| `excludes: ['tmp-*', 'legacy-*']` | `tmp-a legacy-card dF` | `tmp-a`, `legacy-card` bị bỏ qua; `dF` vẫn parse |\n| `excludePrefixes: ['bs-', 'rs-']` | `bs-modal rs-open h100%` | `bs-modal`, `rs-open` bị bỏ qua nhanh; `h100%` vẫn parse |\n\nVí dụ output thực tế của `clsx`:\n\n| Config | Gọi `clsx(...)` | Output | Ghi chú |\n| :--- | :--- | :--- | :--- |\n| `excludePrefixes: ['bs-'], excludes: ['abc*']` | `clsx('bs-a', 'abcde')` | `bs-a abcde` | Cả hai bị bỏ qua, giữ nguyên class gốc. |\n| `excludePrefixes: ['bs-'], excludes: ['abc*']` | `clsx('bs-a', 'abcde', 'm10px')` | `bs-a abcde D0` | Chỉ `m10px` parse thành class hash. |\n| `excludes: ['bs-', 'abc*']` | `clsx('bs-a', 'abcde', 'm10px')` | `bs-a abcde D0` | `bs-` là exact match nên không bắt `bs-a`; `bs-a` vẫn giữ nguyên vì token không sinh CSS hợp lệ. |\n| `excludes: ['abc*def']` | `clsx('abcXYZdef', 'm10px')` | `abcXYZdef D0` | Wildcard giữa chuỗi hoạt động bình thường. |\n| `excludes: ['*-abc']` | `clsx('foo-abc', 'm10px')` | `foo-abc D0` | Wildcard cuối chuỗi hoạt động bình thường. |\n\nLưu ý format output:\n1. `clsx` trả chuỗi class phân tách bằng khoảng trắng, không dùng dấu phẩy.\n2. Token không parse được hoặc bị exclude sẽ giữ nguyên ở output.\n\nLưu ý khi dùng cùng `prefix`:\n1. Engine kiểm tra `excludes`/`excludePrefixes` trước, sau đó mới kiểm tra `prefix`.\n2. Nếu token match exclude thì giữ nguyên class gốc và không parse tiếp.\n3. Nếu có `prefix: 'fk-'`, token không bắt đầu bằng `fk-` sẽ giữ nguyên class gốc.\n4. `prefix` là cấu hình tùy chọn, không phải khuyến nghị mặc định.\n\n\n`dictionaryImport`:\n1. `true` (mặc định): dùng ngay built-in dictionary từ `src/dictionary.ts`/bundle hiện tại, không self-import `dictionary.js` nội bộ nữa.\n2. `false`: tắt dictionary.\n3. `string` URL/path: import dictionary ngoài.\n\nLưu ý:\n1. `dictionaryImport: true` là đồng bộ, có thể parse built-in dictionary ngay khi khởi tạo.\n2. Chỉ trường hợp `dictionaryImport` là `string` URL/path mới cần import bất đồng bộ.\n3. Nếu cần chắc chắn dictionary ngoài đã sẵn sàng trước khi render quan trọng, dùng `await engine.ready`.\n\n`cache`:\n1. Mặc định `cache` đang tắt (`loadOnInit: false`).\n2. `styleId` (mặc định `fwkui`): id thẻ `<style>` runtime.\n3. `version` (mặc định `v1`): tham gia vào cache key để chủ động invalidate.\n4. `compression` (mặc định `true`): nén cache trước khi lưu `localStorage`.\n5. `debounceMs` (mặc định `1000`): debounce chu kỳ nén + lưu cache.\n6. `sizeLast` (mặc định `1000`): seed mặc định cho bộ sinh key `D...`.\n\nKhuyến nghị:\n1. Không bật `cache` mặc định cho mọi app.\n2. Không bật/tắt `cache` lặp lại theo route, component, hoặc session ngắn.\n3. Chỉ bật `cache` khi bạn chủ động muốn tối ưu first paint hoặc SSR/MPA hydration.\n4. Nếu đã bật `cache`, hãy cấu hình ổn định và giữ nguyên trong toàn app.\n\nKhi `compression: true`:\n1. Ưu tiên `CompressionStream` (deflate-raw + base64) nếu runtime hỗ trợ.\n2. Tự động fallback về LZW nếu runtime không hỗ trợ stream.\n\nĐồng bộ nhiều tab:\n1. Khi phát sinh key mới, engine gửi delta `{ class -> key }` sang tab khác qua `BroadcastChannel` nếu môi trường hỗ trợ.\n2. Nếu không có `BroadcastChannel`, engine fallback về sự kiện `storage`.\n3. `localStorage` cache vẫn giữ vai trò snapshot đầy đủ cho lần mở tab mới hoặc reload sau đó.\n\nQuy tắc cache key:\n`cacheKey = styleId + \"_cache_\" + version`\n\nVí dụ mặc định:\n`fwkui_cache_v1`\n\nNếu import dictionary ngoài:\n\n```js\nconst engine = xcss.css({ dictionaryImport: 'https://cdn.example.com/xcss-dict.mjs' });\nawait engine.ready;\nconst { clsx, observe } = engine.buildCss(document);\nobserve();\n```\n\nMẫu file để thay thế trực tiếp URL `https://cdn.example.com/xcss-dict.mjs`:\n\n```js\n// xcss-dict.mjs\n// Có thể public lên CDN của bạn rồi truyền URL vào dictionaryImport\n\nexport const SHORT_PROPERTIES = {\n  d: 'display',\n  c: 'color',\n  bgc: 'background-color',\n  bd: 'border',\n  w: 'width',\n  h: 'height',\n  p: 'padding',\n  m: 'margin',\n  tran: 'transition',\n  opc: 'opacity'\n};\n\nexport const COMMON_VALUES = {\n  n: 'none',\n  b: 'block',\n  f: 'flex',\n  t: 'transparent',\n  i: 'inherit'\n};\n\nexport const SPECIFIC_VALUES = {\n  d: {\n    f: 'flex',\n    b: 'block',\n    ib: 'inline-block'\n  },\n  bd: {\n    n: 'none'\n  },\n  c: {\n    pri: '#0a64e8',\n    danger: '#ef4444'\n  },\n  bgc: {\n    pri: '#0a64e8',\n    soft: '#e8f1ff'\n  }\n};\n\nexport default {\n  SHORT_PROPERTIES,\n  COMMON_VALUES,\n  SPECIFIC_VALUES\n};\n```\n\nLưu ý format:\n1. Nên export theo đúng mẫu trên với object tĩnh/plain object.\n2. Không nên tạo dictionary bằng biểu thức động, function, hoặc biến trung gian phức tạp.\n3. `export default` là tùy chọn; 3 named export `SHORT_PROPERTIES`, `COMMON_VALUES`, `SPECIFIC_VALUES` mới là phần quan trọng nhất.\n\nQuy trình thay link:\n1. Tạo file `xcss-dict.mjs` theo mẫu trên.\n2. Upload lên CDN/public URL của bạn.\n3. Thay `dictionaryImport` bằng URL thật.\n4. Chờ `await engine.ready` trước khi render class.\n\n## Bootloader Từ Cache (Tùy Chọn)\n\nChỉ dùng helper `getBootloaderScript` khi bạn chủ động bật `cache` và muốn lấy CSS từ `localStorage` trước khi bundle chạy.\n\n### Dùng helper `getBootloaderScript`\n\n```js\nimport { getBootloaderScript } from '@fwkui/x-css';\n\nconst styleId = 'fwkui';\nconst version = 'v1';\n\nconst bootloaderScript = getBootloaderScript(styleId, version, { loadOnInit: true });\nconst bootloaderScriptCompact = getBootloaderScript(styleId, version, {\n  compact: true,\n  loadOnInit: true\n});\n```\n\n### Cấu trúc chèn vào `<head>` (khuyến nghị)\n\n```html\n<head>\n  <!-- 1) Bootloader từ cache: chạy sớm nhất để giảm FOUC -->\n  <script>\n    /* nội dung từ getBootloaderScript(styleId, version, { loadOnInit: true }) */\n  </script>\n\n  <!-- 2) Bundle/module của app -->\n  <script type=\"module\" src=\"/assets/main.js\"></script>\n</head>\n```\n\n### Đoạn dán thủ công vào `<head>` (copy/paste)\n\nThay 2 biến ngay đầu script nếu cần:\n1. `sid = 'fwkui'` -> đổi theo `cache.styleId`.\n2. `ver = 'v1'` -> đổi theo `cache.version`.\n\n```html\n<script>\n  (async()=>{const sid='fwkui',ver='v1',k=sid+'_cache_'+ver;const L=s=>{if(!s)return'';const d={};let z=256;for(let i=0;i<256;i++)d[i]=String.fromCharCode(i);const c=[...s].map(ch=>ch.charCodeAt(0));let p=c[0],ph=d[p]||'',r=ph;for(let i=1;i<c.length;i++){const x=c[i];let e=d[x];if(!e)e=x===z?ph+ph[0]:'';r+=e;d[z++]=ph+e[0];ph=e;}return r};const S=()=>typeof DecompressionStream!=='undefined'&&typeof Blob!=='undefined'&&typeof Response!=='undefined';const B=b=>{if(typeof atob==='function'){const s=atob(b),u=new Uint8Array(s.length);for(let i=0;i<s.length;i++)u[i]=s.charCodeAt(i);return u;}if(typeof Buffer!=='undefined')return new Uint8Array(Buffer.from(b,'base64'));throw new Error('base64');};const D=async p=>{if(!S())return null;try{return await new Response(new Blob([B(p)]).stream().pipeThrough(new DecompressionStream('deflate-raw'))).text();}catch{return null;}};const P=async raw=>{if(!raw)return null;try{let j=JSON.parse(raw);if(j&&j.__xcss_cache_v===3&&j.compressed===true&&j.algorithm==='deflate-raw'&&j.encoding==='base64'&&typeof j.payload==='string'){const ex=await D(j.payload);if(!ex)return null;j=JSON.parse(ex);}else if(j&&j.__xcss_cache_v===2&&j.compressed===true&&typeof j.payload==='string'){const ex=L(j.payload);if(!ex)return null;j=JSON.parse(ex);}return j&&j.cssText?j:null;}catch{return null;}};try{if(typeof window==='undefined'||!window.localStorage)return;let p=await P(localStorage.getItem(k));if(!p)return;let st=document.getElementById(sid);if(!st){st=document.createElement('style');st.id=sid;document.head.appendChild(st);}let css=p.cssText.root?p.cssText.root+'\\\\n':'';for(const n in p.cssText)if(n!=='root')css+=(p.cssText[n]||'')+'\\\\n';st.textContent=css;}catch{}})();\n</script>\n```\n\nVí dụ render HTML từ server:\n\n```js\nimport { getBootloaderScript } from '@fwkui/x-css';\n\nconst styleId = 'fwkui';\nconst version = 'v1';\nconst bootloaderScript = getBootloaderScript(styleId, version, {\n  compact: true,\n  loadOnInit: true\n});\n\nconst html = `\n<!doctype html>\n<html>\n  <head>\n    <meta charset=\"UTF-8\" />\n    <script>${bootloaderScript}</script>\n    <script type=\"module\" src=\"/assets/main.js\"></script>\n  </head>\n  <body><div id=\"app\"></div></body>\n</html>`;\n```\n\nLưu ý:\n1. Đồng bộ `styleId` + `version` giữa bootloader và cấu hình `xcss.css(...)`.\n2. Script tạo từ `getBootloaderScript` ưu tiên `DecompressionStream` (cache deflate-raw) và fallback LZW.\n3. Sau bootloader vẫn cần gọi `xcss.cssObserve(...)` như bình thường.\n4. Mặc định `loadOnInit` đang tắt; chỉ bật bằng `{ loadOnInit: true }` khi bạn thật sự dùng cache runtime.\n5. Dùng `{ compact: true }` khi muốn script trả về ở dạng nén gọn để nhúng HTML.\n6. Nếu dữ liệu cache dưới key hiện tại bị lỗi/không decode được, engine sẽ tự xóa key đó để lần chạy sau lưu lại dữ liệu mới.\n7. Cache runtime chỉ khởi tạo khi browser dùng được `localStorage` writable; nếu không có thì engine/bootloader sẽ bỏ qua load-save cache.\n\n### Khi nào nên dùng `getBootloaderScript`\n\n1. SSR/MPA hoặc trang tĩnh cần giảm FOUC ngay từ first paint.\n2. Ứng dụng có cache CSS trong `localStorage` và muốn render gần như tức thì trước khi bundle chạy.\n3. Khi bạn chủ động kiểm soát thứ tự script trong `<head>`.\n\nKhông bắt buộc dùng khi:\n1. Trang không cần tối ưu first paint.\n2. Không dùng cache runtime.\n3. CSP không cho inline script (trừ khi đã cấu hình nonce/hash phù hợp).\n\n## SSR Và Static Extraction\n\nSSR:\n\n```js\nimport { getCss } from '@fwkui/x-css';\n\nconst styles = getCss();\n// <style dangerouslySetInnerHTML={{ __html: styles }} />\n```\n\nStatic extraction:\n\n```js\nimport xcss from '@fwkui/x-css';\nimport fs from 'node:fs';\n\nconst { clsx, getCssString } = xcss.css({\n  theme: { brand: '#0a64e8' }\n}).buildCss();\n\nclsx('m10px p20px cBrand dF');\n\nfs.writeFileSync('./public/styles.css', getCssString());\n```\n\n## Prompt Mẫu Cho AI (Dùng Thẳng)\n\nBạn có thể đưa block này vào prompt system/project rules:\n\n```markdown\nYou are using @fwkui/x-css.\nGenerate class names strictly with syntax: [Media]:[Layer][Property][Value][@Selector].\n\nRules:\n1. Value is required for normal utility classes.\n2. Layer must be numeric and placed directly before Property (e.g. 3bgWhite).\n3. Selector must be suffix @Selector (e.g. cBlue@:hover).\n4. Use dictionary aliases from DICTIONARY.md.\n5. Keep abbreviation values capitalized when needed (bdN, dF, posA).\n6. For complex CSS values, use bracket notation, and use ';' as space placeholder:\n   w[calc(100%;-;10px)].\n7. Use opc for opacity, tran for transition, op for object-position.\n\nBefore final answer:\n- Validate each class can be parsed into {media, layer, property, value, selector}.\n- Avoid invalid forms like bdn, tr0.2s, op0.8, 3:bgWhite, hover:cRed.\n```\n\nTemplate giao việc cho AI thiết kế UI:\n\n```markdown\nThiết kế giao diện [màn hình] bằng @fwkui/x-css.\nYêu cầu:\n1. Trả về HTML/JSX hoàn chỉnh.\n2. Chỉ dùng class theo cú pháp [Media]:[Layer][Property][Value][@Selector].\n3. Với value phức tạp, dùng [] và ';' thay cho khoảng trắng.\n4. Không dùng class sai quy tắc (bdn, tr0.2s, op0.8, hover:cRed...).\n5. Cuối câu trả lời thêm bảng kiểm:\n   - class\n   - parsed tuple {media, layer, property, value, selector}\n   - css dự kiến\n```\n\n## Checklist QA Trước Khi Build\n\n1. Không còn class sai viết hoa value (`bdn`, `df`, `posa`).\n2. Không dùng nhầm alias (`op`/`opc`, `tr`/`tran`).\n3. Các value phức tạp đều bọc `[]`.\n4. Media custom đã khai báo trong `breakpoints`.\n5. Không có dạng sai layer/selector (`3:bg`, `hover:cRed`).\n6. Test parser với ít nhất bộ 10 test vector ở trên.\n\n## Tài Liệu Liên Quan\n\n1. Dictionary đầy đủ: [DICTIONARY.md](./DICTIONARY.md)\n2. Source code: [https://github.com/vuits24/fwkui](https://github.com/vuits24/fwkui)\n\n## License\n\nLicensed under MIT. See [LICENSE](./LICENSE).\n\nUpdated: 2026-03-18\n","readmeFilename":"README.md"}