{"_id":"@airframeui/theme","_rev":"14-577bffffcb8e8dc275e3b09b5971302f","name":"@airframeui/theme","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.1":{"name":"@airframeui/theme","version":"0.1.1","keywords":["airframe","design-tokens","dtcg","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.1.1","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/theming","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"fa3c294c0eb2bd9d2899b627fc65e7b701f9cde2","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.1.1.tgz","fileCount":73,"integrity":"sha512-6H3AevaN6P9xNkpTIEkyYSLvRZGT8i1ML7BS+qWFJUmk80fLfFqeYqFgP/iM7JLYiLos+jKbq9Nt4u8JhPYzIA==","signatures":[{"sig":"MEUCIFUzqL60zrWtPfw9j1rbCfPlQkpt9669htEwLWNMH9CYAiEAs33JpZjxYSIzbuXQOx9oftDaFZkAeTXTCc+xk9VGR88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108735},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"pnpm build && node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/807665d2d6ac2431f3f13bf8a79024cb/airframeui-theme-0.1.1.tgz","_integrity":"sha512-6H3AevaN6P9xNkpTIEkyYSLvRZGT8i1ML7BS+qWFJUmk80fLfFqeYqFgP/iM7JLYiLos+jKbq9Nt4u8JhPYzIA==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Generate, map, and lint Airframe --af-* theme CSS from DTCG, Tokens Studio, CSS, Figma Variables, or Style Dictionary files","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.1.1_1786891563607_0.2608040761723631","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@airframeui/theme","version":"0.1.2","keywords":["airframe","design-tokens","dtcg","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.1.2","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/theming","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"59f12d593e2986d0aa2dfca1e5dea10c7ac6e118","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.1.2.tgz","fileCount":73,"integrity":"sha512-rCq/UHHFicOnA5RdEyz4zQQRCuEnIm3zkBls43eAQkBiB/wiiOrnDU5ZmIHhbcqmKoEy250pwbLBfyXi/tcNcA==","signatures":[{"sig":"MEYCIQDOocJQqhaHsGZswGN/3z5lGLSpL2fURn6iBWdMptFY3QIhAJuyosJ1LRS5cElaVv67SSXPc0zwic/eE2Hhld35vkA9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108756},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.1.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"pnpm build && node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/42fdd22fc1cbfe4692646d2ee1b14c41/airframeui-theme-0.1.2.tgz","_integrity":"sha512-rCq/UHHFicOnA5RdEyz4zQQRCuEnIm3zkBls43eAQkBiB/wiiOrnDU5ZmIHhbcqmKoEy250pwbLBfyXi/tcNcA==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme, a tool to generate, map, and lint --af-* CSS from DTCG, Tokens Studio, CSS, Figma Variables, or Style Dictionary files","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.1.2_1786892239201_0.5579636874443485","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@airframeui/theme","version":"0.1.3","keywords":["airframe","design-tokens","dtcg","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.1.3","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/theming","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"bd6e1ab7b87e33523c17efa49e9546a80799c418","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.1.3.tgz","fileCount":73,"integrity":"sha512-ceRwH7MXtD58H6dj7XWLGFRRiGTLrssEd1NFICGnNdayZ63MSgq7kn1TzQZTUi68CANEvpmCMd8kaH9RTvhaIA==","signatures":[{"sig":"MEYCIQDgtYOcaX2v5/oo4OujLW1ST6a9knbeuynW9V+rasxamwIhAJOOwPEN2oqBqHugLHGx4fUzBswcnRUprEUFLUgp3N1N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108773},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.1.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"pnpm build && node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/0898155c0ff22e8efcdaa6af84daf057/airframeui-theme-0.1.3.tgz","_integrity":"sha512-ceRwH7MXtD58H6dj7XWLGFRRiGTLrssEd1NFICGnNdayZ63MSgq7kn1TzQZTUi68CANEvpmCMd8kaH9RTvhaIA==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme, a tool to generate, map, and lint --af-* CSS from DTCG, Tokens Studio, CSS, Figma Variables, or Style Dictionary files","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.1.3_1786894416202_0.24890044891527596","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@airframeui/theme","version":"0.1.4","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.1.4","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/theming","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"dac1ba5da1264af19e151606029e02821a1bfd91","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.1.4.tgz","fileCount":93,"integrity":"sha512-/OVa+glY9FwfUQdB3WHJJikAYLDMoBUuAAwliDNWkYD3tUNv/XqYoV1MEEJQrcmCK7lDindE6SWFm4Ld2Dg79w==","signatures":[{"sig":"MEQCIFx/9BCMJtDV8txopyap8PitdZBjdOr9L6hmLg6GSqXpAiAbOxqjd+nzna3HIXMfK3ZzLJ/XglvzZh7qA+DPkft5JQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174035},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.1.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/1207800d658266f4181422be88f99c7a/airframeui-theme-0.1.4.tgz","_integrity":"sha512-/OVa+glY9FwfUQdB3WHJJikAYLDMoBUuAAwliDNWkYD3tUNv/XqYoV1MEEJQrcmCK7lDindE6SWFm4Ld2Dg79w==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme — generate, map, and lint --af-* CSS from DTCG, Tokens Studio, CSS, Figma Variables, or Style Dictionary files","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.1.4_1786974939196_0.4708515690305364","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@airframeui/theme","version":"0.2.0","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.2.0","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/theming","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"a776ab8a36fb694a8be661965ab99e3ef70dff8c","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.2.0.tgz","fileCount":93,"integrity":"sha512-GF3SbzRTnigvB9fVKTLtOwWcS5Ww4AwhO4rwFSzIQbiAIL8xaUol1Y5y4aDnZeWDXNi+PL6oJnTGGlQaBVLntA==","signatures":[{"sig":"MEUCIDerIwmGTHetqjK2UmU2FoULDQ8JpF+T20ZPOmxe8h/mAiEAv+Iw6macwBfA/vX12W3O3t67XpchSJrPRj/2B5hyc3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170738},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/72ea1d9b54580cb3ad493f691792ba0c/airframeui-theme-0.2.0.tgz","_integrity":"sha512-GF3SbzRTnigvB9fVKTLtOwWcS5Ww4AwhO4rwFSzIQbiAIL8xaUol1Y5y4aDnZeWDXNi+PL6oJnTGGlQaBVLntA==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme — generate, map, and lint --af-* CSS from DTCG, Tokens Studio, CSS, Figma Variables, or Style Dictionary files","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.2.0_1787064663509_0.8757290375350311","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@airframeui/theme","version":"0.3.0","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.3.0","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/advanced/theme","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"2056df131a03ab11dbb8109433e0ea03942204ad","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.3.0.tgz","fileCount":93,"integrity":"sha512-2pZ+M10PH/4P+Rtmk8zBjDrHlpkvyBhoZ8DPCYASILCbRRVRyd9rc8T2AYuiKgcmoUHsMUUCxikSj0CS/yflTQ==","signatures":[{"sig":"MEYCIQCLfaW5RsMOToSh+997INimz/wHWtqDQvF/wywvc5+2wgIhAMYpKu1QJiFqbRvSBUPat9LqlFpa0Zqi+4cesMO2zprl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184832},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/cb6c082021892de800f1d5832cfba349/airframeui-theme-0.3.0.tgz","_integrity":"sha512-2pZ+M10PH/4P+Rtmk8zBjDrHlpkvyBhoZ8DPCYASILCbRRVRyd9rc8T2AYuiKgcmoUHsMUUCxikSj0CS/yflTQ==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme — export --af-* tokens to Figma as DTCG. Optional best-effort import from foreign token files.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.3.0_1787388436305_0.6685386369926793","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@airframeui/theme","version":"0.3.1","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.3.1","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/advanced/theme","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"4c31af2a0b7c8cf4e0c7f3f2fe7d99290a559df9","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.3.1.tgz","fileCount":93,"integrity":"sha512-FZQyzqIlw6Z6FBQa82ZlPvjm/PV59tUqJE9oC7L5/v1wpl4kSajJsJctRV/29p6MNtGEJEmxmwg7LqNhoPLaBA==","signatures":[{"sig":"MEQCIHBLXxy7FixpQonFGNjdbIv765WfwaRuwMOnQnJrHioRAiATKTDDqUY/l+1sa9ngOBqzYV9JVas3Q8oDvLnv7Tn2Bg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184832},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.3.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/a52a1d38765b19c5f44275df6ed90762/airframeui-theme-0.3.1.tgz","_integrity":"sha512-FZQyzqIlw6Z6FBQa82ZlPvjm/PV59tUqJE9oC7L5/v1wpl4kSajJsJctRV/29p6MNtGEJEmxmwg7LqNhoPLaBA==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme — export --af-* tokens to Figma as DTCG. Optional best-effort import from foreign token files.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.3.1_1787390676781_0.9011752092657952","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@airframeui/theme","version":"0.3.2","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.3.2","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/advanced/theme","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"ca4eb26d27f147af0d701da3471b53f7d815b31e","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.3.2.tgz","fileCount":93,"integrity":"sha512-bwv5hAXFNVxGLD//xc4iZ8RvO0uCqTpmnAsnTKHoWPxgZc4WBRaG+uM+QRecnWbobcbYR1MNhOw5DIadn8h1kA==","signatures":[{"sig":"MEQCIB6bBPSL2moRiD596k8w3d5htVnGCmZY+ERmb7+ThF8VAiBh/PrELMqq+58bYHZKUWiHXIkmM0EIRhUloIaNbc9Adg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187729},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.3.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/0d9ef193dc6c7155cbdadd3c0105dd08/airframeui-theme-0.3.2.tgz","_integrity":"sha512-bwv5hAXFNVxGLD//xc4iZ8RvO0uCqTpmnAsnTKHoWPxgZc4WBRaG+uM+QRecnWbobcbYR1MNhOw5DIadn8h1kA==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme — export --af-* tokens to Figma as DTCG. Optional best-effort import from foreign token files.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.3.2_1787406957677_0.8199194735329411","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@airframeui/theme","version":"0.4.0","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.4.0","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/advanced/theme","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"65be16550f758a5399bd17ffd656d14c42616cff","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.4.0.tgz","fileCount":93,"integrity":"sha512-GvYc5E7lU3g5JbAlVXtm51c/xPzvtbJT5dwYpF2F9x58T6PmU3Jat0q97ooAAD+N5R1JXfMA1/LYDKVTvFst8A==","signatures":[{"sig":"MEYCIQCYQDaYdwoDzQzEbjuUiJ/e6/5DCRuBAWhOPy4rZpMOAQIhAKumfbmtK1B5poIapu7a70lcU1jpnJ6wnN3UsQGNQGyL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187729},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.4.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/eaea4271a94e3446909e40c1367f8073/airframeui-theme-0.4.0.tgz","_integrity":"sha512-GvYc5E7lU3g5JbAlVXtm51c/xPzvtbJT5dwYpF2F9x58T6PmU3Jat0q97ooAAD+N5R1JXfMA1/LYDKVTvFst8A==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme — export --af-* tokens to Figma as DTCG. Optional best-effort import from foreign token files.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.4.0_1787469487738_0.46130392092371797","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@airframeui/theme","version":"0.4.1","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.4.1","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/advanced/theme","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"14fb638ec7882b1d76dc52c33c4d9ba5a72aa17a","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.4.1.tgz","fileCount":93,"integrity":"sha512-mKMgm3UqWKHn7HPFJ67SV3oPni2ohip5nO9Nq+lktIYBMkS67AfgvtQrh2r3DjZS8FzRUQ8Bq+E1kz9aMpteZQ==","signatures":[{"sig":"MEYCIQCceiakubzRZpYFl3HyS67WdMf3lqhiXBOtC0hUOx5LDwIhALxWSdayO4pa0Or9C8Nxg083rsrODRpUqOL0EuFQ3M3N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187729},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.4.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/3935cfcd6abdc1ce41879c3e8db2c4f1/airframeui-theme-0.4.1.tgz","_integrity":"sha512-mKMgm3UqWKHn7HPFJ67SV3oPni2ohip5nO9Nq+lktIYBMkS67AfgvtQrh2r3DjZS8FzRUQ8Bq+E1kz9aMpteZQ==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme — export --af-* tokens to Figma as DTCG. Optional best-effort import from foreign token files.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.4.1_1787499877852_0.8687324078966456","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@airframeui/theme","version":"0.4.2","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"license":"MIT","_id":"@airframeui/theme@0.4.2","maintainers":[{"name":"itodd","email":"itodd@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/advanced/theme","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"3fdc8bccc27353e318fe0421281aeee600f9c169","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.4.2.tgz","fileCount":93,"integrity":"sha512-16rGCU+pZZwTCuw+E7SLyk55dVZgCfAoqyFJvKbnBUM6zCHYy6ahx4b8IbAPpHVMOyfIb/2n1+VenhbFKfSymQ==","signatures":[{"sig":"MEQCIC8qQRW1fy6BybUqDaomsKhM2LZwYoWlGvReP/7LDHNyAiBmuFAxjPxpLSj/HhzUKvV+6k23RuhACpHv24iDAhiA3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187729},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.4.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/6d42e08126984c5cf5df77b536c518cb/airframeui-theme-0.4.2.tgz","_integrity":"sha512-16rGCU+pZZwTCuw+E7SLyk55dVZgCfAoqyFJvKbnBUM6zCHYy6ahx4b8IbAPpHVMOyfIb/2n1+VenhbFKfSymQ==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme — export --af-* tokens to Figma as DTCG. Optional best-effort import from foreign token files.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.4.2_1787557330864_0.9886570163776844","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@airframeui/theme","version":"0.5.0","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"author":{"name":"Airframe","email":"team@airframeui.com"},"license":"MIT","_id":"@airframeui/theme@0.5.0","maintainers":[{"name":"itodd","email":"itodd+npm@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/advanced/theme","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"c6f19c29d1d18a9af7bfcdc37df8259eee2ced66","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.5.0.tgz","fileCount":93,"integrity":"sha512-OKf2VKDLFkhdgRFcxHDBilacy3IwHMNcxUJNHR4zZ7rtBR4rsAKGtiRmk53hAxEBraqGR/6v2RUKlz6kLC/39g==","signatures":[{"sig":"MEQCIC343rnWc6mDQBAX0Tzgd4X0Bb0nw0kArXQmnSYqvpKuAiBX2NfuK86ZKxK/yhu34n3MfCYU7UQ62ruIxSlzAOLjIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187850},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.5.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd+npm@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/d5d00dbd1cce4f3c6a085b40f41364c4/airframeui-theme-0.5.0.tgz","_integrity":"sha512-OKf2VKDLFkhdgRFcxHDBilacy3IwHMNcxUJNHR4zZ7rtBR4rsAKGtiRmk53hAxEBraqGR/6v2RUKlz6kLC/39g==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme — export --af-* tokens to Figma as DTCG. Optional best-effort import from foreign token files.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.5.0_1787658790805_0.45639940677943747","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@airframeui/theme","version":"0.6.0","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"author":{"name":"Airframe","email":"team@airframeui.com"},"license":"MIT","_id":"@airframeui/theme@0.6.0","maintainers":[{"name":"itodd","email":"itodd+npm@hotmail.co.uk"}],"homepage":"https://airframeui.com/docs/advanced/theme","bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"dist":{"shasum":"7401573ef84b660b6fde25c67e45162bdf3aa232","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.6.0.tgz","fileCount":113,"integrity":"sha512-7EJECCc4zXrnvufsGubRM+mE+I3SzAeC5qCq5j+boCPIOqoDFgFlnnYE9vCulJlXDYNyYIOS/nm1fuS6pW5d3w==","signatures":[{"sig":"MEYCIQCvB63YnuXatd93AREF3tujW3qLwdn5iHJTe5a8IscdWwIhAMSbTFauhDTz+RB6XqRg2tRtCqdyHcrauMOPnJGs3vWM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":284869},"main":"./dist/index.js","type":"module","_from":"file:airframeui-theme-0.6.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./figma":{"types":"./dist/figma.d.ts","default":"./dist/figma.js"},"./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md","./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json"},"scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js","build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/"},"_npmUser":{"name":"itodd","email":"itodd+npm@hotmail.co.uk"},"_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/4baaf508293789556c60f4fc496b0224/airframeui-theme-0.6.0.tgz","_integrity":"sha512-7EJECCc4zXrnvufsGubRM+mE+I3SzAeC5qCq5j+boCPIOqoDFgFlnnYE9vCulJlXDYNyYIOS/nm1fuS6pW5d3w==","repository":{"url":"git+https://github.com/airframeui/airframeui.git","type":"git","directory":"packages/theme"},"_npmVersion":"11.19.0","description":"Airframe UI Theme — export --af-* tokens to Figma as DTCG. Optional best-effort import from foreign token files.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@airframeui/tokens":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"6.0.3","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/theme_0.6.0_1787847536738_0.9153011725606068","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@airframeui/theme","version":"0.7.0","description":"Airframe UI Theme — export --af-* tokens to Figma as DTCG. Optional best-effort import from foreign token files.","author":{"name":"Airframe","email":"team@airframeui.com"},"license":"MIT","homepage":"https://airframeui.com/docs/advanced/theme","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"repository":{"type":"git","url":"git+https://github.com/airframeui/airframeui.git","directory":"packages/theme"},"bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js"},"./figma":{"types":"./dist/figma.d.ts","default":"./dist/figma.js"},"./theme-schema.json":"./src/data/theme-schema.json","./theme-mapping.json":"./src/data/theme-mapping.json","./rules":"./THEME_RULES.md","./mapping":"./THEME_MAPPING.md"},"publishConfig":{"access":"public"},"dependencies":{"@airframeui/tokens":"0.7.0"},"devDependencies":{"@types/node":"26.2.0","typescript":"6.0.3"},"engines":{"node":">=24.0.0"},"scripts":{"build":"tsc -p tsconfig.json && mkdir -p dist/data && cp src/data/*.json dist/data/","dev":"tsc -p tsconfig.json --watch","lint":"eslint src","test":"node --test dist/test/*.test.js"},"_id":"@airframeui/theme@0.7.0","_integrity":"sha512-etRtcvytHziE9FuX7QXGrSMmF8Nl1y61Unsp8EuK/Fs9gQzEZK+W+Z3/fmqNqZVztkcg0JVaijAJuE1kAJO0iQ==","_resolved":"/private/var/folders/3z/31jdvz690j13v6kzqwd719yc0000gn/T/7638ef7762d740da6d978a55623c4880/airframeui-theme-0.7.0.tgz","_from":"file:airframeui-theme-0.7.0.tgz","_nodeVersion":"26.7.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-etRtcvytHziE9FuX7QXGrSMmF8Nl1y61Unsp8EuK/Fs9gQzEZK+W+Z3/fmqNqZVztkcg0JVaijAJuE1kAJO0iQ==","shasum":"01423372860ee2fe6da66fc16ac99183a002e515","tarball":"https://registry.npmjs.org/@airframeui/theme/-/theme-0.7.0.tgz","fileCount":121,"unpackedSize":344965,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD73A2FGzeUxeWTfyiCUE5qPZ6cZGqaPFRbJFyYqXQw4gIgF8M/N/fLwewfXuQQTBRcYHI3fbGMS5W8qTeRNKcpMQY="}]},"_npmUser":{"name":"itodd","email":"itodd+npm@hotmail.co.uk"},"directories":{},"maintainers":[{"name":"itodd","email":"itodd+npm@hotmail.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/theme_0.7.0_1788002146729_0.12429914639669648"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-16T14:46:03.375Z","modified":"2026-08-29T11:15:47.044Z","0.1.1":"2026-08-16T14:46:03.747Z","0.1.2":"2026-08-16T14:57:19.356Z","0.1.3":"2026-08-16T15:33:36.355Z","0.1.4":"2026-08-17T13:55:39.352Z","0.2.0":"2026-08-18T14:51:03.659Z","0.3.0":"2026-08-22T08:47:16.452Z","0.3.1":"2026-08-22T09:24:36.922Z","0.3.2":"2026-08-22T13:55:57.834Z","0.4.0":"2026-08-23T07:18:07.914Z","0.4.1":"2026-08-23T15:44:37.983Z","0.4.2":"2026-08-24T07:42:10.993Z","0.5.0":"2026-08-25T11:53:10.963Z","0.6.0":"2026-08-27T16:18:56.897Z","0.7.0":"2026-08-29T11:15:46.882Z"},"bugs":{"url":"https://github.com/airframeui/airframeui/issues"},"author":{"name":"Airframe","email":"team@airframeui.com"},"license":"MIT","homepage":"https://airframeui.com/docs/advanced/theme","keywords":["airframe","airframeui","design-tokens","tokens-studio","css","theme","figma"],"repository":{"type":"git","url":"git+https://github.com/airframeui/airframeui.git","directory":"packages/theme"},"description":"Airframe UI Theme — export --af-* tokens to Figma as DTCG. Optional best-effort import from foreign token files.","maintainers":[{"name":"itodd","email":"itodd+npm@hotmail.co.uk"}],"readme":"# @airframeui/theme\n\nKeep brand colours aligned between the live app and **Figma**. The project stays the source of truth.\n\nMost people start on the product page — [Airframe → Figma](https://airframeui.com/figma) — or the browser playground — [Theme Studio](https://airframeui.com/theme-studio). This package is the library and CLI behind that loop.\n\nMost apps never install this package directly. Override `--af-*` in your stylesheet — [Theming](https://airframeui.com/docs/theming) — then run `af theme export` (via [`@airframeui/build`](https://www.npmjs.com/package/@airframeui/build)).\n\nSame version as `@airframeui/core`. Catalog names come from `@airframeui/tokens/catalog.json`. Extra `--af-*` in `theme.files` export as extension tokens.\n\n**BYO Tokens (Bring Your Own Tokens)** — product-owned CSS variables (`theme.byoTokens.prefix`) export alongside Airframe in `.airframeui/byo/<slug>/` and as separate Figma collections. See [docs/BYO Tokens.md](../../docs/BYO Tokens.md).\n\nDocs: [Figma plugin](https://airframeui.com/docs/advanced/figma-plugin) · [Airframe → Figma](https://airframeui.com/figma) · [Theme package](https://airframeui.com/docs/advanced/theme) · [Theming](https://airframeui.com/docs/theming) · [Packages](https://airframeui.com/docs/packages) · [Changelog](https://airframeui.com/docs/changelog)\n\nRemaining Figma Variables work: [docs/FIGMA.md](../../docs/FIGMA.md) (Phases 0–1).\n\n## Export to Figma\n\n`af theme export` writes **DTCG 2025.10** JSON and **`figma.variables.json`** from the tokens the app actually runs: catalog defaults, `airframe.config.js` breakpoints, then `--af-*` in `theme.files`. Pass `--no-figma` for DTCG only. `af figma export` remains as an alias that writes only the Variables payload.\n\n**Aliases are preserved.** Simple `var(--af-*)` links become DTCG references (for example `btn.default-bg` → `{color.primary}` → `{base.primary}`). Leaf values and mode companions (`--light` / `--dark` / `--hc-*`) stay as resolved colours or dimensions. That matches the CSS token graph instead of flattening everything to hex.\n\nLibrary helpers:\n\n- `emitDtcgExport` — DTCG pack (Theme Studio / manual Figma import)\n- `emitFigmaVariablesModel` — native Variables payload for the plugin / REST sync\n\nPoint `theme.files` at the CSS/SCSS that holds overrides. Globs are allowed. Brand palettes are discovered from `[data-brand]` — do not list brand ids in config. Colours and fonts stay in CSS. Later entries in `theme.files` win when the same token is set twice; a comma-separated `[data-brand]` list applies to every brand in the list.\n\n`theme.outputDir` is the folder `tokens/` is written into (default `.airframeui`). CLI `-o` / `--out` overrides. That is not top-level `outputDir` (optional generated CSS for PostCSS / `af build`).\n\n```js\n// airframe.config.js\nmodule.exports = {\n  theme: {\n    files: ['./src/tokens.css', './src/brands/*.css'],\n    outputDir: '.airframeui',\n  },\n};\n```\n\n```bash\nnpm install -D @airframeui/build\nnpx af theme export\nnpx af theme export -o ./figma-tokens   # overrides theme.outputDir\nnpx af theme export --no-figma          # DTCG only\n```\n\n```\n.airframeui/\n  tokens/\n    default/          ← :root palette (Figma collection 1)\n      light.tokens.json\n      dark.tokens.json\n      hc-light.tokens.json\n      hc-dark.tokens.json\n    delta/             ← [data-brand='delta'] (Figma collection 2)\n      light.tokens.json\n      dark.tokens.json\n      hc-light.tokens.json\n      hc-dark.tokens.json\n  airframe.resolver.json\n  figma.variables.json ← native Variables payload (omit with --no-figma)\n```\n\nIn Figma: prefer the **Airframe** plugin with `figma.variables.json` (`af theme export` → Update Figma). Or drop the four files in `tokens/default` onto **one** collection (each file is a mode). Drop `tokens/delta` onto a **second** collection. Same four filenames in every folder so modes line up. Figma does not read `airframe.resolver.json`.\n\n```bash\nnpx af theme export   # tokens/ + figma.variables.json\nnpx af figma sync     # refreshes the payload; Enterprise REST push when token + fileKey are set\nnpx af figma check    # Enterprise REST drift check (or use Check in the plugin)\n```\n\nPlugin: install **Airframe** from [Figma Community](https://www.figma.com/community/plugin/1674824528743252833). How-to: [Figma plugin](https://airframeui.com/docs/advanced/figma-plugin). Product page: [Airframe → Figma](https://airframeui.com/figma).\n\nLibrary (no CLI):\n\n```ts\nimport { emitDtcgExport, emitFigmaVariablesModel, resolveTheme } from '@airframeui/theme';\n\nconst spec = resolveTheme({ config, css });\nconst { palettes } = emitDtcgExport({ spec });\nconst figma = emitFigmaVariablesModel({ spec });\n```\n\nEach export **replaces** `tokens/` so a brand you deleted in CSS does not linger. Other files in the output directory are left alone. Add `.airframeui/` to `.gitignore`.\n\nWorking app: [examples/theme](../../examples/theme). BYO Tokens: [examples/byotokens](../../examples/byotokens). Product page: [Airframe → Figma](https://airframeui.com/figma). Browser playground: [Theme Studio](https://airframeui.com/theme-studio). Maintainer plan: [docs/FIGMA.md](../../docs/FIGMA.md).\n\n## Import (advanced)\n\nForeign files → `--af-*` CSS is **best-effort**. Do not expect a Tokens Studio or Figma dump to become a complete Airframe theme.\n\nThe mapper is a small alias table (`primary` → `--af-base-primary`, `background` → `--af-color-background`, plus `--af-*` names). A real design system uses hundreds of proprietary paths (`color.blue.500`, `brand/500`, `semantic.fg.default`). Those land in the unmapped report, not in CSS. Dark and high-contrast companions are often missing.\n\nThe reliable path: pick Airframe names, override `--af-*` in CSS, export to Figma.\n\nKeep `generate` for CSS that already uses `--af-*`, for a round-trip of our own DTCG, or when you have renamed tokens to match the catalog. Then:\n\n```ts\nimport { generateFromContent, lintThemeCss } from '@airframeui/theme';\n\nconst { css, report } = generateFromContent(tokenFileContents);\nconsole.log(report.unmapped, report.diagnostics);\nconst lint = lintThemeCss(css);\n```\n\n```bash\nnpx af theme generate --from ./tokens.json -o theme.css\nnpx af theme lint theme.css\n```\n\nImport the generated `theme.css` after `@airframeui/core`. Formats: `auto`, `dtcg`, `tokens-studio`, `css`, `figma-variables`, `style-dictionary`, `airframe-spec`.\n\n## Install\n\nMost apps never install this package. Use the CLI:\n\n```bash\nnpm install -D @airframeui/build\n```\n\nInstall `@airframeui/theme` as a **dev dependency** only if you import it from a script. It does not run in the browser.\n\n```bash\nnpm install -D @airframeui/theme\n```\n\nRequires Node.js 24 or later. Still install [`@airframeui/core`](https://www.npmjs.com/package/@airframeui/core) in the app — this package emits overrides and DTCG, not the runtime CSS.\n\n## Package exports\n\n- `@airframeui/theme` — `emitDtcgExport`, `resolveTheme`, `generateFromContent`, `lintThemeCss`, …\n- `@airframeui/theme/node` — `resolveThemeFromFiles`, `generateTheme`, `writeOutput`\n- `@airframeui/theme/rules` — generate/lint contract\n- `@airframeui/theme/mapping` — inbound alias table\n- `@airframeui/theme/theme-schema.json` / `@airframeui/theme/theme-mapping.json`\n\n## Related\n\n- [`@airframeui/core`](https://www.npmjs.com/package/@airframeui/core) — CSS system\n- [`@airframeui/tokens`](https://www.npmjs.com/package/@airframeui/tokens) — token catalog\n- [`@airframeui/build`](https://www.npmjs.com/package/@airframeui/build) — `af theme export` / `af figma sync` CLI\n- [`@airframeui/mcp`](https://www.npmjs.com/package/@airframeui/mcp) — `npx -y @airframeui/mcp`\n- [Changelog](https://airframeui.com/docs/changelog)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}