{"_id":"@domandigital/craft","_rev":"18-a21b4ce0c7d5a7928293265e0657f106","name":"@domandigital/craft","dist-tags":{"latest":"0.17.0"},"versions":{"0.1.0":{"name":"@domandigital/craft","version":"0.1.0","license":"Apache-2.0","_id":"@domandigital/craft@0.1.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"dist":{"shasum":"deabd154f0f0df9a834f0421ba3bac9c482a30f9","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.1.0.tgz","fileCount":12,"integrity":"sha512-vQ9CJ8YseZVb8SoMoN6JIAQlb7OJwBZ+DDlOysgW1y/7ibDyXxr4eGerGHhON7Y5N87/eNUSUdrsCdOVr/7QyA==","signatures":[{"sig":"MEQCIGGbVOBl0Q0iTBknmFOkL9okQnqquciC4EqQSttoYD52AiAlPpW0Hx3DcPwqPcG75qucHiU3Mh//cGnDxJ4dlNfLRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165867},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css"},"gitHead":"112e7048d5e243f184477acc03c849f20b02e0ea","private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"domandigital","email":"admin@domandigital.co.uk"},"repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.19.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.9","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/craft_0.1.0_1788377509202_0.826047507365659","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@domandigital/craft","version":"0.2.0","license":"Apache-2.0","_id":"@domandigital/craft@0.2.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"dist":{"shasum":"83ba55b6cbc9cbeea9d0fa7ab904a8314cbc1da9","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.2.0.tgz","fileCount":12,"integrity":"sha512-W8yrl2yvLOHjTUzku33VMHSJwhjGJlZphY27oFk6OvUW+s+oqYsLnk2qEBP3K76Mxo/slgzW++cFdrr6mlLkFg==","signatures":[{"sig":"MEYCIQDMT1Db+i4nSFE+k3umCL/wzV6CPGl8LK7gw2MV24kqbgIhAPo34x8pykyVP1AISuOE4PQoVCOitRuXnHi8Fxzt+lKb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":167806},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.2.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css"},"private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/2b8339029876949f1d8576b2fde8512c/domandigital-craft-0.2.0.tgz","_integrity":"sha512-W8yrl2yvLOHjTUzku33VMHSJwhjGJlZphY27oFk6OvUW+s+oqYsLnk2qEBP3K76Mxo/slgzW++cFdrr6mlLkFg==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.19.1","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/craft_0.2.0_1788384670217_0.04423201671120047","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@domandigital/craft","version":"0.3.0","license":"Apache-2.0","_id":"@domandigital/craft@0.3.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"dist":{"shasum":"d4f650c168836272a0977339a698bb178cd1bedf","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.3.0.tgz","fileCount":12,"integrity":"sha512-fGpA0ipIRKCrbiTdhoIPJZ51n1iBPNpsNH59MMWPHEUGeq5cUZoAOFGsy/Rz+P+KSCb/exWONzd4OZrl1Czomg==","signatures":[{"sig":"MEQCHwNAgisEXW+rSlK/hRDA6nIXbvAenDjf0ELFQ0LZ8EECIQDOUEeDLbU6kM9Db8+GhJzu5Rl+KA/ENMCtfvVGamIMtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":177081},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.3.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css"},"private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/e548b235b3135affeb730ffc6e004e8d/domandigital-craft-0.3.0.tgz","_integrity":"sha512-fGpA0ipIRKCrbiTdhoIPJZ51n1iBPNpsNH59MMWPHEUGeq5cUZoAOFGsy/Rz+P+KSCb/exWONzd4OZrl1Czomg==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.19.1","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/craft_0.3.0_1788499548333_0.44841523038247777","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@domandigital/craft","version":"0.4.0","license":"Apache-2.0","_id":"@domandigital/craft@0.4.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"dist":{"shasum":"90c5c5c1224e074dd803736b0586c64f50f4a9f6","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.4.0.tgz","fileCount":12,"integrity":"sha512-rx1AtM/W96HY5YH/OgtZfmv8TglriqE19E8iay6wcb457wS7ehPeam1qewZqznS3zVUhwk4y3fQ6rKl4SGgNWw==","signatures":[{"sig":"MEQCIGax45W0/fwjSCnhyTTqFvDuZlT4CYY+xPqd3ps9Y65dAiAjGZUB9BIxrCcQus10RphIPyZGV82HC9LKOLpVWTb8yw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":185216},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.4.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css"},"private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/8c3ce153d7c5e16165a9f6796ab42ce0/domandigital-craft-0.4.0.tgz","_integrity":"sha512-rx1AtM/W96HY5YH/OgtZfmv8TglriqE19E8iay6wcb457wS7ehPeam1qewZqznS3zVUhwk4y3fQ6rKl4SGgNWw==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.19.1","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/craft_0.4.0_1788532249216_0.38109746359672436","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@domandigital/craft","version":"0.5.0","license":"Apache-2.0","_id":"@domandigital/craft@0.5.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"dist":{"shasum":"8d138dd23b96d34ebc2f9ef0827bd18cb0bff338","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.5.0.tgz","fileCount":12,"integrity":"sha512-AmvvgqRls0CeqQjGEvkmJ+ZT7OcAPY76bfl+5AW+iAjMQSGipDPlLDN8W/TLPGJ/+cDJnvVYwLC/eV6TcMrDUw==","signatures":[{"sig":"MEUCIDE/u4yl3as7RXs+4TN5gvZ43mCSlx07IlKU9Ch4oaSLAiEArBf5x4Z3YBVACyNVEuUdxxQdPTNwSnfUPF8yw1Avrhc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":188103},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.5.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css"},"private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/044706821a9d473d8b75a76d7bbbb01a/domandigital-craft-0.5.0.tgz","_integrity":"sha512-AmvvgqRls0CeqQjGEvkmJ+ZT7OcAPY76bfl+5AW+iAjMQSGipDPlLDN8W/TLPGJ/+cDJnvVYwLC/eV6TcMrDUw==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.19.1","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/craft_0.5.0_1788534532685_0.391481364847988","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@domandigital/craft","version":"0.6.0","license":"Apache-2.0","_id":"@domandigital/craft@0.6.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"bc3dced4458de605616c8bbbe9594907f46f8508","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.6.0.tgz","fileCount":23,"integrity":"sha512-5StxkuEHFobUdHK4QXV9nBNHt1OkAYIK1QkLGrWVEuG8L2yADyGJF1nnBkK75P6aao6qwdU+7i07qUPpMy5K1Q==","signatures":[{"sig":"MEQCIDTTZ+9yQJpXl/oTU4sOK0r51vj/zp4dhGFqEUOdi8mvAiBz4bJPZKG42j5rnAQfSkvoaWFKQNzSLKbeW2tkDmc+LA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIB6LNy5YkjrZLNHoiHbm85Sri+JEk9y00eUVI3YCH2ZCAiA1OzVCOST+SmFMWuSTcQ/y7aSglc6vkOv3Um00AnS9Jg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":897873},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.6.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"types":"./dist/audit.d.ts","import":"./dist/audit.js","require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/4028f11a4efe5b038c5fb540b3a0c375/domandigital-craft-0.6.0.tgz","_integrity":"sha512-5StxkuEHFobUdHK4QXV9nBNHt1OkAYIK1QkLGrWVEuG8L2yADyGJF1nnBkK75P6aao6qwdU+7i07qUPpMy5K1Q==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.6.0_1790134348777_0.20379603008442482","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@domandigital/craft","version":"0.7.0","license":"Apache-2.0","_id":"@domandigital/craft@0.7.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"e12253d9aec81d8582ff3d05ef039eece1f52714","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.7.0.tgz","fileCount":34,"integrity":"sha512-vtCnRHkoscCtSc8L9om9hpeKO8KIMRlUg6MgJMrQ9GENNa44FILR5LjdMRgAOkZNpNG/623Pyjf4BfFiv88NFg==","signatures":[{"sig":"MEUCIQCf0kSjoW5oUEWvFTwFU4ttWlcF0GxbjklQDmM/aX0FTwIgfBYCu/G6YsmnYsy+pxnsOe4JklQKX/aUbW4CHLDbe8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICpGSe0I92w0wAnvCnBgPzy5aUkgkty9fG9v1Rg0kq/mAiEA2W+tncE3H+ieo1uTMLRltnF97uwZAZXfICifUukh1LE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1043229},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.7.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"types":"./dist/audit.d.ts","import":"./dist/audit.js","require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/89621e5afeb0205e34141354f15ac133/domandigital-craft-0.7.0.tgz","_integrity":"sha512-vtCnRHkoscCtSc8L9om9hpeKO8KIMRlUg6MgJMrQ9GENNa44FILR5LjdMRgAOkZNpNG/623Pyjf4BfFiv88NFg==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.7.0_1790179948630_0.5699995926627104","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@domandigital/craft","version":"0.8.0","license":"Apache-2.0","_id":"@domandigital/craft@0.8.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"fecac30383e7367f37f2849c2cdc048eba095c06","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.8.0.tgz","fileCount":35,"integrity":"sha512-d1D+bFD3SYDMCB5EnuWCKj9e92XVR9sHuokeWQ7sQL8iOZO53bCxFnv/nhn2iQVpaWNFOVjIjrovw822lXZxpw==","signatures":[{"sig":"MEUCIQCMJEeX8VklKro0am028NhZhXgRhZp2KaDpDGVpLeWt+wIgKZ9YM2u+oAxer6C2ZlhwkBHEFpa3WZCW3O40SAG75fg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC3KDwTjImAV/ScQddlph2vD6B+Tol6cJUputa8W29SywIhAOYSmOwmwfExCdJhgdbN80LLlwVa675MrTANtCxZUUbH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1275341},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.8.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"types":"./dist/audit.d.ts","import":"./dist/audit.js","require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/5f630005e3c5fffc68cd5f56417b7093/domandigital-craft-0.8.0.tgz","_integrity":"sha512-d1D+bFD3SYDMCB5EnuWCKj9e92XVR9sHuokeWQ7sQL8iOZO53bCxFnv/nhn2iQVpaWNFOVjIjrovw822lXZxpw==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.8.0_1790197641213_0.7442572535500251","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@domandigital/craft","version":"0.8.1","license":"Apache-2.0","_id":"@domandigital/craft@0.8.1","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"9f1cfc0b31f0e1ad2b70f24d36af4e84a2373da9","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.8.1.tgz","fileCount":35,"integrity":"sha512-6+blYHp6ZxS6Cd6qmcLey+elihKcEJr4X6MF8Qjlkc3tGAJARtBfhQsOdUyhXIR5rBacLLXVkiz6bva4QNj3JA==","signatures":[{"sig":"MEQCIBpk6wX6qRxw8SuJJC+TpuFCYQK5Oz5U9edzaelp2wipAiBFiRjDqoFVhROaUUMSv9EwQZppNEA5wp8En5rGeni1kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD2jRCsijJi3U3nofj6ar8/WYPhBKxzNZXGgI1FzNEEygIhALDO9DzNxZGgmwyDMZrFiT+QWXKEotPBoCWxJtGfErhX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1276976},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.8.1.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"types":"./dist/audit.d.ts","import":"./dist/audit.js","require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/855cca61decdc5e199eaf8ef1876bf75/domandigital-craft-0.8.1.tgz","_integrity":"sha512-6+blYHp6ZxS6Cd6qmcLey+elihKcEJr4X6MF8Qjlkc3tGAJARtBfhQsOdUyhXIR5rBacLLXVkiz6bva4QNj3JA==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.8.1_1790202455239_0.05512435067122534","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@domandigital/craft","version":"0.9.0","license":"Apache-2.0","_id":"@domandigital/craft@0.9.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"77a5741a15753277155722f9f61560bad161a83d","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.9.0.tgz","fileCount":35,"integrity":"sha512-gvzPwAPvpkD36bI0KakE/o+AfXUw92SAzK1MbBIN1LuB80EytNLmtspYT1rIoAjT6y6P8zFD3rvul0TlxXyJLA==","signatures":[{"sig":"MEUCIAE713ptTNXVjLvxGp9Im53lINpkUasRrt5YDQKAF8SVAiEAurz2WPMwufZiACRXwAWyp56G5cb3jzUPFs6a5xzrh+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC6gJafQlJEMW1aif47qkS2Yq85oyowi0pGrqHErk0v+AIhAN1l6sxiP1/wayoHgcj8Z48MwtcoUWUuJ8sj8bTVAox1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1277822},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.9.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"types":"./dist/audit.d.ts","import":"./dist/audit.js","require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/a2e280bcc89fae699085dbb7c7f8961d/domandigital-craft-0.9.0.tgz","_integrity":"sha512-gvzPwAPvpkD36bI0KakE/o+AfXUw92SAzK1MbBIN1LuB80EytNLmtspYT1rIoAjT6y6P8zFD3rvul0TlxXyJLA==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.9.0_1790210986047_0.06520350957947407","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@domandigital/craft","version":"0.10.0","license":"Apache-2.0","_id":"@domandigital/craft@0.10.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"059de44def69ad610fd3722ac041f3d4563116ca","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.10.0.tgz","fileCount":35,"integrity":"sha512-8V7DXZD17xX2PtSiGupEwMEjjOOL2lvVW1rn8V06z47BelrVKB025gWZUMcdEQwuBer97CmHksbCY0/f16CWMA==","signatures":[{"sig":"MEUCIDUqGcqDzylR8Qky2wMYz9UybmYH058+RiqjkdZB050cAiEAutJJY/QwTuA4rL+lx2lGmjsA7MFWmhtUXHZeLlE6QdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICMtE16UJfX1voIQdFYOYofYwWR7HWpobqgjvpWmR1maAiBmxEiytG1DU57zdHhurWmIhCA+Ye2o22iLVwjCSyQRAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1323295},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.10.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"types":"./dist/audit.d.ts","import":"./dist/audit.js","require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/96f15ffed328b98db7a4861de66a67eb/domandigital-craft-0.10.0.tgz","_integrity":"sha512-8V7DXZD17xX2PtSiGupEwMEjjOOL2lvVW1rn8V06z47BelrVKB025gWZUMcdEQwuBer97CmHksbCY0/f16CWMA==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.10.0_1790213550165_0.7290030027833319","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@domandigital/craft","version":"0.11.0","license":"Apache-2.0","_id":"@domandigital/craft@0.11.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"679e7be0c0364efe8dc071f3e606d6a6b0cb31eb","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.11.0.tgz","fileCount":35,"integrity":"sha512-3MXBL5KJMKOZO1n/9LnMmU9OhKBDcUbEH5CJ6SAkETglRyknYKlmLnw+++V0OvpebUzkIpOQd7UCTncvrsOyEQ==","signatures":[{"sig":"MEQCIAqDzm+bAoX5/59duvTDvcbVCKfFnYjVbN7EsyJGy3afAiAhNBwdM0weXrx86lenjVX++laTnpSNh7LB8EjB4vKadA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD+z7m28RkbiJ6rsviOPfpxre8Fzxw9dunp9FnAoW5udgIhAIqQZuWJxuid1yo8ZkXJoHQwp2eH4i0YTYgALgbyJGie","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1372880},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.11.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22.12"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"import":{"types":"./dist/audit.d.ts","default":"./dist/audit.js"},"require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/59bad349893ecbbc5f1e2d416c7a73d5/domandigital-craft-0.11.0.tgz","_integrity":"sha512-3MXBL5KJMKOZO1n/9LnMmU9OhKBDcUbEH5CJ6SAkETglRyknYKlmLnw+++V0OvpebUzkIpOQd7UCTncvrsOyEQ==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"sideEffects":["./css/*.css"],"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.11.0_1790214889291_0.12529130092125484","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@domandigital/craft","version":"0.12.0","license":"Apache-2.0","_id":"@domandigital/craft@0.12.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"079a6d744cd431069f1d7f0de1d7e3bcd6e156ab","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.12.0.tgz","fileCount":38,"integrity":"sha512-n491tLJyyoCxsWZO70l89LeMytW/PePghH1rwX9deb0F8/Oud3EHmJPOid9rNWvV3Epr0H/4nR4bTGog/ahSew==","signatures":[{"sig":"MEYCIQCx74RejcejHLpZPzeXOhnnD2COeADPnjEcWf1hRcQMhwIhAJikU5QxOVVUqyYSWNOYKawMKyZmQB4bRdGVZLYZ8MGe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBWQk67D7qDzlvyORCjcbBMkdbr7S2voN4y4Blt45xWMAiB++LbLlPqvaiTfY73nvSXi9xJkqOQmKqUGWyCW1dMbeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1463169},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.12.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22.12"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"import":{"types":"./dist/audit.d.ts","default":"./dist/audit.js"},"require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs && node scripts/write-licences.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/4193fac7a8618263a5c3094bd350384b/domandigital-craft-0.12.0.tgz","_integrity":"sha512-n491tLJyyoCxsWZO70l89LeMytW/PePghH1rwX9deb0F8/Oud3EHmJPOid9rNWvV3Epr0H/4nR4bTGog/ahSew==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"sideEffects":["./css/*.css"],"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.12.0_1790229190925_0.7311782069644683","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@domandigital/craft","version":"0.13.0","license":"Apache-2.0","_id":"@domandigital/craft@0.13.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"9a4cf8ce63ccd259813fb509c6bd6f516b2c6d72","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.13.0.tgz","fileCount":37,"integrity":"sha512-wq776uUw23YznLeC91B4G5ppSPSLeqFZDxK+qiLLsJqSwmLCcKvH5oFS5cV7aZc/l29iwjMsQAhHcP67KDf/bw==","signatures":[{"sig":"MEUCIQD9jne6cmWeboyrDzKgfO38mqX4qXCF20qmawnXXu8IAQIgK5qAj9+zuEpgq+s03to3fBRc/C9SON4I7Pe/Jd4NIEU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBg+MkVjgqe+bW1MZfRTfWX6hf2SCsGYHdjY/uvShDFNAiEA3JkVH/tGKDEtQtr+NTO5lQnp41yK22pxuq3DkI48veE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1634126},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.13.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22.12"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"import":{"types":"./dist/audit.d.ts","default":"./dist/audit.js"},"require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs && node scripts/write-licences.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/9524acf69690d71267aae9fa9ad2aa0d/domandigital-craft-0.13.0.tgz","_integrity":"sha512-wq776uUw23YznLeC91B4G5ppSPSLeqFZDxK+qiLLsJqSwmLCcKvH5oFS5cV7aZc/l29iwjMsQAhHcP67KDf/bw==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"sideEffects":["./css/*.css"],"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.13.0_1790280515129_0.8134137299093354","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@domandigital/craft","version":"0.14.0","license":"Apache-2.0","_id":"@domandigital/craft@0.14.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"61bb64715d88753c02d005d190760005df34c883","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.14.0.tgz","fileCount":39,"integrity":"sha512-Qgvxp6855gGanwnPJfJAWQfAPQibSu/yGoeMHZSxFdRWDV/DFisQVKeOzYuVrTcaRvd0kOBNz995hokthmaFQA==","signatures":[{"sig":"MEYCIQDD/amdqb5QFlFAxB9iXffUr2ds5RQZfA65IDeocZ8GqQIhAI/dRidudmLMbi78kriKgAKTrnfdG72lYloc5fls0rem","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCID53Bc2bzcGUYvqm4qS3lXuZytDB/zKgkX3EDORfvuXzAiEA4f7OHfuChivX3BzCExIZlaDV7nypqzBk/zwoIa7O+gE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1773512},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.14.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22.12"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"import":{"types":"./dist/audit.d.ts","default":"./dist/audit.js"},"require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs && node scripts/write-licences.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/d3c9a5bb85e6ada68b0a6c2a24237976/domandigital-craft-0.14.0.tgz","_integrity":"sha512-Qgvxp6855gGanwnPJfJAWQfAPQibSu/yGoeMHZSxFdRWDV/DFisQVKeOzYuVrTcaRvd0kOBNz995hokthmaFQA==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"sideEffects":["./css/*.css"],"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.14.0_1790283311701_0.9453475267743146","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@domandigital/craft","version":"0.15.0","license":"Apache-2.0","_id":"@domandigital/craft@0.15.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"a2ac6ba0b91bcf7f812d6caf7f3dd7145dbb60b8","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.15.0.tgz","fileCount":41,"integrity":"sha512-wKhcGdEmIMW2sYkch4CUi139DdaSK7ne//BaU7+AqboYShPnQFm0SEswvUFSi2f9Hh/SITwkcyX0YURqAjV2lg==","signatures":[{"sig":"MEYCIQCGcIlHV43qJg0MwZwaORNaumCPjbDYHNLPvQZcoY8t3QIhALN4pe/Q/waHcvGzqSarq3yvThgbb7ffQEhHjrPEN1h0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCCVGeajdDQlASTjsXtFRjwtypEBytqsBkPYWRJTqmyjwIgEHWGsQtn75/QhcHkLqAoDXTRr7wEC2g/OgT8Wp48Rvo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1934131},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.15.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22.12"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"import":{"types":"./dist/audit.d.ts","default":"./dist/audit.js"},"require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs && node scripts/write-licences.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/5f1a98d65b94e0df2194ca2a3f2cc4fa/domandigital-craft-0.15.0.tgz","_integrity":"sha512-wKhcGdEmIMW2sYkch4CUi139DdaSK7ne//BaU7+AqboYShPnQFm0SEswvUFSi2f9Hh/SITwkcyX0YURqAjV2lg==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"sideEffects":["./css/*.css"],"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.15.0_1790463225461_0.5062583233306297","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@domandigital/craft","version":"0.16.0","license":"Apache-2.0","_id":"@domandigital/craft@0.16.0","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"bin":{"craft":"dist/cli.js"},"dist":{"shasum":"00cac1892ff0824f92a31c737fe5191f6ff1a094","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.16.0.tgz","fileCount":43,"integrity":"sha512-CsMhKvOGUCFEvdhziUT0VilR/6fsx5XleU4OUCVSzk4D60cqzyj/wyUzuDXcvRnizqmgVPy3rQ4mOIGgas7Oxg==","signatures":[{"sig":"MEUCIQD/CyVfpMe8yp0vReMDUC2fcztU2lBfUmoyQkdgeDV5MgIgL69pq5yiuH8M3gUscaE4ISTfLvuMsPMCzv6QnwVenAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEzo4OGprVAuMDvOYnQLHH0d24RWO5tGu2u6orWR7H0uAiEAlkLGD5y/brSZk9x7D1PwLNobZVptu0fp+b4v4M4HKYs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1986865},"main":"dist/index.cjs","type":"module","_from":"file:domandigital-craft-0.16.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22.12"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"import":{"types":"./dist/audit.d.ts","default":"./dist/audit.js"},"require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs && node scripts/write-licences.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"_resolved":"/tmp/d6b49a4e5f70cd5b3028a50a16093543/domandigital-craft-0.16.0.tgz","_integrity":"sha512-CsMhKvOGUCFEvdhziUT0VilR/6fsx5XleU4OUCVSzk4D60cqzyj/wyUzuDXcvRnizqmgVPy3rQ4mOIGgas7Oxg==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"sideEffects":["./css/*.css"],"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/craft_0.16.0_1790671392637_0.1647993655734863","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"_id":"@domandigital/craft@0.17.0","bin":{"craft":"dist/cli.js"},"bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"dist":{"shasum":"64a833d4dda8880d85fd4b5fcb07eac4050df46a","tarball":"https://registry.npmjs.org/@domandigital/craft/-/craft-0.17.0.tgz","fileCount":47,"integrity":"sha512-M+4DMqti8M/DJTAjSqCplz2ODL9TyGSJSrOh1Frxjw7e5UdJs8DCmv9xM/oohVqyL8lAXMSflMoIiN+1k9mWgw==","signatures":[{"sig":"MEQCID0r7ae0P6l0CC0kqEvz6GOwHUigv7Y8gVWpMrU8Q1YMAiBpxyj120ocnlsQt+obWKkcciqNBaR/9XP2JRw9i70DDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFfDNiGhq2nUtAvOmkcHeqYbduXp/cfZ4Fru3u/nAIerAiEAgowOVRthViqPzS24rBP8zm3bxUOqpLYydPl13008pAM="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@domandigital%2fcraft@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2134744},"main":"dist/index.cjs","name":"@domandigital/craft","type":"module","_from":"file:domandigital-craft-0.17.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22.12"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./audit":{"import":{"types":"./dist/audit.d.ts","default":"./dist/audit.js"},"require":{"types":"./dist/audit.d.cts","default":"./dist/audit.cjs"}},"./craft.css":"./css/craft.css","./package.json":"./package.json","./craft.tailwind.css":"./css/craft.tailwind.css","./art-direction.schema.json":"./art-direction.schema.json"},"license":"Apache-2.0","private":false,"scripts":{"docs":"tsup && node scripts/write-catalogue.mjs && node scripts/write-word-lists.mjs && node scripts/write-licences.mjs && node scripts/write-registers.mjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"version":"0.17.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"0eb0777d-223f-43d1-b6be-857d5ab9fd69"}},"homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","_resolved":"/tmp/68b90728097cbcb9dc7390e2328f5b1a/domandigital-craft-0.17.0.tgz","_integrity":"sha512-M+4DMqti8M/DJTAjSqCplz2ODL9TyGSJSrOh1Frxjw7e5UdJs8DCmv9xM/oohVqyL8lAXMSflMoIiN+1k9mWgw==","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"_npmVersion":"11.20.0","description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","directories":{},"maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"sideEffects":["./css/*.css"],"_nodeVersion":"22.23.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.9","typescript":"^5.6.3"},"peerDependencies":{"playwright":">=1.40"},"peerDependenciesMeta":{"playwright":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/craft_0.17.0_1790763581314_0.5805120583645078"}}},"time":{"created":"2026-09-02T19:31:49.000Z","modified":"2026-09-30T10:19:41.764Z","0.1.0":"2026-09-02T19:31:49.360Z","0.2.0":"2026-09-02T21:31:10.375Z","0.3.0":"2026-09-04T05:25:48.476Z","0.4.0":"2026-09-04T14:30:49.377Z","0.5.0":"2026-09-04T15:08:52.819Z","0.6.0":"2026-09-23T03:32:28.879Z","0.7.0":"2026-09-23T16:12:28.712Z","0.8.0":"2026-09-23T21:07:21.309Z","0.8.1":"2026-09-23T22:27:35.396Z","0.9.0":"2026-09-24T00:49:46.144Z","0.10.0":"2026-09-24T01:32:30.266Z","0.11.0":"2026-09-24T01:54:49.406Z","0.12.0":"2026-09-24T05:53:11.092Z","0.13.0":"2026-09-24T20:08:35.248Z","0.14.0":"2026-09-24T20:55:11.832Z","0.15.0":"2026-09-26T22:53:45.566Z","0.16.0":"2026-09-29T08:43:12.732Z","0.17.0":"2026-09-30T10:19:41.413Z"},"bugs":{"url":"https://github.com/Doman-Digital/dd-packages/issues"},"license":"Apache-2.0","homepage":"https://github.com/Doman-Digital/dd-packages/tree/main/packages/craft#readme","repository":{"url":"git+https://github.com/Doman-Digital/dd-packages.git","type":"git","directory":"packages/craft"},"description":"The Doman Digital house craft standard as numbers: OKLCh colour ramps that snap to existing anchors, derived semantic tokens with measured WCAG and APCA contrast, one shared motion vocabulary for CSS and JS, and a base stylesheet. Zero dependencies.","maintainers":[{"name":"domandigital","email":"admin@domandigital.co.uk"}],"readme":"# @domandigital/craft\n\nThe Doman Digital house craft standard, as numbers.\n\nOKLCh colour ramps that snap to colours you already ship, semantic tokens derived\nwith measured WCAG **and** APCA contrast, one motion vocabulary shared by CSS and\nJS, a base stylesheet, and a scanner that finds the AI look in source and copy.\nZero runtime dependencies.\n\nRead [PRINCIPLES.md](./PRINCIPLES.md) for why each rule is a rule.\n\n## Install\n\n```bash\npnpm add @domandigital/craft\n```\n\n## Use\n\n```ts\nimport { craftTokens } from \"@domandigital/craft\";\n\nconst { css, report, ramps } = craftTokens({\n  // Steps you already ship come back byte-identical.\n  accent: { 400: \"#a78bfa\", 500: \"#7050f5\", 600: \"#6e4ce8\" },\n  bgCanvas: \"#04060e\",\n  bgSurface: \"#0b1120\",\n  bgElevated: \"#151c2e\",\n  textPrimary: \"#ecf2ff\",\n  textSecondary: \"#b7c3d9\",\n  textMuted: \"#8e9cb5\",\n  borderSubtle: \"rgba(184, 198, 219, 0.16)\",\n  borderStrong: \"rgba(184, 198, 219, 0.28)\",\n  success: \"#3fb98a\",\n  warning: \"#d6a14a\",\n  danger: \"#e26d6d\",\n  info: \"#5aa7e8\",\n});\n\nif (report.failures.length > 0) {\n  // Fails the house bar (4.5:1 AND |Lc| 60). Surface it; do not ship past it.\n  console.warn(report.failures.map((f) => f.note).join(\"\\n\"));\n}\n```\n\nWrite `css` to a committed file and import it. Then, once, in your global\nstylesheet:\n\n```css\n@import \"@domandigital/craft/craft.css\";\n```\n\n`craft.css` needs no build step and works with or without Tailwind.\n\nOn Tailwind v4, also import the theme bridge:\n\n```css\n@import \"@domandigital/craft/craft.tailwind.css\";\n```\n\nOn Tailwind v3, add the preset:\n\n```js\nconst { tailwindV3Preset } = require(\"@domandigital/craft\");\nmodule.exports = { presets: [tailwindV3Preset()] };\n```\n\n## The standard itself\n\n[STANDARD.md](./STANDARD.md) is the eleven-section house standard, every numeric\nrule cited, including a section on what is deliberately *not* a rule. Its\ncanonical numbers are compared against the code on every test run, so the\ndocument cannot drift from what ships.\n\n## Character: finding the AI look\n\nThe standard asks whether a surface is well made. [CHARACTER.md](./CHARACTER.md)\nasks whether anyone decided how it looks, or whether it is what a model builds\nwhen nobody told it otherwise.\n\n```bash\nnpx craft scan            # markup, components, stylesheets\nnpx craft scan --staged   # pre-commit: the git index only\nnpx craft copy app content\nnpx craft tells list\n```\n\nEvery finding names the tell, its generation (1: indigo, Inter, glass; 2: cream,\nitalic serif, eyebrow chips, bento), the line, and what to do instead. Every\ntell ships as a warning. A brand that really is violet declares it, with a\nreason, in `art-direction.json`:\n\n```json\n{ \"exceptions\": [{ \"tell\": \"ai-violet\", \"because\": \"Violet is on the van, the cards and the fascia.\" }] }\n```\n\nArt direction v2 records the customer's job, a hierarchy for each page type,\nand seven expressive tokens, with reasons and evidence. Begin with job\nresearch, then hierarchy, then tokens:\n\n```bash\nnpx craft direction research --brief \"An electrician in Brackley repairing dangerous faults for local households\"\nnpx craft direction init --client \"Copper Lane\" --brief \"<who, where, what they do>\"\nnpx craft direction validate --estate estate.json\nnpx craft estate add --id copper-lane --direction art-direction.json --estate estate.json\nnpx craft estate compare --estate estate.json --directions\nnpx craft direction validate --snapshot http://localhost:3000 --page home --strict\n```\n\n`--snapshot` accepts saved files and preview or production URLs. Drift fails\nwith `--strict`; declared estate comparisons stay advisory. Version 1 files\nstill validate with a warning. See [CHARACTER.md](./CHARACTER.md) for the full\nv2 example and the meaning of each layer.\n\n### In CI\n\n```bash\nnpx craft scan --baseline craft-baseline.json --update-baseline   # once: adopt today's findings\nnpx craft scan --baseline craft-baseline.json --strict --sarif craft.sarif\nnpx craft audit --pages https://example.com/sitemap.xml --viewport 390,1440\n```\n\n- `--baseline` reports only findings the baseline does not already hold. A\n  finding is keyed on its tell, path and excerpt, never its line, so an edit\n  above a known finding does not make it new. The output says how many known\n  findings it left out.\n- `--sarif <file>` writes SARIF 2.1.0 for GitHub code scanning. Findings on a\n  rendered page carry the URL, not a file, so code scanning does not show them.\n- `--json` output always carries `schemaVersion` (currently 1).\n- `--pages` audits every URL in a sitemap (or a sitemap index, one level deep)\n  or a file of URLs; `--viewport` audits each at those widths. A page that\n  will not load is listed as not measured, and fails `--strict`.\n\n`craft.config.json` in the repo root holds what craft should know about the\nrepo. `.claude`, `.agents` and `.cursor` are never walked, config or not.\n\n```json\n{\n  \"ignore\": [\"docs/archive/**\", \"*.stories.tsx\"],\n  \"copyPaths\": [\"content\", \"src/app\"],\n  \"severity\": {\n    \"em-dash\": { \"level\": \"block\", \"because\": \"This client's style guide bans them outright.\" }\n  }\n}\n```\n\nA severity change needs a `because`, like an exception. `off` is applied as an\nexception, so the report lists what it silenced.\n\nUnder `craft copy --gate`, a repo can raise a copy tell but never lower one in\nthe house blocking tier. A `warn` or `off` for a blocking tell, here or as an\nexception in `art-direction.json`, is refused and listed in the report. A\ngenuine one-off takes `copy-ok` on its line.\n\n### Copy\n\n[COPY.md](./COPY.md) is the house copy standard: the blocking tier, the review\ntier, the density tier that reads whole documents, and what to write instead.\n`craft copy --gate` applies the house policy, so the blocking tier fails the\nrun. A test fails if a phrase the standard blocks does not block.\n\n```bash\nnpx craft copy --gate content   # the house gate: exit 1 on the blocking tier\nnpx craft copy compare draft.md rewrite.md   # facts a rewrite lost or added\nnpx craft copy claims content   # every price, figure, date and named source, to check\n```\n\nNo tell can say whether a figure is true. `craft copy claims` lists each\nsentence a reader would take as a checkable fact, marked `sourced` (a source is\nnamed) or `UNSOURCED`, for a person to check against the primary source. It\nalways exits 0: a checklist, not a verdict.\n\nTo write in a chosen register (plain, persuasive, warm, literary), read the\nbrief before drafting and check a finished document after. See `REGISTERS.md`.\n\n```bash\nnpx craft register brief warm                  # what to do before drafting\nnpx craft register check letter.md --as warm   # five paragraphs or more; never fails\n```\n\nThe same checks run in code:\n\n```ts\nimport { checkCopy, formatReport, scanSource } from \"@domandigital/craft\";\n\nconst report = scanSource([{ path: \"app/page.tsx\", text }]);\nconsole.log(formatReport(report, \"craft scan\"));\n```\n\n## The anchor guarantee\n\nEvery hex you pass in comes back out unchanged, the same string, byte for byte.\nThat is what lets a live site adopt this without a single pixel moving. Only the\nsteps you never picked by hand are generated.\n\n## What it will tell you that you did not ask\n\n`report.failures` lists every text-on-surface pair that clears WCAG AA but misses\nthe house APCA bar, which is the failure mode a WCAG-only check cannot see. The\naccent fork emits its measured ratios as a CSS comment, so the choice is\ncheckable rather than asserted.\n\n## API\n\n| Area | Exports |\n| --- | --- |\n| Colour space | `hexToOklch`, `oklchToHex`, `toGamut`, `inSrgbGamut`, `inP3Gamut`, `deltaEOk`, `deltaEOkHex` |\n| Ramps | `ramp`, `rampFromAnchors`, `RAMP_STEPS`, `LIGHTNESS_CURVE` |\n| Contrast | `wcagContrast`, `apcaContrast`, `checkPair` |\n| Semantic | `semantic`, `accentFork` |\n| Motion | `EASE`, `EASE_TUPLE`, `DURATION_MS`, `DURATION_S`, `SPRING`, `SCALE`, `exitDuration`, `shouldAnimate` |\n| Type | `fluidType`, `fluidClamp`, `typeFeatureTokens`, `HOUSE_TYPE`, `TYPE_STEPS` |\n| Space | `fluidSpace`, `sectionRhythm`, `SPACE_STEPS` |\n| Density | `densityCss`, `densityTokens`, `DENSITIES` |\n| Restraint | `checkRestraint`, `HOUSE_BUDGET` |\n| Tailwind | `tailwindV3Preset` (v3), `tailwindV4Theme` / `craft.tailwind.css` (v4) |\n| Emit | `craftTokens`, `emitCss`, `motionTokens` |\n| Character | `scanSource`, `checkCopy`, `formatReport`, `CATALOGUE`, `CATALOGUE_VERSION`, `catalogueTable`, `runTell`, `tellById` |\n| Character colour | `parseColour`, `findColours`, `isAiViolet`, `isCream`, `AI_VIOLET` |\n| Character lists | `REFLEX_FONTS_1`, `REFLEX_FONTS_2`, `SHADCN_PRIMITIVES`, `AI_WORDS`, `STOCK_PHRASES`, `REVEAL_LIMIT`, `PILL_LIMIT`, `SHADCN_LIMIT` |\n\n## Licence\n\nApache-2.0\n","readmeFilename":"README.md"}