{"_id":"@antfu/design","_rev":"16-7422154431db64e9e783be56496dd3ae","name":"@antfu/design","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@antfu/design","version":"0.1.0","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.1.0","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"b4c0f749fa74cac5332345dc230c720a741047cb","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.1.0.tgz","fileCount":150,"integrity":"sha512-0Nuo2FXKmsCKxjhOJhmnN0sElmYsWP/PsCveKq1TxZLBlASKhrMpfZ56sBKoaGMBODoJEa9xyQZFzcW03UUx+Q==","signatures":[{"sig":"MEUCIEnIoYOl/mE+LW26srInMKpkV/xjJFdCTlB8bIvIixU/AiEAlQXU1rHoEnJY4/qejO5izGvbvcSPSKO0SrQTNswMNFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279218},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts","typecheck":"vue-tsc --noEmit"},"_npmUser":{"name":"antfu","email":"anthonyfu117@hotmail.com"},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"reka-ui":"^2.10.0","colorjs.io":"^0.6.1","splitpanes":"^4.1.2","@antfu/utils":"^9.3.0","@unocss/core":"^66.7.2","@vueuse/core":"^14.3.0","floating-vue":"^5.2.2","@tanstack/vue-virtual":"^3.13.29","@iconify-json/catppuccin":"^1.2.17"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","vue-tsc":"^3.3.5","happy-dom":"^20.10.6","playwright":"^1.61.1","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@unocss/preset-web-fonts":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","playwright":"^1.0.0","@axe-core/playwright":"^4.0.0"},"peerDependenciesMeta":{"playwright":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.1.0_1782650308593_0.7508631147037403","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@antfu/design","version":"0.2.0","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.2.0","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"5b91eb1655a02da7eaf4874f99d620dedc40f6cf","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.2.0.tgz","fileCount":151,"integrity":"sha512-7G9Pq8zztuVCLJlEOUTPo5YyDj5RCHMJWbiWCUjUTewfWFQQ+NmIoKuCtbhgLMLliPeeO/tTbKSZu54SHxqCow==","signatures":[{"sig":"MEUCIEZrdAbdlhOd1r280JunskCZm2tF9YBeJpZPWk17SQ4XAiEA4lA2kvWxdW2TXSbHMdWo2kOI3rdup/SNgsONtZCxvUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":289219},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts","typecheck":"vue-tsc --noEmit"},"_npmUser":{"name":"antfu","email":"anthonyfu117@hotmail.com"},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"colorjs.io":"^0.6.1","@antfu/utils":"^9.3.0","@unocss/core":">=66.0.0","@vueuse/core":"^14.3.0","@iconify-json/catppuccin":"^1.2.17"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","reka-ui":"^2.10.0","vue-tsc":"^3.3.5","happy-dom":"^20.10.6","playwright":"^1.61.1","splitpanes":"^4.1.2","floating-vue":"^5.2.2","magic-string":"^0.30.21","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@tanstack/vue-virtual":"^3.13.29","@unocss/preset-web-fonts":"^66.7.2","@unocss/transformer-directives":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","playwright":"^1.0.0","splitpanes":"^4.0.0","floating-vue":"^5.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"floating-vue":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.2.0_1782657939401_0.8676811354154146","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@antfu/design","version":"0.2.1","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.2.1","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"d8eed6d29d0de731b9bd5eaa9f7c644bca656f10","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.2.1.tgz","fileCount":183,"integrity":"sha512-t35soHI1CNJn86aDgLb1AymekL9J+GG3DXEt/eFg9y5nf7E9ijeMGvjCsI8VZS0/Q6JxO4iTT7jbG26vqfwvUw==","signatures":[{"sig":"MEUCIQCLZJjL2zvCW0OK5GPUmf2K2RZWZQstAdpNadfJafH9rAIgY9W5QyIqOCbm4DoWBZVCalFYhNRvkEUChenA5TPeDZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353927},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{"@vueuse/core":"^14.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","reka-ui":"^2.10.0","vue-tsc":"^3.3.5","happy-dom":"^20.10.6","colorjs.io":"^0.6.1","playwright":"^1.61.1","splitpanes":"^4.1.2","@antfu/utils":"^9.3.0","@unocss/core":">=66.0.0","floating-vue":"^5.2.2","magic-string":"^0.30.21","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@storybook/addon-docs":"^10.4.6","@tanstack/vue-virtual":"^3.13.29","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.7.2","@unocss/transformer-directives":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","floating-vue":"^5.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"floating-vue":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.2.1_1782726950088_0.21447776633525106","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@antfu/design","version":"0.2.2","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.2.2","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"5e30599e81569fd0ea90797de471d6767228467e","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.2.2.tgz","fileCount":188,"integrity":"sha512-5EFnKrZXwmtHfM9BnptN9rVS7eJ8zMX24xJbYYe4A7yN6+FNjj9inPL/39nlDEWWOuMpZdvOXNvxbG08LYO+Tw==","signatures":[{"sig":"MEUCIBNPLwUgPy5UVOtUpPZY8val0UBq2ig9t2IKpsddPOjfAiEAkXlu/AzajfogVOPjvXFc8OawBWC7K0Fty/ki43oRzWM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":370602},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@vueuse/core":"^14.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","reka-ui":"^2.10.0","vue-tsc":"^3.3.5","happy-dom":"^20.10.6","colorjs.io":"^0.6.1","playwright":"^1.61.1","splitpanes":"^4.1.2","@antfu/utils":"^9.3.0","@unocss/core":">=66.0.0","floating-vue":"^5.2.2","magic-string":"^0.30.21","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@storybook/addon-docs":"^10.4.6","@tanstack/vue-virtual":"^3.13.29","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.7.2","@unocss/transformer-directives":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","floating-vue":"^5.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"floating-vue":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.2.2_1783915849671_0.41738745930041676","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@antfu/design","version":"0.3.0","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.3.0","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"7eb5b0a75cad0583c15033fdb46ceff63f3dad9e","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.3.0.tgz","fileCount":188,"integrity":"sha512-0h4kRWSJlnU7xsLueWtojMDIgb7oR40pcWcHxXiuEd+mwh/YSB8inghwd6ZK5vC+wWBaOgixoiGIcC2bmyOMug==","signatures":[{"sig":"MEYCIQC4dJKDjhKiD6m0Ow668pW+yAWlF1KoXRIl6/oeLQ1okAIhAKtALejEoj7m9cclCWFlPPgJimRBK1KJK4ccYqzKeJkz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":391693},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@vueuse/core":"^14.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","reka-ui":"^2.10.0","vue-tsc":"^3.3.5","dompurify":"^3.4.12","happy-dom":"^20.10.6","colorjs.io":"^0.6.1","playwright":"^1.61.1","splitpanes":"^4.1.2","@antfu/utils":"^9.3.0","@unocss/core":">=66.0.0","floating-vue":"^5.2.2","magic-string":"^0.30.21","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@storybook/addon-docs":"^10.4.6","@tanstack/vue-virtual":"^3.13.29","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.7.2","@unocss/transformer-directives":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","floating-vue":"^5.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"floating-vue":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.3.0_1784271971573_0.5912997129323485","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@antfu/design","version":"0.3.1","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.3.1","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"95630f2252578fe4e4169d72920800b709208cde","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.3.1.tgz","fileCount":188,"integrity":"sha512-HRkRvKcVWBOg+ZKhT50Of766hdFqYvfex1z12882YKQdbSeRl5ViUVm/IrkoPjAiWM8eQEN8kYcdwhMBl9z5cw==","signatures":[{"sig":"MEYCIQCXn6L3xDW6Ay8Xt5b12jgpV6H9IZoZuJR6gmAaVPMN/gIhAJ3SYQEVdLu2eDugXtMCH/WouFfBfM0aGXUkoncHMtg2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":391878},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@vueuse/core":"^14.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","reka-ui":"^2.10.0","vue-tsc":"^3.3.5","dompurify":"^3.4.12","happy-dom":"^20.10.6","colorjs.io":"^0.6.1","playwright":"^1.61.1","splitpanes":"^4.1.2","@antfu/utils":"^9.3.0","@unocss/core":">=66.0.0","floating-vue":"^5.2.2","magic-string":"^0.30.21","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@storybook/addon-docs":"^10.4.6","@tanstack/vue-virtual":"^3.13.29","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.7.2","@unocss/transformer-directives":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","floating-vue":"^5.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"floating-vue":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.3.1_1784275485537_0.5612668691990186","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@antfu/design","version":"0.3.2","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.3.2","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"38c558b7a2a1085ebbc2ff97958d04f0aca937bb","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.3.2.tgz","fileCount":188,"integrity":"sha512-7n2LGlXEnmGZ+XYe5vVE61VC5iRg+CC63gwLwwKAh421GfxC0NSRIeU4HItMFNZZ0FwLxjbjb4ifPGXwlD+2cA==","signatures":[{"sig":"MEQCID0QeYTUTdpcrxcQoO03nraqo01jQ5UHn54SgHUeN14+AiBmwlu/k9yXUhv4Dz6aMEkVizebpXZh8CuKRp75eA8hrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":391711},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@vueuse/core":"^14.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","reka-ui":"^2.10.0","vue-tsc":"^3.3.5","dompurify":"^3.4.12","happy-dom":"^20.10.6","colorjs.io":"^0.6.1","playwright":"^1.61.1","splitpanes":"^4.1.2","@antfu/utils":"^9.3.0","@unocss/core":">=66.0.0","floating-vue":"^5.2.2","magic-string":"^0.30.21","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@storybook/addon-docs":"^10.4.6","@tanstack/vue-virtual":"^3.13.29","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.7.2","@unocss/transformer-directives":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","floating-vue":"^5.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"floating-vue":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.3.2_1784278557729_0.6840002802363614","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@antfu/design","version":"0.3.3","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.3.3","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"615c2f1143ed40ec263cf43b2e65b83abf7372b9","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.3.3.tgz","fileCount":188,"integrity":"sha512-JqVwj80j04Fz8J+dhuJF+nFPKWSzeVcD5igWLCe1uL14gTvtabStIliNJR20shD6vNp59/5huWDmTi83VqhJFA==","signatures":[{"sig":"MEUCIQD2VrwxKufhy79/uuRjqgFHowXbjR6eucfgFn4RPaiQfAIgSN3CZHuB1Y2IqOi1vOkpZc1MOYIMQ0G6IeuWJVSX+KY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":393634},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@vueuse/core":"^14.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","reka-ui":"^2.10.0","vue-tsc":"^3.3.5","dompurify":"^3.4.12","happy-dom":"^20.10.6","colorjs.io":"^0.6.1","playwright":"^1.61.1","splitpanes":"^4.1.2","@antfu/utils":"^9.3.0","@unocss/core":">=66.0.0","floating-vue":"^5.2.2","magic-string":"^0.30.21","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@storybook/addon-docs":"^10.4.6","@tanstack/vue-virtual":"^3.13.29","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.7.2","@unocss/transformer-directives":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","floating-vue":"^5.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"floating-vue":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.3.3_1785738351638_0.5550104308480786","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@antfu/design","version":"0.3.4","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.3.4","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"1bd3e0be8fce9b15f8f39fd46be6dab203488c3c","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.3.4.tgz","fileCount":188,"integrity":"sha512-v2N0RGciUm4HmINASMfwMAIh6Hp47hfEfBBIFloXzIe6YesYQByGpAVZqtKVee7Z7ejS/dXVPSD/Fou/jKwAAA==","signatures":[{"sig":"MEYCIQCesfn3fNRZyq3VAFNmequpLQky+rSYPsdpZDeIYkue4AIhALuje4lk72MjUW8N0z/+Zs+m78Og1S5KUlBS5LvjblSH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":396019},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@vueuse/core":"^14.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","reka-ui":"^2.10.0","vue-tsc":"^3.3.5","dompurify":"^3.4.12","happy-dom":"^20.10.6","colorjs.io":"^0.6.1","playwright":"^1.61.1","splitpanes":"^4.1.2","@antfu/utils":"^9.3.0","@unocss/core":">=66.0.0","floating-vue":"^5.2.2","magic-string":"^0.30.21","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@storybook/addon-docs":"^10.4.6","@tanstack/vue-virtual":"^3.13.29","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.7.2","@unocss/transformer-directives":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","floating-vue":"^5.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"floating-vue":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.3.4_1786513768472_0.6609796398637091","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@antfu/design","version":"0.3.5","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.3.5","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"85fb9423724d7e9389cb995a3d75216cb53cf34b","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.3.5.tgz","fileCount":188,"integrity":"sha512-l5cDDyjlWOG01EV+LMLkNQuN7eHD50S6xPeBVdtIC+LXcHR8sRUEPlEuL79u5Fp83yajRm9Orrn7+82FRdhmfQ==","signatures":[{"sig":"MEQCIGhSvvgb/XyIenXcfdGSzp+5B8kJ1I9W1PFsOFhaZ10/AiAk7YDmga74fuiyvM5lCTntyoBkKFwMiMY6uLZL55S07g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":396251},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@vueuse/core":"^14.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","reka-ui":"^2.10.0","vue-tsc":"^3.3.5","dompurify":"^3.4.12","happy-dom":"^20.10.6","colorjs.io":"^0.6.1","playwright":"^1.61.1","splitpanes":"^4.1.2","@antfu/utils":"^9.3.0","@unocss/core":">=66.0.0","floating-vue":"^5.2.2","magic-string":"^0.30.21","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@storybook/addon-docs":"^10.4.6","@tanstack/vue-virtual":"^3.13.29","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.7.2","@unocss/transformer-directives":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","floating-vue":"^5.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"floating-vue":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.3.5_1787014702781_0.4186493825193023","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@antfu/design","version":"0.4.0","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.4.0","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"d7be195a86b7e8d80ba1242c445c77134c5243c4","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.4.0.tgz","fileCount":188,"integrity":"sha512-Clahza9QI7Yzmta+YUWFZ7MaWRpFJZ286RZwwAmiW+wl9O8Jf1QoBvhvOGgT71ENmW1XTlkpbstgT4popuOZtQ==","signatures":[{"sig":"MEYCIQDId+KgjQyF+PdTFHmSQmLKbUOcyzX2zMmsohOvSzTe0wIhAItkyhXrh4YE7p8hLcLsZ4N2Id1rGS0MvLHhs+upjI6G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":405574},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@vueuse/core":"^14.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.38","tsdown":"^0.22.0","tsnapi":"^0.3.3","unocss":"^66.7.2","reka-ui":"^2.10.0","vue-tsc":"^3.3.5","dompurify":"^3.4.12","happy-dom":"^20.10.6","colorjs.io":"^0.6.1","playwright":"^1.61.1","splitpanes":"^4.1.2","@antfu/utils":"^9.3.0","@unocss/core":">=66.0.0","floating-vue":"^5.2.2","magic-string":"^0.30.21","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.4.11","@vitejs/plugin-vue":"^6.0.7","tsdown-stale-guard":"^0.1.2","@unocss/preset-mini":"^66.7.2","@axe-core/playwright":"^4.12.1","@storybook/vue3-vite":"^10.4.6","@unocss/preset-icons":"^66.7.2","@unocss/preset-wind3":"^66.7.2","@unocss/preset-wind4":"^66.7.2","@arethetypeswrong/cli":"^0.18.2","@storybook/addon-docs":"^10.4.6","@tanstack/vue-virtual":"^3.13.29","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.7.2","@unocss/transformer-directives":"^66.7.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","floating-vue":"^5.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"floating-vue":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.4.0_1787214167480_0.11360792570806","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@antfu/design","version":"0.5.0","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.5.0","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"e09970a854a6e69b382fd8e929df5dfe758b6710","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.5.0.tgz","fileCount":188,"integrity":"sha512-ZnWp80gSfamfm2MkIgrpw2CseeMypcCTVGuOYbLN6tWinAHnIdz+J9elzHJqwvKyt/wMfiBafzhh3OJ8Pnyo3g==","signatures":[{"sig":"MEQCIGlOvy448LLYiCmdIAceS9KUjR+CKAG/Z5QbIQeg5gkFAiAf56o3haLljrJOuNn9xA6Og2m7hPei/LuhN7XPbFHPMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":406431},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"dependencies":{"@vueuse/core":"^14.4.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.42","tsdown":"^0.23.0","tsnapi":"^1.5.0","unocss":"^66.10.2","reka-ui":"^2.10.4","vue-tsc":"^3.3.11","dompurify":"^3.4.15","happy-dom":"^20.14.5","colorjs.io":"^0.7.1","playwright":"^1.63.0","splitpanes":"^4.1.2","vue-afloat":"^0.1.0","@antfu/utils":"^9.3.0","@unocss/core":">=66.10.2","magic-string":"^1.3.1","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.5.0","@vitejs/plugin-vue":"^6.0.8","tsdown-stale-guard":"^0.1.3","@unocss/preset-mini":"^66.10.2","@axe-core/playwright":"^4.13.0","@storybook/vue3-vite":"^10.6.0","@unocss/preset-icons":"^66.10.2","@unocss/preset-wind3":"^66.10.2","@unocss/preset-wind4":"^66.10.2","@arethetypeswrong/cli":"^0.18.5","@storybook/addon-docs":"^10.6.0","@tanstack/vue-virtual":"^3.13.38","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.10.2","@unocss/transformer-directives":"^66.10.2"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","vue-afloat":"^0.1.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"vue-afloat":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.5.0_1789370524610_0.39764943949229203","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@antfu/design","version":"0.5.1","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.5.1","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"205b3de287bec89cd776ac1a92645cb6bd7320ea","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.5.1.tgz","fileCount":188,"integrity":"sha512-cG1W3CRvLLIpOrRMtMbOy4gTJ8YTkdJWbmfmH1DOSWhmGfID3+WAgM0Fbm1CACazj/7/OxoEPdv/6PGUTjLElA==","signatures":[{"sig":"MEUCICGQkwhIVgM/FMD7s81gjI4iYIrylLrjWZQgli5++eBWAiEAuwV9zlu75fy6Fv2ziMnjy6h2Vj8zBdmMsx6tDxUv0e4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCJ1qUFOjRmO7ePjFCBFhVrllw4Ct9k00fJmQNu6vxeXAIgBBSnGCfIODBDIQ6GmRe9CvOga9oU+YJfqNIMAjyIfrs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":406470},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"dependencies":{"@vueuse/core":"^14.4.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.42","tsdown":"^0.23.0","tsnapi":"^1.5.0","unocss":"^66.10.4","reka-ui":"^2.10.4","vue-tsc":"^3.3.11","dompurify":"^3.4.15","happy-dom":"^20.14.5","colorjs.io":"^0.7.1","playwright":"^1.63.0","splitpanes":"^4.1.2","vue-afloat":"^0.1.1","@antfu/utils":"^9.3.0","@unocss/core":">=66.10.4","magic-string":"^1.4.1","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.5.0","@vitejs/plugin-vue":"^6.0.9","tsdown-stale-guard":"^0.1.3","@unocss/preset-mini":"^66.10.4","@axe-core/playwright":"^4.13.0","@storybook/vue3-vite":"^10.6.0","@unocss/preset-icons":"^66.10.4","@unocss/preset-wind3":"^66.10.4","@unocss/preset-wind4":"^66.10.4","@arethetypeswrong/cli":"^0.18.5","@storybook/addon-docs":"^10.6.0","@tanstack/vue-virtual":"^3.13.39","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.10.4","@unocss/transformer-directives":"^66.10.4"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","vue-afloat":"^0.1.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"vue-afloat":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.5.1_1789531431205_0.7870932407043894","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@antfu/design","version":"0.5.2","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.5.2","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"0d5f9078003f7206674dbbe64a6d973ecff33eb4","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.5.2.tgz","fileCount":188,"integrity":"sha512-Xdyt2JZk6HPJeydDc9gtAgAeMo2LO3SsNDZdsKTWgnO8EQkG4Iv3qxgDlOPh1hEIbExJN7CS6fb3nZiBtwsOEg==","signatures":[{"sig":"MEYCIQCCU6EFIPxbXja20iTdMpl6HIWhWOBK/GRnGt7IiUZOdQIhANVVxx3fiCU3rgM0Q/EdLbd01YEgg4+JxY5Y99WHXsgv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCS4blF3Jnb3LVfSZKFr9S4Mj448s+Xc59TEYp05WmJlAIgVHs9BFaz3Bu8swNqsPF2fQ7vVtvvxfFAOn6MNlYCfNk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":406683},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"dependencies":{"@vueuse/core":"^14.4.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.42","tsdown":"^0.23.0","tsnapi":"^1.5.0","unocss":"^66.10.4","reka-ui":"^2.10.4","vue-tsc":"^3.3.11","dompurify":"^3.4.15","happy-dom":"^20.14.5","colorjs.io":"^0.7.1","playwright":"^1.63.0","splitpanes":"^4.1.2","vue-afloat":"^0.1.1","@antfu/utils":"^9.3.0","@unocss/core":">=66.10.4","magic-string":"^1.4.1","unplugin-vue":"^7.2.0","@vue/test-utils":"^2.5.0","@vitejs/plugin-vue":"^6.0.9","tsdown-stale-guard":"^0.1.3","@unocss/preset-mini":"^66.10.4","@axe-core/playwright":"^4.13.0","@storybook/vue3-vite":"^10.6.0","@unocss/preset-icons":"^66.10.4","@unocss/preset-wind3":"^66.10.4","@unocss/preset-wind4":"^66.10.4","@arethetypeswrong/cli":"^0.18.5","@storybook/addon-docs":"^10.6.0","@tanstack/vue-virtual":"^3.13.39","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.10.4","@unocss/transformer-directives":"^66.10.4"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","vue-afloat":"^0.1.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"vue-afloat":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.5.2_1789544959683_0.3178509653661341","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@antfu/design","version":"0.5.3","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"@antfu/design@0.5.3","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/design#readme","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"ddde342c947363fb3a02fbdd1be2fb65f948d068","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.5.3.tgz","fileCount":189,"integrity":"sha512-wpYfDKLhG7cI0NGHpcTzb2cm14ZOsRmyW8aWzX431RtSbX7E3BqnmjqYsRL2IbWVrtJtUGfw53utINUh3Nm7YA==","signatures":[{"sig":"MEYCIQCNlzZRK8wRDrSGMO94D4vmOCsfzAVcE073onH03Q1m7AIhAOLK6UCc/0Oyee8JrLw9e3cjgR/ZviM1zP/nE34Rc6yq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGoOCF/YiBnhhaR7jH/1sJDZT+KDvMRoVVpRzmqlt1NJAiB3B8wvHhPilm3XhDJZU//4bnTqwRoV3I8eQ3rWZyLX8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":410078},"type":"module","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6b50aed5-b144-4d4c-8f89-541b6135380c"}},"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"sideEffects":false,"dependencies":{"@vueuse/core":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.43","tsdown":"^0.23.0","tsnapi":"^1.5.0","unocss":"^66.10.5","reka-ui":"^2.10.4","vue-tsc":"^3.3.11","dompurify":"^3.4.15","happy-dom":"^20.14.5","colorjs.io":"^0.7.1","playwright":"^1.63.0","splitpanes":"^4.1.2","vue-afloat":"^0.2.0","@antfu/utils":"^9.3.0","@unocss/core":">=66.10.5","magic-string":"^1.4.1","unplugin-vue":"^8.0.0","@vue/test-utils":"^2.5.1","@vitejs/plugin-vue":"^6.0.9","tsdown-stale-guard":"^0.1.3","@unocss/preset-mini":"^66.10.5","@axe-core/playwright":"^4.13.0","@storybook/vue3-vite":"^10.6.0","@unocss/preset-icons":"^66.10.5","@unocss/preset-wind3":"^66.10.5","@unocss/preset-wind4":"^66.10.5","@arethetypeswrong/cli":"^0.18.5","@storybook/addon-docs":"^10.6.0","@tanstack/vue-virtual":"^3.13.39","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.10.5","@unocss/transformer-directives":"^66.10.5"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","vue-afloat":"^0.1.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"vue-afloat":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/design_0.5.3_1789972086040_0.9256398662469587","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"_id":"@antfu/design@0.6.0","bugs":"https://github.com/antfu/design/issues","dist":{"shasum":"b3c745ce7c48f6a007786b6a7cdc5f0a6b6cabda","tarball":"https://registry.npmjs.org/@antfu/design/-/design-0.6.0.tgz","fileCount":190,"integrity":"sha512-g3PzULGcqCyTlEOZNgbGeatZE8zGNLa53cmuQzIDq+tFx+iz0mNRYY6ZggDMFrw/uHL/Ptqj3zXNKLGwjlvsdw==","signatures":[{"sig":"MEQCIAnC+/iuydEc1zIFOwEtQyhXb9YUZg+pcC+7jTYPGyxrAiAsl24m402Tyx7PxWIBJEFxmmHUX2WzDn1Q+bNCRstDgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCl4WY8n9Tx49+W0FZr9FcWotLOmmBV++VELSCRaggeaQIgIQXbIs1YhHXUzsOpEHqVeMkPDTDZ8s8KhDl70SLB+lU="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@antfu%2fdesign@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":419252},"name":"@antfu/design","type":"module","author":"Anthony Fu <anthonyfu117@hotmail.com>","exports":{"./a11y":"./a11y/index.ts","./utils":"./utils/index.ts","./unocss":"./unocss/index.ts","./utils/*":"./utils/*.ts","./styles/*":"./styles/*","./styles.css":"./styles/index.css","./composables":"./composables/index.ts","./components/*":"./components/*","./package.json":"./package.json","./composables/*":"./composables/*.ts","./splitpanes.d.ts":"./splitpanes.d.ts"},"funding":"https://github.com/sponsors/antfu","license":"MIT","scripts":{"lint":"eslint","test":"vitest run","docs:gen":"tsx scripts/gen-tokens.ts && node scripts/gen-components.mjs","typecheck":"vue-tsc --noEmit","docs:overview":"node scripts/gen-overview.mjs"},"version":"0.6.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"6b50aed5-b144-4d4c-8f89-541b6135380c"}},"homepage":"https://github.com/antfu/design#readme","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","directories":{},"maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"sideEffects":false,"dependencies":{"@vueuse/core":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.43","tsdown":"^0.23.0","tsnapi":"^1.5.0","unocss":"^66.10.5","reka-ui":"^2.10.4","vue-tsc":"^3.3.11","dompurify":"^3.4.15","happy-dom":"^20.14.5","colorjs.io":"^0.7.1","playwright":"^1.63.0","splitpanes":"^4.1.2","vue-afloat":"^0.2.0","@antfu/utils":"^9.3.0","@unocss/core":">=66.10.5","magic-string":"^1.4.1","unplugin-vue":"^8.0.0","@vue/test-utils":"^2.5.1","@vitejs/plugin-vue":"^6.0.9","tsdown-stale-guard":"^0.1.3","@unocss/preset-mini":"^66.10.5","@axe-core/playwright":"^4.13.0","@storybook/vue3-vite":"^10.6.0","@unocss/preset-icons":"^66.10.5","@unocss/preset-wind3":"^66.10.5","@unocss/preset-wind4":"^66.10.5","@arethetypeswrong/cli":"^0.18.5","@storybook/addon-docs":"^10.6.0","@tanstack/vue-virtual":"^3.13.39","@iconify-json/catppuccin":"^1.2.17","@unocss/preset-web-fonts":"^66.10.5","@unocss/transformer-directives":"^66.10.5"},"peerDependencies":{"vue":"^3.5.0","unocss":">=66.0.0","reka-ui":"^2.0.0","dompurify":"^3.0.0","colorjs.io":"^0.6.0","playwright":"^1.0.0","splitpanes":"^4.0.0","vue-afloat":"^0.1.0","@antfu/utils":"^9.0.0","@unocss/core":">=66.0.0","@axe-core/playwright":"^4.0.0","@tanstack/vue-virtual":"^3.0.0","@iconify-json/catppuccin":"^1.0.0"},"peerDependenciesMeta":{"reka-ui":{"optional":true},"dompurify":{"optional":true},"colorjs.io":{"optional":true},"playwright":{"optional":true},"splitpanes":{"optional":true},"vue-afloat":{"optional":true},"@antfu/utils":{"optional":true},"@unocss/core":{"optional":true},"@axe-core/playwright":{"optional":true},"@tanstack/vue-virtual":{"optional":true},"@iconify-json/catppuccin":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/design_0.6.0_1790819782350_0.2737069951411992"}}},"time":{"created":"2026-06-28T12:38:28.468Z","modified":"2026-10-01T01:56:22.788Z","0.1.0":"2026-06-28T12:38:28.732Z","0.2.0":"2026-06-28T14:45:39.570Z","0.2.1":"2026-06-29T09:55:50.230Z","0.2.2":"2026-07-13T04:10:49.864Z","0.3.0":"2026-07-17T07:06:11.763Z","0.3.1":"2026-07-17T08:04:45.678Z","0.3.2":"2026-07-17T08:55:57.877Z","0.3.3":"2026-08-03T06:25:51.772Z","0.3.4":"2026-08-12T05:49:28.644Z","0.3.5":"2026-08-18T00:58:22.955Z","0.4.0":"2026-08-20T08:22:47.647Z","0.5.0":"2026-09-14T07:22:04.775Z","0.5.1":"2026-09-16T04:03:51.309Z","0.5.2":"2026-09-16T07:49:19.788Z","0.5.3":"2026-09-21T06:28:06.182Z","0.6.0":"2026-10-01T01:56:22.459Z"},"bugs":"https://github.com/antfu/design/issues","author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","homepage":"https://github.com/antfu/design#readme","keywords":["unocss","unocss-preset","vue","design-system","components","devtools","antfu"],"repository":{"url":"git+https://github.com/antfu/design.git","type":"git","directory":"packages/design"},"description":"A customizable, composable design system for devtools-style Vue apps — a UnoCSS preset, Vue primitives, a design skill, and an a11y contrast check","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"readme":"# @antfu/design\n\n> A customizable, **composable** design system for devtools-style Vue apps: a\n> UnoCSS preset (`presetAnthonyDesign`), a set of Vue primitives, a ground-up\n> design skill, and a color-contrast a11y check. Something in between a component\n> library and shadcn.\n\n## Install\n\n```bash\npnpm add @antfu/design unocss vue\n```\n\n## Quick start\n\n```ts\n// uno.config.ts\nimport { presetAnthonyDesign } from '@antfu/design/unocss'\nimport transformerDirectives from '@unocss/transformer-directives'\nimport { defineConfig, presetIcons, presetWebFonts, presetWind4 } from 'unocss'\n\nexport default defineConfig({\n  presets: [\n    presetAnthonyDesign({ primary: '#49833E' }),\n    presetWind4(), // a base preset is required — bring your own\n    presetIcons(),\n    presetWebFonts({ fonts: { sans: 'DM Sans', mono: 'DM Mono' } }),\n  ],\n  // Required — most shipped styles recolor overlays with token `--at-apply`\n  // directives; this transformer expands them (and lets you reuse tokens in CSS).\n  // (vue-afloat.css is the exception — it themes via vue-afloat's own\n  // `--vue-afloat-*` CSS variables and needs no transformer.)\n  transformers: [transformerDirectives()],\n  // The preset ships no z-index scale (stacking is the app's to own) and blocks\n  // plain `z-<number>`. Define the named layers the overlay components use here —\n  // these values are yours; tune them to fit your app's stack.\n  shortcuts: {\n    'z-nav': 'z-[30]',\n    'z-dropdown': 'z-[40]',\n    'z-tooltip': 'z-[45]',\n    'z-toast': 'z-[50]',\n    'z-modal-backdrop': 'z-[60]',\n    'z-modal-content': 'z-[70]',\n    'z-drawer-backdrop': 'z-[80]',\n    'z-drawer-content': 'z-[90]',\n  },\n})\n```\n\n> Pair it with [`@unocss/eslint-plugin`](https://unocss.dev/integrations/eslint)\n> for the feedback loop — it surfaces the blocklist hints (e.g. a plain `z-50`) in\n> your editor and CI instead of silently dropping at build time.\n\n```ts\n// Components are imported by full path (no barrel) — categorized and prefixed:\nimport ActionButton from '@antfu/design/components/Action/ActionButton.vue'\nimport DisplayBadge from '@antfu/design/components/Display/DisplayBadge.vue'\nimport OverlayModal from '@antfu/design/components/Overlay/OverlayModal.vue'\nimport '@antfu/design/styles.css' // everything, incl. splitpanes/reka/vue-afloat overrides\n```\n\n`styles.css` bundles every overlay engine's override. If you don't use them all,\ncherry-pick instead so unused (`splitpanes`/`reka-ui`) CSS never ships:\n\n```ts\nimport '@antfu/design/styles/base.css'\nimport '@antfu/design/styles/scrollbar.css'\nimport '@antfu/design/styles/vue-afloat.css' // only if you use tooltips\n```\n\nThe package ships **raw `.ts` / `.vue` source** (no bundling) — your build\ncompiles it. No extra `content` config is needed: UnoCSS's default scan matches\n`.vue`/`.tsx` by extension (its only default exclude is CSS, not `node_modules`),\nso the components you import are picked up automatically. If you *do* set\n`content.pipeline.include`, note it **replaces** the default scan rather than\nextending it — restate the defaults too, or your own sources stop being generated.\n\nIt's a **single** preset that is **not self-contained**: it contributes only the\nantfu design layer (theme tokens, semantic shortcuts, dynamic rules, severity).\nYou compose the base preset, icons, fonts and reset yourself — and add\n`@unocss/transformer-directives` (the shipped styles use token `--at-apply`\ndirectives) plus, recommended, `@unocss/eslint-plugin` for the feedback loop.\n\n## Exports\n\n| Subpath | What |\n|---|---|\n| `./components/*` | one readable `.vue` per component (e.g. `./components/Display/DisplayBadge.vue`) |\n| `./unocss` | the single `presetAnthonyDesign` preset |\n| `./utils` | color, format, path, semver, contrast, keybinding helpers (pure, stateless) |\n| `./composables/*` | Vue helpers: `colorScheme` (opt-in scheme context) and `toast` (`useToast` queue) |\n| `./a11y` | programmatic color-contrast scan |\n| `./styles.css`, `./styles/*` | all styles, or per-concern files |\n| `./splitpanes.d.ts` | opt-in fallback types for older `splitpanes` (v4.1.2+ ships its own) |\n\n> The package is **stateless** — no dark-mode/clipboard/toast state. Components\n> that vary by scheme take a `colorScheme` prop; toasts are controlled. Use VueUse\n> directly for state.\n>\n> Two **opt-in** helpers reduce the boilerplate without adding global state:\n> `provideColorScheme(() => isDark ? 'dark' : 'light')` (from `@antfu/design/composables/colorScheme`)\n> lets scheme-aware components inherit the scheme instead of threading a prop, and\n> `useToast()` (from `@antfu/design/composables/toast`) owns a toast queue for\n> `FeedbackToasts`. Both only read state you own.\n\n## Migrating an existing app\n\nIf your app predates the design system, adoption is mostly **deletion**:\n\n- **Delete your local token shortcuts.** Apps already on the `*-base` dialect\n  (`bg-base`, `color-base`, `border-base`, `op-fade`, `btn-action`,\n  `badge-color-*`, `color-scale-*`, …) can drop those hand-rolled `uno.config.ts`\n  `shortcuts` blocks — often 20–170 lines — and inherit them from\n  `presetAnthonyDesign`. Set `primary` / `darkBackground` to your existing values\n  (and keep your existing `presetWebFonts` config as-is — this preset has no\n  opinion on fonts) for a near-zero visual diff.\n- **Dedupe local utilities** into `@antfu/design/utils`: the duplicated\n  `getHashColorFromString` / `getPluginColor`, the byte / duration / time-ago\n  formatters, module-id / path parsing, and semver-range parsing all live there.\n- **Bump off the legacy `presetUno` alias.** `presetUno` is the old name for\n  `presetWind3`; switch to a current base (`presetWind4` recommended, or\n  `presetWind3`) so the semantic shortcuts have utilities to expand into. You still\n  bring your own icons, fonts, and `@unocss/reset` — the preset bundles none.\n- **Thread the scheme, not state.** The package owns no dark/toast state: pass\n  `:color-scheme` (or call `provideColorScheme()` once at the root) and move\n  imperative toast singletons onto a `useToast()` queue.\n\nThen follow the **redesign protocol** in the skill (`advanced-patterns`): map raw\ncolors → tokens, swap raw elements for primitives one family at a time, and run the\ncontrast scan in light + dark after each step.\n\n## Embedding in a shadow root\n\nMounting the components inside a shadow root — a web component, a devtools dock,\nan injected overlay — is supported, but two things do not cross the boundary on\ntheir own:\n\n- **The scheme class goes on an _ancestor_, never on the element you style.** The\n  dark variant compiles to a **descendant** selector (`.dark .bg-base`), so a node\n  that *is* `.dark` doesn't match its own dark rules — the subtree renders\n  light-themed inside a dark host. Toggle `dark`/`light` (and `color-scheme`) on a\n  wrapper — `display: contents` works, so it costs no layout — and put the surface\n  utilities on its child. `:host(.dark)` is not an alternative: these are\n  descendant selectors, and they can't reach across the boundary.\n- **Global CSS can't pierce the boundary — inline the styles.** `@antfu/design/styles/*`\n  (scrollbar, reka-ui animations, vue-afloat, …) must be part of the sheet you\n  inject into the root, alongside the UnoCSS output. They're written with `*` /\n  unscoped selectors precisely so they work in either place. Add\n  `scrollbar-gutter: stable` on your own scroll container if you want the gutter\n  reserved.\n\nPortaled content needs no setup. Every component that teleports — the dialogs\n(`OverlayModal`, `OverlayDrawer`, `OverlayConfirm`), the poppers (`FormSelect`,\n`FormCombobox`, `OverlayDropdown`, `OverlayHoverCard`, `OverlayContextMenu`,\n`LayoutMenubar`) and `FeedbackToasts` — detects the enclosing shadow root and\nteleports into a container appended to it, which also mirrors the `dark`/`light`\nclass of the nearest scheme wrapper so dark-mode tokens keep resolving there. Pass\nan explicit `to` (a selector or element) to override the target. The\n**Utilities/ShadowRoot** story mounts them all inside a shadow root.\n\n## Accessibility\n\nA color-contrast scan (axe-core + Playwright) runs a URL in light **and** dark\nmode. Use it programmatically:\n\n```ts\nimport { formatContrastReport, runContrastScan } from '@antfu/design/a11y'\n\nconst result = await runContrastScan({ url: 'http://localhost:6006/iframe.html' })\nconsole.log(formatContrastReport(result))\n```\n\n…or run the bundled script with `tsx`:\n\n```bash\ntsx node_modules/@antfu/design/a11y/cli.ts http://localhost:6006/iframe.html\n```\n\n## Components\n\n<!-- COMPONENTS:START -->\n### Action\n\n| Component | Use it for |\n|---|---|\n| `ActionButton` | actions. `variant` action/primary/text, polymorphic `href`/`as`, `icon`, `loading`. |\n| `ActionIconButton` | a round icon-only button with a `tooltip`, `active` state, `#badge`. Compose with VueUse's `useDark` for a dark toggle. |\n| `ActionToggle` | a single pressed/unpressed toggle button (`icon`, `label`). |\n| `ActionToggleGroup` | a segmented set of toggles from `options`, single- or multi-select (`multiple`), optionally icon-only. |\n\n### Display\n\n| Component | Use it for |\n|---|---|\n| `DisplayAvatar` | an image avatar that falls back to hash-colored initials from `name` when `src` is absent/fails. |\n| `DisplayBadge` | a status/type/tag chip — hash-colored from text, a palette name (`color=\"green\"`), a hue, or muted. `colorScheme`, `variant`, `icon`, `rounded` (`md`/`full`/em number), `paddingX`/`paddingY`; sized by its own `font-size`. |\n| `DisplayBytes` | humanized size, `colorize`, percent of `total`. |\n| `DisplayDate` | relative time + exact-date tooltip, `colorize` by age, `live`. |\n| `DisplayDonut` | a progress ring. |\n| `DisplayDuration` | ms → human, `colorize` by severity. |\n| `DisplayFileIcon` | ext/path → icon via a configurable rule list (`rules`, `folderRules`), with an `invert` escape hatch for dark icon sets on light surfaces. |\n| `DisplayFilePath` | truncates, dims directories, decodes `.pnpm`, icon, link. |\n| `DisplayIconifyRemoteIcon` | renders an Iconify icon by name without a bundled icon set, fetching from the Iconify API. |\n| `DisplayKbd` | renders a chord string (e.g. `mod+k`) as platform glyphs. |\n| `DisplayKeyValue` | a labeled stat — inline row or stacked, `mono` value, `#badge` adornment. |\n| `DisplayLabel` | a fully-rounded `DisplayBadge` (tighter padding) for GitHub-style tags (`colorScheme`). |\n| `DisplayNumber` | formatted numbers (`Intl`), mono + tabular, `prefix`/`suffix`. |\n| `DisplayNumberBadge` | a `DisplayNumber` in a badge shell — a count pill. |\n| `DisplayPackageName` | scope colored by hash (`colorScheme`). |\n| `DisplayProgressBar` | a linear progress track — determinate (`value` 0–1) or indeterminate when omitted, `color`, `rounded`. |\n| `DisplayProportionBar` | a stacked proportion bar. |\n| `DisplaySafeImage` | an `<img>` that swaps to the `#fallback` slot on a missing/failed `src`, with an optional `preload` to avoid a flash. |\n| `DisplayTree` | nests a flat `items` list (via `getPath`) or pre-built `nodes` into an expandable file/folder-style tree, with `#leaf`/`#default` slot overrides. |\n| `DisplayVersion` | `vX.Y.Z` prefix logic; passes specs/ranges (`workspace:*`, `^1.2`) through untouched. |\n\n### Form\n\n| Component | Use it for |\n|---|---|\n| `FormCheckbox` | a checkbox control bound with `v-model`. |\n| `FormCombobox` | a searchable, filterable select (reka-ui `Combobox`) over an `options` list. |\n| `FormField` | wraps a control with a `label`, `description`, and `error` (role=\"alert\"), `required` marker. |\n| `FormNumberInput` | a numeric input with `min`/`max`/`step` clamping and optional −/+ stepper `controls`. |\n| `FormRadioGroup` | a radio-button group bound with `v-model`. |\n| `FormSearchField` | a search input — icon + `DisplayKbd` shortcut hint + clear button. |\n| `FormSegmentedControl` | a single-select segmented control (reka-ui `RadioGroup`) over an `options` list, including a valid `null` segment. |\n| `FormSelect` | a native-feeling select bound with `v-model`. |\n| `FormSwitch` | an on/off switch bound with `v-model`. |\n| `FormTextInput` | a single-line text input, `icon`, `invalid` state. |\n| `FormTextarea` | a multi-line text input, `rows`, `invalid` state, `resize` toggle. |\n\n### Overlay\n\n| Component | Use it for |\n|---|---|\n| `OverlayConfirm` | an AlertDialog for a confirm/cancel decision, `variant=\"danger\"` for destructive actions. |\n| `OverlayContextMenu` (+ `OverlayContextMenuItem`, `OverlayContextMenuLabel`, `OverlayContextMenuSeparator`) | a right-click menu. |\n| `OverlayDrawer` | a slide-in panel from any `side` (left/right/top/bottom), sized by `width`. |\n| `OverlayDropdown` (+ `OverlayDropdownCheckboxItem`, `OverlayDropdownGroup`, `OverlayDropdownLabel`, `OverlayDropdownRadioGroup`, `OverlayDropdownRadioItem`, `OverlayDropdownSeparator`, `OverlayDropdownSub`) | a trigger-anchored dropdown menu. |\n| `OverlayDropdownItem` | a selectable dropdown row — `icon`, `variant=\"danger\"`, trailing `shortcut` (rendered via `DisplayKbd`). |\n| `OverlayHoverCard` | a hover-triggered popover with configurable `openDelay`/`closeDelay`. |\n| `OverlayModal` | a centered dialog (`title`, `description`, `#trigger` slot). |\n| `OverlayTooltip` | a vue-afloat tooltip — text `content` or the `#content` slot, configurable `placement`/`delay`/`triggers`, plus a virtual-anchor mode for canvas/graph overlays. |\n\n### Layout\n\n| Component | Use it for |\n|---|---|\n| `LayoutAccordion` | collapsible sections from `items`; one entry = a single section, `multiple` for several open at once. |\n| `LayoutBreadcrumb` | a linked path trail from `items`; the last crumb renders as plain text. |\n| `LayoutCard` | a bordered content surface. |\n| `LayoutDataTable` | a sortable, generic data table from `columns` + `rows`, optional `stickyHeader`. |\n| `LayoutExpandableList` | \"show N more\" truncation for a list. |\n| `LayoutMenubar` | a desktop-style menu bar from a `menus` list of `MenubarMenuEntry`. |\n| `LayoutPagination` | page-number navigation. |\n| `LayoutPanelGrids` | a `dots`/`grid` background pattern surface for empty states or canvases. |\n| `LayoutScrollArea` | a custom-scrollbar scroll container. |\n| `LayoutSeparator` | a horizontal/vertical divider, optionally with a centered `label`. |\n| `LayoutSideNav` | a vertical nav list from `items`, active-item highlighting via `v-model`. |\n| `LayoutSplitPane` | resizable split panes (wraps `splitpanes`). |\n| `LayoutTabs` | underline/segment tabs, `count` chips. |\n| `LayoutToolbar` | a sticky, glass-surfaced action bar with `#start`/`#search`/`#end` slots. |\n| `LayoutVirtualList` | a virtualized list (`@tanstack/vue-virtual`) for large collections. |\n\n### Feedback\n\n| Component | Use it for |\n|---|---|\n| `FeedbackEmptyState` | an empty/zero-state placeholder — icon, title, description, `#action` slot. |\n| `FeedbackLoading` | a loading placeholder wrapping `FeedbackSpinner`. |\n| `FeedbackSkeleton` | a shimmer placeholder block for loading content. |\n| `FeedbackSpinner` | a spinner glyph. |\n| `FeedbackTip` | an inline callout — info/success/warning/error. |\n| `FeedbackToasts` | a presentational toast stack (`items`, `position`) — the app owns the list and ids via its own `useToast()`. |\n<!-- COMPONENTS:END -->\n\nFull catalog with import paths: [core-components.md](../../skills/antfu-design/references/core-components.md).\n\n## Tokens\n\n<!-- TOKENS:START -->\n### Semantic & composite shortcuts\n\n| Token | Expands to |\n|---|---|\n| `color-base` | `color-base-light dark:color-base-dark` |\n| `color-base-light` | `color-neutral-800` |\n| `color-base-dark` | `color-neutral-200` |\n| `color-muted` | `color-neutral-600 dark:color-neutral-400` |\n| `color-faint` | `color-neutral-500 dark:color-neutral-500` |\n| `color-active` | `color-primary-600 dark:color-primary-300` |\n| `bg-base` | `bg-white dark:bg-#111` |\n| `bg-secondary` | `bg-#f6f6f6 dark:bg-#101010` |\n| `bg-raised` | `bg-white/65 dark:bg-black/60` |\n| `bg-sunken` | `bg-black/4 dark:bg-white/6` |\n| `bg-active` | `bg-#99999920` |\n| `bg-ambient` | `bg-#99999925` |\n| `bg-hover` | `bg-#99999915` |\n| `bg-code` | `bg-gray-500/5` |\n| `bg-tooltip` | `bg-white/75 dark:bg-#111/75 backdrop-blur-8` |\n| `bg-gradient-more` | `bg-gradient-to-t from-white via-white/80 to-white/0 dark:from-#111 dark:via-#111/80 dark:to-#111/0` |\n| `border-base` | `border-#9992` |\n| `border-mute` | `border-#9991` |\n| `border-active` | `border-primary-600/25 dark:border-primary-400/25` |\n| `ring-base` | `ring-#9992` |\n| `op-fade` | `op65` |\n| `op-mute` | `op40` |\n| `op-active` | `op100` |\n| `op-disabled` | `op30` |\n| `icon-catppuccin` | `invert-100 hue-rotate-180 brightness-80 dark:invert-0 dark:hue-rotate-0 dark:brightness-100` |\n| `btn-action` | `border border-base rounded flex gap-2 items-center px2 py1 op75 hover:op100 hover:bg-hover transition disabled:pointer-events-none disabled:op30! outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40` |\n| `btn-action-sm` | `btn-action text-sm` |\n| `btn-action-active` | `color-active border-active! bg-active op100!` |\n| `btn-icon` | `w-9 h-9 rounded-full op-fade hover:op100 hover:bg-hover transition flex items-center justify-center disabled:pointer-events-none disabled:op30 outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40` |\n| `btn-icon-compact` | `w-6 h-6 rounded op-fade hover:op100 hover:bg-hover transition flex items-center justify-center disabled:pointer-events-none disabled:op30 outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40` |\n| `btn-icon-square` | `w-9 h-9 rounded border border-base op-fade hover:op100 hover:bg-hover transition flex items-center justify-center disabled:pointer-events-none disabled:op30 outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40` |\n| `btn-primary` | `px2 py1 rounded border border-transparent flex gap-2 items-center bg-primary-500 hover:bg-primary-600 text-white transition disabled:op50 disabled:pointer-events-none outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40` |\n| `btn-text` | `px2 py1 rounded border border-transparent inline-flex gap-2 items-center op75 hover:op100 hover:bg-hover transition disabled:pointer-events-none disabled:op30! outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40` |\n| `badge` | `inline-flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium leading-none` |\n| `badge-active` | `badge bg-active color-active` |\n| `badge-muted` | `badge bg-#8881 color-muted` |\n| `pad-safe-t` | `pt-[env(safe-area-inset-top)]` |\n| `pad-safe-r` | `pr-[env(safe-area-inset-right)]` |\n| `pad-safe-b` | `pb-[env(safe-area-inset-bottom)]` |\n| `pad-safe-l` | `pl-[env(safe-area-inset-left)]` |\n| `pad-safe-x` | `pad-safe-l pad-safe-r` |\n| `pad-safe-y` | `pad-safe-t pad-safe-b` |\n| `pad-safe` | `pad-safe-x pad-safe-y` |\n\n### Severity scale\n\n| Token | Expands to |\n|---|---|\n| `color-scale-neutral` | `text-gray-700 dark:text-gray-300` |\n| `color-scale-low` | `text-lime-700 dark:text-lime-300 dark:saturate-75` |\n| `color-scale-medium` | `text-amber-700 dark:text-amber-300 dark:saturate-90` |\n| `color-scale-high` | `text-orange-700 dark:text-orange-300` |\n| `color-scale-critical` | `text-red-700 dark:text-red-300` |\n\n### Type sizes\n\n| Token | Expands to |\n|---|---|\n| `text-micro` | `text-[10px] leading-[1.4]` |\n| `text-mini` | `text-[11px] leading-[1.45]` |\n| `text-compact` | `text-[12px] leading-[1.5]` |\n\n### Dynamic\n\n| Token | Expands to |\n|---|---|\n| `badge-color-<name>` | a chip tinted by any palette color name (dark-aware) |\n| `bg-glass` / `bg-glass:<n>` | translucent surface + `backdrop-blur` |\n| `bg-dots` / `bg-dots-<n>` | radial dot-grid background, variable cell size in px (default 16) |\n| `bg-grid` / `bg-grid-<n>` | crosshatch grid-lines background, variable cell size in px (default 16) |\n| `scroll-fade` / `scroll-fade-{x,y,t,b,l,r,s,e}` | scroll-aware edge fade (`scroll-fade-<n>`, `scroll-fade-none`); pairs with `no-scrollbar` |\n| `shimmer` / `shimmer-{once,reverse,none}` | text shimmer over `currentColor` (`shimmer-{color,duration,spread,angle}-*`) |\n<!-- TOKENS:END -->\n\n## License\n\n[MIT](./LICENSE) © [Anthony Fu](https://github.com/antfu)\n","readmeFilename":""}