{"_id":"@bluealba/pae-design-tokens","_rev":"2-42a9a3a0d744a9e64a600070f6928209","name":"@bluealba/pae-design-tokens","dist-tags":{"latest":"0.0.0-integration-css.412"},"versions":{"0.0.0-integration-css.403":{"name":"@bluealba/pae-design-tokens","version":"0.0.0-integration-css.403","keywords":[],"author":{"name":"Blue Alba"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@bluealba/pae-design-tokens@0.0.0-integration-css.403","maintainers":[{"name":"bluealba","email":"npm@bluealba.com"}],"dist":{"shasum":"c92e77f7562a0e2eea563a2fe03044470ad19ceb","tarball":"https://registry.npmjs.org/@bluealba/pae-design-tokens/-/pae-design-tokens-0.0.0-integration-css.403.tgz","fileCount":8,"integrity":"sha512-NvQqWQXwSLXX8lsq8X1Tw8p6B3yA5DAXGlN4LUBFau0qc4mZQJ8GjCLWVZnLOc5kwjedk4g3ydEMCnQvRs4e1w==","signatures":[{"sig":"MEQCIGgLVvCeHkLnvakIH83Ripw4e74nj+7537Wg2epg7l8uAiB2R3DAN8G81kzd4JznQLwnJ0gTCurWYRKubM9pKDsE1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56334},"main":"./dist/platform-tokens.css","exports":{".":"./dist/platform-tokens.css","./base.css":"./src/base.css","./tokens.css":"./src/tokens.css","./layer-order.css":"./src/layer-order.css","./shell-reset.css":"./dist/shell-reset.css","./platform-tokens.css":"./dist/platform-tokens.css"},"gitHead":"ac4e34651703fbb6209635f0ad36f5120529ce9e","scripts":{"build":"node ./scripts/build.mjs","clean":"rm -rf dist","prebuild":"npm run clean"},"_npmUser":{"name":"bluealba","email":"npm@bluealba.com"},"_npmVersion":"10.9.0","description":"Blue Alba Platform design tokens, cascade layer contract and base styles","directories":{},"_nodeVersion":"22.12.0","publishConfig":{"access":"public","@bluealba:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pae-design-tokens_0.0.0-integration-css.403_1780584503066_0.010080415016342492","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-integration-css.412":{"name":"@bluealba/pae-design-tokens","description":"Blue Alba Platform design tokens, cascade layer contract and base styles","version":"0.0.0-integration-css.412","main":"./dist/platform-tokens.css","exports":{".":"./dist/platform-tokens.css","./platform-tokens.css":"./dist/platform-tokens.css","./shell-reset.css":"./dist/shell-reset.css","./layer-order.css":"./src/layer-order.css","./tokens.css":"./src/tokens.css","./base.css":"./src/base.css"},"scripts":{"build":"node ./scripts/build.mjs","clean":"rm -rf dist","prebuild":"npm run clean"},"keywords":[],"author":{"name":"Blue Alba"},"license":"PolyForm-Noncommercial-1.0.0","publishConfig":{"@bluealba:registry":"https://registry.npmjs.org/","access":"public"},"_id":"@bluealba/pae-design-tokens@0.0.0-integration-css.412","gitHead":"959786ae03903a3bf02d1dc97c1485289a3abe3a","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-baX3AeOa8kstelQljBD2scdhJRVl8DOGr3RENKHAc1yYsqkuNmZsSeeHFw/PpEEtOShbPTdGOnfwJSBTvE11qA==","shasum":"3c7246ea05356545ba9f25ce4486240021a2f02f","tarball":"https://registry.npmjs.org/@bluealba/pae-design-tokens/-/pae-design-tokens-0.0.0-integration-css.412.tgz","fileCount":8,"unpackedSize":56334,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGs9+rttqsbdGdr9sscbQbYAkQgVZIFlNfRkPR8JM3FvAiEAmcS2Hydc5++2Yt9JQ2Isg4Zp6Bt8KCXUj4zq7WI0Z7A="}]},"_npmUser":{"name":"bluealba","email":"npm@bluealba.com"},"directories":{},"maintainers":[{"name":"bluealba","email":"npm@bluealba.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pae-design-tokens_0.0.0-integration-css.412_1780923755473_0.2840042980191362"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-04T14:48:22.942Z","modified":"2026-06-08T13:02:35.728Z","0.0.0-integration-css.403":"2026-06-04T14:48:23.198Z","0.0.0-integration-css.412":"2026-06-08T13:02:35.620Z"},"author":{"name":"Blue Alba"},"license":"PolyForm-Noncommercial-1.0.0","keywords":[],"description":"Blue Alba Platform design tokens, cascade layer contract and base styles","maintainers":[{"name":"bluealba","email":"npm@bluealba.com"}],"readme":"# @bluealba/pae-design-tokens\n\nSingle source of truth for the Blue Alba Platform CSS architecture: design\ntokens, the cascade layer contract and base styles.\n\n## Artifacts\n\n| File | Purpose | Where it loads |\n|---|---|---|\n| `dist/platform-tokens.css` | Layer order declaration + all `--platform-*`/`--pae-shell-*` tokens (light & dark) + minimal document base | Inlined **first** in the document `<head>` by the gateway (`index.hbs`) |\n| `dist/shell-reset.css` | Full preflight-style reset for the shell | Injected **inside the shell shadow root only** — never into the document |\n\n## Cascade layer contract\n\n```css\n@layer pae.tokens, pae.base, pae.customization;\n```\n\n- **`pae.tokens`** — token definitions (`:root` custom properties, `[data-theme='dark']` overrides).\n- **`pae.base`** — minimal document base (`html`/`body`) + defensive defaults scoped to `[data-pae-ui]` (the marker `initializeMicroFrontend()` puts on every micro-frontend root).\n- **`pae.customization`** — tenant/customization overrides. Always wins over the layers above **regardless of stylesheet load order** (this is what makes customization deterministic).\n\n### What the contract guarantees\n\n- Deterministic priority between platform layers, independent of load order.\n- A micro-frontend using its own layers (e.g. Tailwind v4) declares them later in the document, so its CSS wins over platform layers inside its own tree.\n- Tokens are consumed as CSS custom properties: they inherit into the shell shadow root and into every micro-frontend.\n\n### What it does NOT guarantee\n\n- Un-layered CSS beats layered CSS at equal specificity. The shell is immune\n  to hostile global CSS via **Shadow DOM**, not via layers.\n- Isolation **between** micro-frontends in the light DOM. A micro-frontend\n  loading a global reset (e.g. an unscoped Tailwind preflight) can affect\n  sibling micro-frontends — scope your preflight to your own container\n  (`#pae-app:<module-name>`).\n\n## Customization\n\nTenant customization stylesheets are wrapped in `@layer pae.customization`\nautomatically by `usePlatformCustomization` / `useDynamicStyleSheet`\n(`@bluealba/pae-ui-react-core`). They should only re-declare custom\nproperties:\n\n```css\n:root {\n  --platform-color-primary-red: 5;\n  --platform-color-primary-green: 35;\n  --platform-color-primary-blue: 100;\n}\n```\n","readmeFilename":"README.md"}