{"_id":"@bluealba/pae-ui-theme","_rev":"4-d24878563e9edead960804b1b45fc216","name":"@bluealba/pae-ui-theme","dist-tags":{"latest":"0.0.0-develop-417"},"versions":{"0.0.0-integration-css.413":{"name":"@bluealba/pae-ui-theme","version":"0.0.0-integration-css.413","keywords":[],"author":{"name":"Blue Alba"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@bluealba/pae-ui-theme@0.0.0-integration-css.413","maintainers":[{"name":"bluealba","email":"npm@bluealba.com"}],"dist":{"shasum":"24f29744034229bace0620d320c37cec92f9e52e","tarball":"https://registry.npmjs.org/@bluealba/pae-ui-theme/-/pae-ui-theme-0.0.0-integration-css.413.tgz","fileCount":8,"integrity":"sha512-izqnMAqhgtBXCtPK7VPdt7jM1U0BPX6prbG4W4IVFwmaMQ6nnGLLf+hovMb/ayamjeNJnu2b7P58Hr415YU+XQ==","signatures":[{"sig":"MEUCIQCXrHQVGaW5J23eAFL8jnmLvaW5hUURQJ5LD3rTxHaXNQIgHb4DLh2FTmX1I1zXPMmJbgWzWI2hkCG2gLuJc5Nmcs8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56538},"main":"./dist/platform-theme.css","exports":{".":"./dist/platform-theme.css","./base.css":"./src/base.css","./theme.css":"./src/theme.css","./layer-order.css":"./src/layer-order.css","./shell-reset.css":"./dist/shell-reset.css","./platform-theme.css":"./dist/platform-theme.css"},"gitHead":"35fb226b499a1f619dc505572d6a454dea8ebbf8","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 UI theme: 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-ui-theme_0.0.0-integration-css.413_1780931063439_0.934054983261162","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-integration-css.414":{"name":"@bluealba/pae-ui-theme","version":"0.0.0-integration-css.414","keywords":[],"author":{"name":"Blue Alba"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@bluealba/pae-ui-theme@0.0.0-integration-css.414","maintainers":[{"name":"bluealba","email":"npm@bluealba.com"}],"dist":{"shasum":"26fec80ef68940cdb6efe4920fc84431f72108bd","tarball":"https://registry.npmjs.org/@bluealba/pae-ui-theme/-/pae-ui-theme-0.0.0-integration-css.414.tgz","fileCount":8,"integrity":"sha512-ozVFw1Kwd8TrjEZYCB1XAuq/lA1U5dE3AXkEA4YE0210cpY1zb5wKjTt74J49CAbPIs7MANBOZIEHE8pcAz2rg==","signatures":[{"sig":"MEYCIQCn3lymZQYbCD5PEcM8g5RdFuQvZS8ZXQSoPbmsoWYQiQIhAJhu5T0HfYvWxHCLxHZr+5Dxr5UYfRHXDZoYZx4NhXk/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56538},"main":"./dist/platform-theme.css","exports":{".":"./dist/platform-theme.css","./base.css":"./src/base.css","./theme.css":"./src/theme.css","./layer-order.css":"./src/layer-order.css","./shell-reset.css":"./dist/shell-reset.css","./platform-theme.css":"./dist/platform-theme.css"},"gitHead":"14742128e4b07b6eebeaf3b226fb87843ddf6042","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 UI theme: 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-ui-theme_0.0.0-integration-css.414_1780938430555_0.18751176651732537","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-integration-css.415":{"name":"@bluealba/pae-ui-theme","version":"0.0.0-integration-css.415","keywords":[],"author":{"name":"Blue Alba"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@bluealba/pae-ui-theme@0.0.0-integration-css.415","maintainers":[{"name":"bluealba","email":"npm@bluealba.com"}],"dist":{"shasum":"bc7b49d23c2d6d3bb850990c62bb1c1c4fb07b87","tarball":"https://registry.npmjs.org/@bluealba/pae-ui-theme/-/pae-ui-theme-0.0.0-integration-css.415.tgz","fileCount":8,"integrity":"sha512-P/p21mMWFeFxPygo/kkeWsEGUkkkkIbCGqmNVaeNSnRDBbUu+he4dbYHFsDgxW37BwkVDzIQmt5VYPPnfiCWKA==","signatures":[{"sig":"MEMCH3Mo/CGggV9UTI5d1ZnPu12eWIma+1gQ2hEqh5bEvuYCIEJmqeP4uFmvVakW4QyB1lggdD0Amb3KIuopByGYi4im","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56538},"main":"./dist/platform-theme.css","exports":{".":"./dist/platform-theme.css","./base.css":"./src/base.css","./theme.css":"./src/theme.css","./layer-order.css":"./src/layer-order.css","./shell-reset.css":"./dist/shell-reset.css","./platform-theme.css":"./dist/platform-theme.css"},"gitHead":"bf18cb826c871982af3c5bdb4ff0152339b44f29","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 UI theme: 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-ui-theme_0.0.0-integration-css.415_1780939882482_0.31881744191676153","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-develop-417":{"name":"@bluealba/pae-ui-theme","description":"Blue Alba Platform UI theme: design tokens, cascade layer contract and base styles","version":"0.0.0-develop-417","main":"./dist/platform-theme.css","exports":{".":"./dist/platform-theme.css","./platform-theme.css":"./dist/platform-theme.css","./shell-reset.css":"./dist/shell-reset.css","./layer-order.css":"./src/layer-order.css","./theme.css":"./src/theme.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-ui-theme@0.0.0-develop-417","gitHead":"3cf55713e972cba2356efeb7b3c7e7120e5bb0db","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-lwD2cQrRowtehQRZWgJ/OWH0h0baAr3HjjAcgla+0cPS1PyJ9GCDygWxiRcpJ4VqaTJ3vLUmTq7hEL+NLaxeaQ==","shasum":"7f55da4c05ed81f73fcea81516c2f0cc9abe038e","tarball":"https://registry.npmjs.org/@bluealba/pae-ui-theme/-/pae-ui-theme-0.0.0-develop-417.tgz","fileCount":8,"unpackedSize":56530,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDMc1PGLhDNsRcKf2xLpVyN7DPrZbhujR3FlE4Xyew68gIgWBjb8jbck9aGj5bI3RoUAEpKHtPF4sKtJEZId0BAMSc="}]},"_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-ui-theme_0.0.0-develop-417_1780946838025_0.5622312159687712"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-08T15:04:23.259Z","modified":"2026-06-08T19:27:18.245Z","0.0.0-integration-css.413":"2026-06-08T15:04:23.588Z","0.0.0-integration-css.414":"2026-06-08T17:07:10.752Z","0.0.0-integration-css.415":"2026-06-08T17:31:22.632Z","0.0.0-develop-417":"2026-06-08T19:27:18.148Z"},"author":{"name":"Blue Alba"},"license":"PolyForm-Noncommercial-1.0.0","keywords":[],"description":"Blue Alba Platform UI theme: design tokens, cascade layer contract and base styles","maintainers":[{"name":"bluealba","email":"npm@bluealba.com"}],"readme":"# @bluealba/pae-ui-theme\n\nSingle source of truth for the Blue Alba Platform CSS architecture: the\nplatform **theme variables** (a.k.a. design tokens), the cascade layer\ncontract and base styles.\n\n## Artifacts\n\n| File | Purpose | Where it loads |\n|---|---|---|\n| `dist/platform-theme.css` | Layer order declaration + all `--platform-*`/`--pae-shell-*` theme variables (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.theme, pae.base, pae.customization;\n```\n\n- **`pae.theme`** — theme variable definitions (`:root` custom properties, `[data-theme='dark']` overrides). Industry term: design tokens.\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` (recommended) or the lower-level\n`useDynamicStyleSheet` (`@bluealba/pae-ui-react-core`). They should only\nre-declare custom properties:\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"}