{"_id":"@digital-retex/twind-design-tokens","_rev":"7-1c25af1f0af83e86d3faef57a818a5a3","name":"@digital-retex/twind-design-tokens","dist-tags":{"latest":"2.1.2"},"versions":{"1.2.0":{"name":"@digital-retex/twind-design-tokens","version":"1.2.0","license":"MIT","_id":"@digital-retex/twind-design-tokens@1.2.0","maintainers":[{"name":"digital-retex","email":"devs@atoms.studio"}],"homepage":"https://github.com/WeAreRetex/tailwind-theme-tokens#readme","bugs":{"url":"https://github.com/WeAreRetex/tailwind-theme-tokens/issues"},"dist":{"shasum":"e20408797e44a4e51f676121a8f79d37bdbbc6f4","tarball":"https://registry.npmjs.org/@digital-retex/twind-design-tokens/-/twind-design-tokens-1.2.0.tgz","fileCount":14,"integrity":"sha512-lfEw5WvI94XEVeYiHbGUCW2GcNGHHypDJlvDfkJPfNI40MJxB9Zvz0LXUP0FC0jHI7KzJ2gxCLXbt4Us2tQSoQ==","signatures":[{"sig":"MEUCIFAMm5c54/ee/GfElXwumC5bhAUXOcQpB9AKHybTCcPyAiEApMjOIN+iIzzsX4341uHW0uqMMJz48pQCB0aqeZm+z/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20952},"main":"./dist/module.cjs","type":"module","types":"./dist/types.d.ts","exports":{".":{"types":"./dist/types.d.ts","import":"./dist/module.mjs","require":"./dist/module.cjs"}},"gitHead":"d379434c55b384c13236b3d18a8c102d74e01296","scripts":{"dev":"nuxi dev playground","lint":"eslint . --fix","test":"vitest run","prepack":"nuxt-module-build build","prepare":"husky","release":"npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags","docs:dev":"nuxi dev docs","dev:build":"nuxi build playground","docs:build":"nuxi build docs","test:types":"vue-tsc --noEmit && cd playground && vue-tsc --noEmit","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground","docs:preview":"nuxi preview docs","docs:generate":"nuxi generate docs"},"_npmUser":{"name":"digital-retex","email":"devs@atoms.studio"},"repository":{"url":"git+https://github.com/WeAreRetex/tailwind-theme-tokens.git","type":"git"},"workspaces":["playground"],"_npmVersion":"10.8.1","description":"Design tokens to Tailwind CSS","directories":{},"lint-staged":{"**/*.{js,ts,vue}":["prettier --write --no-error-on-unmatched-pattern","bun run lint"]},"_nodeVersion":"20.16.0","dependencies":{"pathe":"^2.0.3","@nuxt/kit":"^3.15.4","style-dictionary":"^4.3.3"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^3.15.4","husky":"^9.1.7","eslint":"^9.20.1","vitest":"^3.0.5","vue-tsc":"^2.2.0","css-tree":"^3.1.0","prettier":"^3.5.1","typescript":"~5.7.3","@types/node":"latest","changelogen":"^0.5.7","lint-staged":"^15.4.3","@nuxt/schema":"^3.15.4","@nuxt/devtools":"^2.0.0","@types/css-tree":"^2.3.10","@nuxt/test-utils":"^3.15.4","@nuxt/eslint-config":"^1.0.1","@nuxt/module-builder":"^0.8.4","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.3"},"_npmOperationalInternal":{"tmp":"tmp/twind-design-tokens_1.2.0_1741974826751_0.323636229976636","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@digital-retex/twind-design-tokens","version":"1.1.1","license":"MIT","_id":"@digital-retex/twind-design-tokens@1.1.1","maintainers":[{"name":"digital-retex","email":"devs@atoms.studio"}],"homepage":"https://github.com/WeAreRetex/tailwind-theme-tokens#readme","bugs":{"url":"https://github.com/WeAreRetex/tailwind-theme-tokens/issues"},"dist":{"shasum":"c91191a18657e060236b381a35641da19c88f8ac","tarball":"https://registry.npmjs.org/@digital-retex/twind-design-tokens/-/twind-design-tokens-1.1.1.tgz","fileCount":14,"integrity":"sha512-NaEJMY2nOySh2oYWYrOfpxnh30pIurDws82h2PEJT5IxGzXfbft0yihPGYvbWRLIPBY7z3FVENmIy9uST/c5Tg==","signatures":[{"sig":"MEUCIQC9Hrq3wweAxZMFOo2H33cDV6fPqiHMhpxo+/l8Yqmb0QIgIFIuvBOLdO/0nUAcuKraLydtRQB6QQLlCdT6yGHXK5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31311},"main":"./dist/module.cjs","type":"module","types":"./dist/types.d.ts","exports":{".":{"types":"./dist/types.d.ts","import":"./dist/module.mjs","require":"./dist/module.cjs"}},"gitHead":"a4382977b66423f4e943244db3a5f1618814257c","release":{"branches":["release"]},"scripts":{"dev":"nuxi dev playground","lint":"eslint . --fix","test":"vitest run","prepack":"nuxt-module-build build","prepare":"husky","release":"bun run lint && bun run test && bun run prepack && semantic-release","docs:dev":"nuxi dev docs","dev:build":"nuxi build playground","docs:build":"nuxi build docs","test:types":"vue-tsc --noEmit && cd playground && vue-tsc --noEmit","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground","docs:preview":"nuxi preview docs","docs:generate":"nuxi generate docs"},"_npmUser":{"name":"digital-retex","email":"devs@atoms.studio"},"repository":{"url":"git+https://github.com/WeAreRetex/tailwind-theme-tokens.git","type":"git"},"workspaces":["playground"],"_npmVersion":"10.8.1","description":"Design tokens to Tailwind CSS","directories":{},"lint-staged":{"**/*.{js,ts,vue}":["prettier --write --no-error-on-unmatched-pattern","bun run lint"]},"_nodeVersion":"20.16.0","dependencies":{"defu":"^6.1.4","pathe":"^2.0.3","ignore":"^7.0.3","slugify":"^1.6.6","@nuxt/kit":"^3.16.2","semantic-release":"^24.2.3","style-dictionary":"^4.3.3"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^3.15.4","husky":"^9.1.7","eslint":"^9.23.0","vitest":"^3.1.1","vue-tsc":"^2.2.8","css-tree":"^3.1.0","prettier":"^3.5.3","typescript":"~5.8.2","@types/node":"latest","changelogen":"^0.6.1","lint-staged":"^15.5.0","@nuxt/schema":"^3.15.4","@nuxt/devtools":"^2.3.2","@types/css-tree":"^2.3.10","@nuxt/test-utils":"^3.17.2","@tailwindcss/node":"^4.1.1","@nuxt/eslint-config":"^1.3.0","@nuxt/module-builder":"^0.8.4","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6"},"_npmOperationalInternal":{"tmp":"tmp/twind-design-tokens_1.1.1_1744041365923_0.9449878313858298","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@digital-retex/twind-design-tokens","version":"2.0.0","license":"MIT","_id":"@digital-retex/twind-design-tokens@2.0.0","maintainers":[{"name":"digital-retex","email":"devs@atoms.studio"}],"homepage":"https://github.com/WeAreRetex/tailwind-theme-tokens#readme","bugs":{"url":"https://github.com/WeAreRetex/tailwind-theme-tokens/issues"},"dist":{"shasum":"05abd10747b2c0007cb1f7dd444b31d35e1e8f67","tarball":"https://registry.npmjs.org/@digital-retex/twind-design-tokens/-/twind-design-tokens-2.0.0.tgz","fileCount":14,"integrity":"sha512-HwJsX/eygmc36RCV1KaQBVO2e31wMnlvSGbFJbWksKjlDP75f57PnOKlZ2uEE9cCXHT/pQtcL77xSJCfzgrAkw==","signatures":[{"sig":"MEUCIDwXuq4P3tgaj9S4PIYEzjQ5Adx6k5BaRwi9jhNYMbXuAiEA1KCPTCjfUza7CPHq/j6t/VTgCQzjn7pBhVXA5pQQI2g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31311},"main":"./dist/module.cjs","type":"module","types":"./dist/types.d.ts","exports":{".":{"types":"./dist/types.d.ts","import":"./dist/module.mjs","require":"./dist/module.cjs"}},"gitHead":"a4382977b66423f4e943244db3a5f1618814257c","release":{"branches":["release"]},"scripts":{"dev":"nuxi dev playground","lint":"eslint . --fix","test":"vitest run","prepack":"nuxt-module-build build","prepare":"husky","release":"bun run lint && bun run test && bun run prepack && semantic-release","docs:dev":"nuxi dev docs","dev:build":"nuxi build playground","docs:build":"nuxi build docs","test:types":"vue-tsc --noEmit && cd playground && vue-tsc --noEmit","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground","docs:preview":"nuxi preview docs","docs:generate":"nuxi generate docs"},"_npmUser":{"name":"digital-retex","email":"devs@atoms.studio"},"repository":{"url":"git+https://github.com/WeAreRetex/tailwind-theme-tokens.git","type":"git"},"workspaces":["playground"],"_npmVersion":"10.8.1","description":"Design tokens to Tailwind CSS","directories":{},"lint-staged":{"**/*.{js,ts,vue}":["prettier --write --no-error-on-unmatched-pattern","bun run lint"]},"_nodeVersion":"20.16.0","dependencies":{"defu":"^6.1.4","pathe":"^2.0.3","ignore":"^7.0.3","slugify":"^1.6.6","@nuxt/kit":"^3.16.2","semantic-release":"^24.2.3","style-dictionary":"^4.3.3"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^3.15.4","husky":"^9.1.7","eslint":"^9.23.0","vitest":"^3.1.1","vue-tsc":"^2.2.8","css-tree":"^3.1.0","prettier":"^3.5.3","typescript":"~5.8.2","@types/node":"latest","changelogen":"^0.6.1","lint-staged":"^15.5.0","@nuxt/schema":"^3.15.4","@nuxt/devtools":"^2.3.2","@types/css-tree":"^2.3.10","@nuxt/test-utils":"^3.17.2","@tailwindcss/node":"^4.1.1","@nuxt/eslint-config":"^1.3.0","@nuxt/module-builder":"^0.8.4","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6"},"_npmOperationalInternal":{"tmp":"tmp/twind-design-tokens_2.0.0_1744041469489_0.6254677481111091","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@digital-retex/twind-design-tokens","version":"2.1.0","license":"MIT","_id":"@digital-retex/twind-design-tokens@2.1.0","maintainers":[{"name":"digital-retex","email":"devs@atoms.studio"}],"homepage":"https://github.com/WeAreRetex/tailwind-theme-tokens#readme","bugs":{"url":"https://github.com/WeAreRetex/tailwind-theme-tokens/issues"},"dist":{"shasum":"9395c05bebf758e2469b78978040bc4b704c9564","tarball":"https://registry.npmjs.org/@digital-retex/twind-design-tokens/-/twind-design-tokens-2.1.0.tgz","fileCount":29,"integrity":"sha512-jnUvC31KqhKTb9KxAlH5ociMe6segqxiB7+yohef0SI4DztjXUc/RgOO8CDIE5/Ud6p/woiLshd+fjTR+6S0aQ==","signatures":[{"sig":"MEUCIQCgGcLASb7NVDFrCtPFJ+WptydJfRuUTAZsSjVCXjXnVgIgBJ1P6ZHYdgnCm9VFBPkUs6BnlhSvfjZclIgLZbdNGG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45645},"main":"./dist/module.cjs","type":"module","types":"./dist/types.d.ts","exports":{".":{"types":"./dist/types.d.ts","import":"./dist/module.mjs","require":"./dist/module.cjs"}},"gitHead":"09f020736e7c79d470a376ff3ca5448b9e4a180e","release":{"branches":["release"]},"scripts":{"dev":"nuxi dev playground","lint":"eslint . --fix","test":"vitest run","prepack":"nuxt-module-build build","prepare":"husky","release":"bun run lint && bun run test && bun run prepack && semantic-release","docs:dev":"nuxi dev docs","dev:build":"nuxi build playground","docs:build":"nuxi build docs","test:types":"vue-tsc --noEmit && cd playground && vue-tsc --noEmit","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground","docs:preview":"nuxi preview docs","docs:generate":"nuxi generate docs"},"_npmUser":{"name":"digital-retex","email":"devs@atoms.studio"},"repository":{"url":"git+https://github.com/WeAreRetex/tailwind-theme-tokens.git","type":"git"},"workspaces":["playground"],"_npmVersion":"10.9.2","description":"Design tokens to Tailwind CSS","directories":{},"lint-staged":{"**/*.{js,ts,vue}":["prettier --write --no-error-on-unmatched-pattern","bun run lint"]},"_nodeVersion":"20.19.0","dependencies":{"defu":"^6.1.4","pathe":"^2.0.3","ignore":"^7.0.3","@nuxt/kit":"^3.16.2","style-dictionary":"^4.3.3","@tailwindcss/node":"^4.1.3","@tailwindcss/vite":"^4.1.3"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^3.15.4","husky":"^9.1.7","eslint":"^9.23.0","vitest":"^3.1.1","vue-tsc":"^2.2.8","css-tree":"^3.1.0","prettier":"^3.5.3","typescript":"~5.8.2","@types/node":"latest","changelogen":"^0.6.1","lint-staged":"^15.5.0","@nuxt/schema":"^3.15.4","@nuxt/devtools":"^2.3.2","@types/css-tree":"^2.3.10","@nuxt/test-utils":"^3.17.2","semantic-release":"^24.2.3","@nuxt/eslint-config":"^1.3.0","@nuxt/module-builder":"^0.8.4","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6"},"_npmOperationalInternal":{"tmp":"tmp/twind-design-tokens_2.1.0_1744620631692_0.6484923099982003","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@digital-retex/twind-design-tokens","version":"2.1.1","license":"MIT","_id":"@digital-retex/twind-design-tokens@2.1.1","maintainers":[{"name":"digital-retex","email":"devs@atoms.studio"}],"homepage":"https://github.com/WeAreRetex/tailwind-theme-tokens#readme","bugs":{"url":"https://github.com/WeAreRetex/tailwind-theme-tokens/issues"},"dist":{"shasum":"602b7c405b86bfbdcdbbd6bc73ab915f26e3a55b","tarball":"https://registry.npmjs.org/@digital-retex/twind-design-tokens/-/twind-design-tokens-2.1.1.tgz","fileCount":29,"integrity":"sha512-ACqxMD7Ho3ABQXwdzCp18UVo3u9Syhq1uJRHgp4083oBbXs3wLZ+PLgER3nPpCBnRR8YvpK4gN2PfVrm8uJFrw==","signatures":[{"sig":"MEYCIQDA6vimjno9wBl1sKQFt0tNsp2JBc9bOTq0/zwc/qZrwQIhAMLbwhfHl/ts/JtZOz4ZQksA4iaKuU0OGfZuaeZRf1Dp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45900},"main":"./dist/module.cjs","type":"module","types":"./dist/types.d.ts","exports":{".":{"types":"./dist/types.d.ts","import":"./dist/module.mjs","require":"./dist/module.cjs"}},"gitHead":"d796ef67cdebe128428cdc3385c85fccb505b4fd","release":{"branches":["release"]},"scripts":{"dev":"nuxi dev playground","lint":"eslint . --fix","test":"vitest run","prepack":"nuxt-module-build build","prepare":"husky","release":"bun run lint && bun run test && bun run prepack && semantic-release","docs:dev":"nuxi dev docs","dev:build":"nuxi build playground","docs:build":"nuxi build docs","test:types":"vue-tsc --noEmit && cd playground && vue-tsc --noEmit","test:watch":"vitest watch","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground","docs:preview":"nuxi preview docs","docs:generate":"nuxi generate docs"},"_npmUser":{"name":"digital-retex","email":"devs@atoms.studio"},"repository":{"url":"git+https://github.com/WeAreRetex/tailwind-theme-tokens.git","type":"git"},"workspaces":["playground"],"_npmVersion":"10.9.2","description":"Design tokens to Tailwind CSS","directories":{},"lint-staged":{"**/*.{js,ts,vue}":["prettier --write --no-error-on-unmatched-pattern","bun run lint"]},"_nodeVersion":"20.19.0","dependencies":{"defu":"^6.1.4","pathe":"^2.0.3","ignore":"^7.0.3","@nuxt/kit":"^3.16.2","style-dictionary":"^4.3.3","@tailwindcss/node":"^4.1.3","@tailwindcss/vite":"^4.1.3"},"_hasShrinkwrap":false,"devDependencies":{"nuxt":"^3.15.4","husky":"^9.1.7","eslint":"^9.23.0","vitest":"^3.1.1","vue-tsc":"^2.2.8","css-tree":"^3.1.0","prettier":"^3.5.3","typescript":"~5.8.2","@types/node":"latest","changelogen":"^0.6.1","lint-staged":"^15.5.0","@nuxt/schema":"^3.15.4","@nuxt/devtools":"^2.3.2","@types/css-tree":"^2.3.10","@nuxt/test-utils":"^3.17.2","semantic-release":"^24.2.3","@nuxt/eslint-config":"^1.3.0","@nuxt/module-builder":"^0.8.4","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6"},"_npmOperationalInternal":{"tmp":"tmp/twind-design-tokens_2.1.1_1744633045475_0.6102175088602613","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@digital-retex/twind-design-tokens","version":"2.1.2","description":"Design tokens to Tailwind CSS","repository":{"type":"git","url":"git+https://github.com/WeAreRetex/tailwind-theme-tokens.git"},"license":"MIT","type":"module","exports":{".":{"types":"./dist/types.d.ts","import":"./dist/module.mjs","require":"./dist/module.cjs"}},"main":"./dist/module.cjs","types":"./dist/types.d.ts","workspaces":["playground"],"scripts":{"prepack":"nuxt-module-build build","dev":"nuxi dev playground","dev:build":"nuxi build playground","dev:prepare":"nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground","release":"bun run lint && bun run test && bun run prepack && semantic-release","release:local":"bun run prepack && npm pack","docs:dev":"nuxi dev docs","docs:build":"nuxi build docs","docs:generate":"nuxi generate docs","docs:preview":"nuxi preview docs","lint":"eslint . --fix","test":"vitest run","test:watch":"vitest watch","test:types":"vue-tsc --noEmit && cd playground && vue-tsc --noEmit","prepare":"husky"},"dependencies":{"@nuxt/kit":"^3.16.2","@tailwindcss/node":"^4.1.3","@tailwindcss/vite":"^4.1.3","defu":"^6.1.4","ignore":"^7.0.3","pathe":"^2.0.3","style-dictionary":"^4.3.3"},"devDependencies":{"@nuxt/devtools":"^2.3.2","@nuxt/eslint-config":"^1.3.0","@nuxt/module-builder":"^0.8.4","@nuxt/schema":"^3.15.4","@nuxt/test-utils":"^3.17.2","@types/css-tree":"^2.3.10","@types/node":"latest","changelogen":"^0.6.1","css-tree":"^3.1.0","eslint":"^9.23.0","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.6","husky":"^9.1.7","lint-staged":"^15.5.0","nuxt":"^3.15.4","prettier":"^3.5.3","typescript":"~5.8.2","vitest":"^3.1.1","vue-tsc":"^2.2.8","semantic-release":"^24.2.3"},"lint-staged":{"**/*.{js,ts,vue}":["prettier --write --no-error-on-unmatched-pattern","bun run lint"]},"release":{"branches":["release"]},"_id":"@digital-retex/twind-design-tokens@2.1.2","gitHead":"b2946167887e0a79310675cd42f5cebaedc1c47f","bugs":{"url":"https://github.com/WeAreRetex/tailwind-theme-tokens/issues"},"homepage":"https://github.com/WeAreRetex/tailwind-theme-tokens#readme","_nodeVersion":"20.19.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-egNHa6Kgoku/OV0xJ4Oj+p8Fo21MOnDjDZu4cs3VxGSqkGZet3QZKDfRggGlvEzHV0jRir27o6zNFsI1L8zxew==","shasum":"fd8c5a0bfc1a3dc7324eb4291eece0686430239d","tarball":"https://registry.npmjs.org/@digital-retex/twind-design-tokens/-/twind-design-tokens-2.1.2.tgz","fileCount":29,"unpackedSize":47114,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHDf5FCoyqE214AO2KaOV5YukfqVxye1tJe8a59u2niyAiEAlQchR2s9qG4hg0NVd0ZbQgTS8zu9AkpI+XIdAwY4+w8="}]},"_npmUser":{"name":"digital-retex","email":"devs@atoms.studio"},"directories":{},"maintainers":[{"name":"digital-retex","email":"devs@atoms.studio"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/twind-design-tokens_2.1.2_1744709369391_0.5341699921619532"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-14T17:53:46.750Z","modified":"2025-04-15T09:29:29.745Z","1.2.0":"2025-03-14T17:53:46.920Z","1.1.1":"2025-04-07T15:56:06.160Z","2.0.0":"2025-04-07T15:57:49.714Z","2.1.0":"2025-04-14T08:50:31.875Z","2.1.1":"2025-04-14T12:17:25.648Z","2.1.2":"2025-04-15T09:29:29.569Z"},"bugs":{"url":"https://github.com/WeAreRetex/tailwind-theme-tokens/issues"},"license":"MIT","homepage":"https://github.com/WeAreRetex/tailwind-theme-tokens#readme","repository":{"type":"git","url":"git+https://github.com/WeAreRetex/tailwind-theme-tokens.git"},"description":"Design tokens to Tailwind CSS","maintainers":[{"name":"digital-retex","email":"devs@atoms.studio"}],"readme":"# Tailwind Theme Tokens 🪙\n\nNuxt module for generating Tailwind theme variables using [structured design tokens](#linkGuideForDesign).\n\n## Features\n\n- 🎨 Tailwind CSS v4\n- 🚀 Powered by Style Dictionary\n- 📦 Ready-to-use design tokens structure to share with your design team\n- 🎛️ Manages `primitive`, `theme` and `breakpoint` tokens\n\n## Get Started\n\n### Installation\n\nAdd the module to your `nuxt.config.ts` and configure it with the `tailwindTokens` configuration key\n\n```ts\nexport default defineNuxtConfig({\n  modules: ['@digital-retex/twind-design-tokens'],\n  tailwindTokens: {\n    //Options\n  },\n})\n```\n\nThat's it! You can now use the Tailwind Theme Tokens in your Nuxt app ✨\n\n### Configuration\n\nTo configure the tailwind tokens module, you can use the `tailwindTokens` key in your `nuxt.config.ts`.\n\n```ts\nexport default defineNuxtConfig({\n  tailwindTokens: {\n    //Options\n  },\n})\n```\n\n#### `cwd`\n\nThe `cwd` option allows you to specify the current working directory for the module.\n\n```ts\nexport default defineNuxtConfig({\n  tailwindTokens: {\n    cwd: fileURLToPath(new URL('./', import.meta.url)),\n  },\n})\n```\n\n#### `jsonFiles`\n\nDefault: `['tokens.json']`\n\nThe `jsonFiles` option allows you to specify the JSON files that contain the design tokens.\n\n```ts\nexport default defineNuxtConfig({\n  tailwindTokens: {\n    jsonFiles: ['input.json'],\n  },\n})\n```\n\n#### `tokens`\n\nThe `tokens` option allows you to specify the names of the token collections and their default values.\n\n```ts\nexport default defineNuxtConfig({\n  tailwindTokens: {\n    tokens: {\n      primitive: {\n        // Options\n      },\n      theme: {\n        // Options\n      },\n      breakpoint: {\n        // Options\n      },\n    },\n  },\n})\n```\n\n#### `tokens.primitive`\n\n```ts\nexport default defineNuxtConfig({\n  tailwindTokens: {\n    tokens: {\n      primitive: {\n        name: 'primitive',\n      },\n    },\n  },\n})\n```\n\n#### `tokens.primitive.name`\n\nDefault: `primitive`\n\nDefines the name of the primitive token collection.\n\n#### `tokens.theme`\n\nThe `tokens.theme` option allows you to specify the name of the theme token collection, the default theme name, and whether to handle multiple themes.\n\n```ts\nexport default defineNuxtConfig({\n  tailwindTokens: {\n    tokens: {\n      theme: {\n        name: 'theme',\n        isMultiTheme: true,\n        default: 'neutral',\n      },\n    },\n  },\n})\n```\n\n#### `tokens.theme.name`\n\nDefault: `theme`\n\nDefines the name of the theme token collection.\n\n#### `tokens.theme.isMultiTheme`\n\nDefault: `true`\n\nSpecifies whether multiple themes should be supported.\n\n#### `tokens.theme.default`\n\nDefault: `neutral`\n\nSets the default theme name. This optionshas no effect when `tokens.theme.isMultiTheme` is set to `false`.\n\n#### `tokens.breakpoint`\n\n```ts\nexport default defineNuxtConfig({\n  tailwindTokens: {\n    tokens: {\n      breakpoint: {\n        name: 'breakpoint',\n        screens: {\n          sm: 640,\n          md: 768,\n          lg: 1024,\n          xl: 1280,\n        },\n      },\n    },\n  },\n})\n```\n\n#### `tokens.breakpoint.name`\n\nDefault: `breakpoint`\n\nDefines the name of the breakpoint token collection.\n\n#### `tokens.breakpoint.screens`\n\nDefault: `{ sm: 640, md: 768, lg: 1024, xl: 1280 }`\n\nSpecifies the valid breakpoints.\n\n> [!IMPORTANT]\n> Only these breakpoints will be used to generate responsive classes. Please ensure they are correctly referenced in your JSON file.\n\n#### `output`\n\nThe `output` option allows you to specify the output configuration for the generated CSS file.\n\n```ts\nexport default defineNuxtConfig({\n  tailwindTokens: {\n    output: {\n      //Options\n    },\n  },\n})\n```\n\n#### `output.destination`\n\nDefault: `style.css`\n\nSpecifies the destination path for the generated CSS file.\n\n#### `output.tailwindImport`\n\nDefault: `true`\n\nDetermines whether to include the Tailwind import statement in the generated CSS file.\n\n#### `output.transforms`\n\nDefault: `[]`\n\nSpecifies the transformation rules for token names. Those rules are used to convert token names to Tailwind-compatible syntax. You can find the default rules in the [transform.yaml](./src/config/transform.yaml) file.\n\n```ts\nexport default defineNuxtConfig({\n  tailwindTokens: {\n    output: {\n      transforms: [\n        { from: 'spacing-gap', to: 'gap' },\n        { from: 'spacing-margin', to: 'grid-system-spacing-x' },\n        { from: 'spacing-gutter', to: 'grid-system-gutter-x' },\n        { from: 'grids-columns', to: 'grid-system-columns' },\n      ],\n    },\n  },\n})\n```\n\n#### `output.disableDefaultTransforms`\n\nDefault: `false`\n\nSpecifies whether to disable the [default transformation rules](./src/config/transform.yaml).\n\n#### `output.filters`\n\nDefault: `[]`\n\nSpecifies the tokens to be excluded from the final output. The syntax is based on [gitignore](https://git-scm.com/docs/gitignore).\n\n#### `output.formatter`\n\nSpecifies a function to format the generated CSS file using your project's preferred styling tool, such as Prettier or Biome. This function can be customized to ensure consistent code formatting.\nIt takes `destinationPath` as an argument and does not return anything.\n\nHere is an example of what the formatter configuration could look like when using Prettier:\n\n```ts\nimport { format } from 'prettier'\nexport default defineNuxtConfig({\n  tailwindTokens: {\n    output: {\n      formatter: async destinationPath => {\n        try {\n          const output = await fs.readFile(destinationPath, { encoding: 'utf-8' })\n          const outputFormatted = await format(output, {\n            parser: 'css',\n            filepath: destinationPath,\n          })\n          await fs.writeFile(destinationPath, outputFormatted)\n        } catch (error) {\n          console.error(`Failed to format the file at ${destinationPath}:`, error)\n        }\n      },\n    },\n  },\n})\n```\n\n### Documentation\n\nWhile working locally and running the development server, you can access the documentation for the generated tokens. Simply navigate to the `/token-doc` route to view the classes that have been generated. This allows you to easily trace the design tokens back to their corresponding CSS variables and Tailwind utility classes.\n\n## How to use the module\n\nTo use the generated tokens in your Nuxt app, import the JSON file and utilize the tokens as you would with any other Tailwind utility class.\n\nTo export the tokens to a JSON file, we recommend using the [Figma Tokens](https://www.figma.com/community/plugin/1301567053264748331/variables-to-json) plugin.\n\nOnce you have the JSON file, visit the local route /token-doc to view the generated tokens and learn how to use them.\n\n### Design tokens\n\nThe main idea behind this module is to import Figma tokens directly into your project and start using them by referencing the [tailwind class utilities](https://tailwindcss.com/docs/theme#default-theme-variable-reference). Given a `json file`, the module will generate a `css` file containing the necessary Tailwind configuration.\n\nBefore using this module, we recommend aligning with your design team on the required design token structure.\n\nWe expect Figma tokens to be structured in three collections:\n\n- `Primitive`: contains all the primitive tokens;\n- `Theme`: contains all the theme tokens, which change across different brand themes;\n- `Breakpoint`: contains all the breakpoint tokens, which adapt to different screen sizes.\n\n<div style=\"display: flex; justify-content: center; margin-top: 24px;\">\n\n![Figma Collections](./docs/public/figma-collections.png)\n\n</div>\n","readmeFilename":"README.md"}