{"_id":"@designlasagna/schemas","_rev":"4-fa6ad6af80a7d19b73abecdd9bc6256f","name":"@designlasagna/schemas","dist-tags":{"latest":"0.4.0"},"versions":{"0.3.2":{"name":"@designlasagna/schemas","version":"0.3.2","keywords":["design-system","design-tokens","dtcg","json-schema","custom-elements-manifest","css-utilities","lsp","multi-platform"],"license":"MIT","_id":"@designlasagna/schemas@0.3.2","maintainers":[{"name":"frdh","email":"magnusfredlundh@gmail.com"}],"homepage":"https://designlasagna.recipes","bugs":{"url":"https://github.com/designlasagna/schemas/issues"},"dist":{"shasum":"5b51f4a6ffe31547b85ca25faf639427b71fb58f","tarball":"https://registry.npmjs.org/@designlasagna/schemas/-/schemas-0.3.2.tgz","fileCount":22,"integrity":"sha512-0EFotEwYAZR6B0maLLd4HBEyp2v9rQSlqbqBS4gPMAM2tf735bzMIoVVVnR+pOq9X2LKH0qgclfdECX01rZI0A==","signatures":[{"sig":"MEUCICj0xJ0nPxnnz/62tTp2tQYmLLh7QfmlCKsoQuJN+bT0AiEAj5kONruSzyPCmYFo0aNVs90JX8IcRdttN4Iwun9diNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92526},"exports":{"./examples/*":"./examples/*","./package.json":"./package.json","./v0.3/icons.json":"./v0.3/icons.json","./v0.2/tokens.json":"./v0.2/tokens.json","./v0.3/tokens.json":"./v0.3/tokens.json","./v0.2/utilities.json":"./v0.2/utilities.json","./v0.3/utilities.json":"./v0.3/utilities.json","./v0.2/cem-extensions.json":"./v0.2/cem-extensions.json","./v0.3/cem-extensions.json":"./v0.3/cem-extensions.json","./v0.3/dtcg-extensions.json":"./v0.3/dtcg-extensions.json"},"gitHead":"102b7d49f4dd63a1b50c5bdd8ad28f39fcdf9acb","scripts":{"test":"node test/validate.mjs","validate":"node scripts/validate-schemas.mjs"},"_npmUser":{"name":"frdh","email":"magnusfredlundh@gmail.com"},"repository":{"url":"git+https://github.com/designlasagna/schemas.git","type":"git"},"_npmVersion":"11.12.1","description":"JSON schemas for design system manifests — tokens, utilities, icons, CEM extensions, and DTCG authoring extensions. Multi-platform.","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/schemas_0.3.2_1787867620661_0.3898100276678371","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@designlasagna/schemas","version":"0.3.3","keywords":["design-system","design-tokens","dtcg","json-schema","custom-elements-manifest","css-utilities","lsp","multi-platform"],"license":"MIT","_id":"@designlasagna/schemas@0.3.3","maintainers":[{"name":"frdh","email":"magnusfredlundh@gmail.com"}],"homepage":"https://designlasagna.recipes","bugs":{"url":"https://github.com/designlasagna/schemas/issues"},"dist":{"shasum":"f2a4824ba00656e997a0a437d73ccc457fb851e7","tarball":"https://registry.npmjs.org/@designlasagna/schemas/-/schemas-0.3.3.tgz","fileCount":24,"integrity":"sha512-hbbnnWGiKCW5eQhwjnfqXgFtnJm7l4TemGCBhNS+l8sFoKVId7SP9FrIyVVaDnCV2sEIqOc5IVGuoB024ngZDg==","signatures":[{"sig":"MEYCIQDA6NMklcfeUXaD2fHom4Bmb08ULiCRjmp1ua5/EhEwHwIhANooUaVz1PYJ8Z2SoJyBS/psx2D6D3ZT8KDosgl9dnRU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149971},"exports":{"./examples/*":"./examples/*","./package.json":"./package.json","./v0.3/icons.json":"./v0.3/icons.json","./v0.2/tokens.json":"./v0.2/tokens.json","./v0.3/tokens.json":"./v0.3/tokens.json","./v0.2/utilities.json":"./v0.2/utilities.json","./v0.3/utilities.json":"./v0.3/utilities.json","./dtcg/2025.10/format.json":"./dtcg/2025.10/format.json","./v0.2/cem-extensions.json":"./v0.2/cem-extensions.json","./v0.3/cem-extensions.json":"./v0.3/cem-extensions.json","./v0.3/dtcg-extensions.json":"./v0.3/dtcg-extensions.json"},"gitHead":"f7691f8b7b7163086a6ad2a80c770636ed8f3701","scripts":{"test":"node test/validate.mjs","validate":"node scripts/validate-schemas.mjs"},"_npmUser":{"name":"frdh","email":"magnusfredlundh@gmail.com"},"repository":{"url":"git+https://github.com/designlasagna/schemas.git","type":"git"},"_npmVersion":"11.12.1","description":"JSON schemas for design system manifests — tokens, utilities, icons, CEM extensions, and DTCG authoring extensions. Multi-platform.","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/schemas_0.3.3_1787920912972_0.7476400247972932","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@designlasagna/schemas","version":"0.3.4","keywords":["design-system","design-tokens","dtcg","json-schema","custom-elements-manifest","css-utilities","lsp","multi-platform"],"license":"MIT","_id":"@designlasagna/schemas@0.3.4","maintainers":[{"name":"frdh","email":"magnusfredlundh@gmail.com"}],"homepage":"https://designlasagna.recipes","bugs":{"url":"https://github.com/designlasagna/schemas/issues"},"dist":{"shasum":"55de2e52a35e1dba9d8b7242676ea3e4e675eda8","tarball":"https://registry.npmjs.org/@designlasagna/schemas/-/schemas-0.3.4.tgz","fileCount":24,"integrity":"sha512-KIEQ67rAPO9BXSBLla8C5+OLJa0kcx3vwvy3NWqVHa4l/1ldVpr/jicC8jxIniRzKEHXLYvMYQsvvyZMvgtJJg==","signatures":[{"sig":"MEUCIQDYDtGkd9ZdwRIv94mAUwN32NPWsQpGrz1jPAHUQtjtowIgQ9axcPpnA8VVP6lOsgEHe4XTUNlOyrCYQbfBKB8DDjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@designlasagna%2fschemas@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":149971},"exports":{"./examples/*":"./examples/*","./package.json":"./package.json","./v0.3/icons.json":"./v0.3/icons.json","./v0.2/tokens.json":"./v0.2/tokens.json","./v0.3/tokens.json":"./v0.3/tokens.json","./v0.2/utilities.json":"./v0.2/utilities.json","./v0.3/utilities.json":"./v0.3/utilities.json","./dtcg/2025.10/format.json":"./dtcg/2025.10/format.json","./v0.2/cem-extensions.json":"./v0.2/cem-extensions.json","./v0.3/cem-extensions.json":"./v0.3/cem-extensions.json","./v0.3/dtcg-extensions.json":"./v0.3/dtcg-extensions.json"},"gitHead":"04beba6a9a74a9284ef8b7aa62585480bac15125","scripts":{"test":"node test/validate.mjs","validate":"node scripts/validate-schemas.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98ed9b65-105e-4c1d-9c1a-3be18f430103"}},"repository":{"url":"git+https://github.com/designlasagna/schemas.git","type":"git"},"_npmVersion":"11.17.0","description":"JSON schemas for design system manifests — tokens, utilities, icons, CEM extensions, and DTCG authoring extensions. Multi-platform.","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/schemas_0.3.4_1788124595472_0.7759480724794994","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@designlasagna/schemas@0.4.0","bugs":{"url":"https://github.com/designlasagna/schemas/issues"},"dist":{"shasum":"e525d26a791b2a99d9cf242176bac3d3ebf80bdf","tarball":"https://registry.npmjs.org/@designlasagna/schemas/-/schemas-0.4.0.tgz","fileCount":35,"integrity":"sha512-oBOQwWUcPs6e+CxH+1lO1lpqE4Hbvp6D6PlW+KRwQXwfeSzTM7q2zkajMU7djTXyye/AvdH8T7UFjpkodygkuw==","signatures":[{"sig":"MEYCIQDpvq3yVqIvyO5zD6Tg9wQA8YzDdw4S4BKfcREb8wIrUgIhAKjNQlXiYpdmtdZtpdzCR7ndpZ1OZntIq2hzPutn7hKc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDGfmwrJ8jIuRzWPjtbmwP87Efr2t9b+VeZLIVfiOKI9AiEA3sCEQwBf9rv5xBFgxtdEz39X8iHgfbF3zdnq3uH1ZoE="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@designlasagna%2fschemas@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":219130},"name":"@designlasagna/schemas","exports":{"./examples/*":"./examples/*","./package.json":"./package.json","./v0.3/icons.json":"./v0.3/icons.json","./v0.4/icons.json":"./v0.4/icons.json","./v0.2/tokens.json":"./v0.2/tokens.json","./v0.3/tokens.json":"./v0.3/tokens.json","./v0.4/tokens.json":"./v0.4/tokens.json","./v0.2/utilities.json":"./v0.2/utilities.json","./v0.3/utilities.json":"./v0.3/utilities.json","./v0.4/lifecycle.json":"./v0.4/lifecycle.json","./v0.4/utilities.json":"./v0.4/utilities.json","./dtcg/2025.10/format.json":"./dtcg/2025.10/format.json","./v0.2/cem-extensions.json":"./v0.2/cem-extensions.json","./v0.3/cem-extensions.json":"./v0.3/cem-extensions.json","./v0.4/cem-extensions.json":"./v0.4/cem-extensions.json","./v0.3/dtcg-extensions.json":"./v0.3/dtcg-extensions.json","./v0.4/dtcg-extensions.json":"./v0.4/dtcg-extensions.json"},"gitHead":"82b773dcee65691bcd7cdcea24b0a3fa03f70a3f","license":"MIT","scripts":{"test":"node test/validate.mjs && node test/lifecycle.mjs","validate":"node scripts/validate-schemas.mjs"},"version":"0.4.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98ed9b65-105e-4c1d-9c1a-3be18f430103"}},"homepage":"https://designlasagna.recipes","keywords":["design-system","design-tokens","dtcg","json-schema","custom-elements-manifest","css-utilities","lsp","multi-platform"],"repository":{"url":"git+https://github.com/designlasagna/schemas.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON schemas for design system manifests — tokens, utilities, icons, CEM extensions, and DTCG authoring extensions. Multi-platform.","directories":{},"maintainers":[{"name":"frdh","email":"magnusfredlundh@gmail.com"}],"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/schemas_0.4.0_1790249532196_0.3694446913100602"}}},"time":{"created":"2026-08-27T21:53:40.499Z","modified":"2026-09-24T11:32:12.636Z","0.3.2":"2026-08-27T21:53:40.791Z","0.3.3":"2026-08-28T12:41:53.148Z","0.3.4":"2026-08-30T21:16:35.585Z","0.4.0":"2026-09-24T11:32:12.306Z"},"bugs":{"url":"https://github.com/designlasagna/schemas/issues"},"license":"MIT","homepage":"https://designlasagna.recipes","keywords":["design-system","design-tokens","dtcg","json-schema","custom-elements-manifest","css-utilities","lsp","multi-platform"],"repository":{"url":"git+https://github.com/designlasagna/schemas.git","type":"git"},"description":"JSON schemas for design system manifests — tokens, utilities, icons, CEM extensions, and DTCG authoring extensions. Multi-platform.","maintainers":[{"name":"frdh","email":"magnusfredlundh@gmail.com"}],"readme":"# @designlasagna/schemas\n\n> JSON Schema contracts for Design Lasagna manifests and DTCG authoring extensions.\n\nJSON schemas for design system manifests — tokens, utilities, and CEM extensions.\n\nUsed by the [Design Lasagna Language Server](https://github.com/designlasagna/ds-language-server) for IntelliSense, diagnostics, and code actions. Also useful for CI validation, documentation tooling, and build pipelines.\n\n## Schemas\n\n| Schema | Purpose |\n|--------|---------|\n| `v0.2/tokens.json` | Design token manifest (resolved values, modes, multi-platform references, deprecation) |\n| `v0.2/utilities.json` | Utility/style preset manifest (categorized, multi-platform, with deprecation) |\n| `v0.2/cem-extensions.json` | Extensions to Custom Elements Manifest for lifecycle management |\n| `v0.3/tokens.json` | Current Design Lasagna token manifest schema |\n| `v0.3/utilities.json` | Current utility/style preset manifest schema |\n| `v0.3/cem-extensions.json` | Current CEM lifecycle extension schema |\n| `v0.3/dtcg-extensions.json` | `recipes.designlasagna` metadata for DTCG source files |\n| `v0.3/icons.json` | Current icon manifest schema |\n| `v0.4/{tokens,utilities,icons}.json` | Unreleased lifecycle contract; explicit profile opt-in required |\n| `v0.4/{cem-extensions,dtcg-extensions}.json` | Unreleased standards-compatible lifecycle extensions |\n| `v0.4/lifecycle.json` | Shared lifecycle fragments; register alongside v0.4 schemas for offline validation |\n\nThe [v0.4 lifecycle guide](docs/lifecycle.md) covers authoring, compatibility,\nprecedence, inheritance, and [consumer test vectors](examples/lifecycle/consumer-cases.json).\nThe pending `@designlasagna/schemas@0.4.0` release is an unpublished local artifact;\nexisting v0.2/v0.3 contracts remain unchanged. See the [migration and release handoff](docs/lifecycle-migration.md).\n\n## Usage\n\n### In manifest files (`$schema`)\n\n```json\n{\n  \"$schema\": \"https://designlasagna.recipes/schemas/v0.3/tokens.json\",\n  \"schemaVersion\": \"0.3.0\",\n  \"tokens\": [...]\n}\n```\n\n### CI validation\n\n```bash\nnpm install @designlasagna/schemas ajv-cli\najv validate -s node_modules/@designlasagna/schemas/v0.3/tokens.json -d dist/tokens.json\n```\n\n### Programmatic\n\n```js\nimport tokenSchema from '@designlasagna/schemas/v0.3/tokens.json' assert { type: 'json' };\nimport utilitySchema from '@designlasagna/schemas/v0.3/utilities.json' assert { type: 'json' };\n```\n\n## DTCG extensions\n\nToken source remains standard DTCG. Design Lasagna-specific governance metadata\nbelongs in `$extensions[\"recipes.designlasagna\"]` and is validated by\n`v0.3/dtcg-extensions.json`. The schema distinguishes group-level fields from\ntoken-only fields such as `since`, `platforms`, `relations`, and `metadata`.\n\n```json\n{\n  \"$extensions\": {\n    \"recipes.designlasagna\": {\n      \"tier\": \"semantic\",\n      \"usage\": { \"allowedProperties\": [\"background-color\"] }\n    }\n  }\n}\n```\n\n## Multi-Platform Support\n\nTokens and utilities support optional `platforms` objects for multi-platform design systems:\n\n### Tokens\n\n```json\n{\n  \"id\": \"color.bg.primary\",\n  \"cssVariable\": \"--ds-color-bg-primary\",\n  \"platforms\": {\n    \"web\": { \"reference\": \"--ds-color-bg-primary\" },\n    \"ios\": { \"reference\": \"DsTokens.color.bgPrimary\" },\n    \"android\": { \"reference\": \"DsTheme.colors.bgPrimary\" }\n  },\n  \"resolved\": { \"light\": \"#00427a\", \"dark\": \"#52a8e1\" }\n}\n```\n\n### Utilities\n\n```json\n{\n  \"name\": \"text-heading-1\",\n  \"description\": \"Typography style heading level-1\",\n  \"platforms\": {\n    \"web\": {\n      \"className\": \"ds-text-heading-1\",\n      \"properties\": { \"font-size\": \"32px\", \"font-weight\": \"bold\" }\n    },\n    \"ios\": {\n      \"modifier\": \".dsTextHeading1()\"\n    },\n    \"android\": {\n      \"style\": \"DsTypography.Heading1\"\n    }\n  }\n}\n```\n\nWeb-only manifests work without `platforms` — `cssVariable` and `properties` serve as shorthands for the web platform.\n\n## Deprecation Object\n\nNative token, utility and icon manifests share this structured payload. CEM keeps\nstandard boolean/string `deprecated` with sibling metadata; DTCG keeps standard\nboolean/string `$deprecated` plus the structured vendor extension. Do not place\nan object in either standard field. See the [v0.4 guide](docs/lifecycle.md) for the\nnew nonempty-message and explicit-false contract; the example below uses a token ID.\n\n```json\n{\n  \"deprecated\": {\n    \"message\": \"Use color.primary.pressed instead.\",\n    \"removal\": \"2027-01-01\",\n    \"replacement\": \"color.primary.pressed\"\n  }\n}\n```\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `message` | ✅ | Human-readable reason + migration guidance |\n| `removal` | | When it will be removed (ISO date, semver, or quarter) |\n| `replacement` | | Machine-readable replacement identifier |\n\n## Time-aware diagnostics (in the Language Server)\n\nTarget v0.4 consumer policy uses real ISO `removal` dates and UTC calendar days\nto escalate severity. This schema change does not implement that policy in the\nLanguage Server; existing consumers differ at the 30-day boundary. Versions and\nquarters are display-only and do not derive dates or removed status:\n\n| Removal date | Severity |\n|---|---|\n| > 90 days away | ℹ️ Information |\n| 30–90 days away | ⚠️ Warning |\n| < 30 days away | 🔴 Error |\n| Past due | 🔴 Error |\n\n## Releases and validation\n\nThe currently prepared (not yet published) package version is `@designlasagna/schemas@0.4.0`. This breaking pre-1.0 minor release carries the explicitly selected `v0.4` contract; it retains v0.2/v0.3 exports for existing consumers. See the [migration handoff](docs/lifecycle-migration.md) for the compatibility window and release authorization steps.\n\nValidate a checkout before opening a pull request:\n\n```bash\nnpm ci\nnpm run validate\nnpm test\n```\n\nPublishing uses npm trusted publishing. After explicit authorization, a pushed, annotated version tag matching `package.json` (for this release, `v0.4.0`) runs validation and then publishes with provenance in GitHub Actions. Do not publish from a local machine or retag a release; publish a new version for corrections.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}