{"_id":"@anarchitects/common-angular-ui-layouts","_rev":"6-6e99ad34d69bf6f21cf1c8e62f10e766","name":"@anarchitects/common-angular-ui-layouts","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"@anarchitects/common-angular-ui-layouts","version":"0.0.1","_id":"@anarchitects/common-angular-ui-layouts@0.0.1","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"dist":{"shasum":"d7e9533d49ab279e4a545f24fd53151ba4ff042d","tarball":"https://registry.npmjs.org/@anarchitects/common-angular-ui-layouts/-/common-angular-ui-layouts-0.0.1.tgz","fileCount":21,"integrity":"sha512-LSGLvJkBksRC2qgN7liu8mek5JH8sSwPcvnftPxH8ZIwd1Mm6lWLn3jLk1combLHiM90+0Vc8PGXjdIancRUyQ==","signatures":[{"sig":"MEUCIGzKmO8IQ4f1dz3xoNtD2VWpE0KsUcy9iPNJq+EYb0lWAiEAstKMeq0r+GKtCBnOn36Q7gJ6rfjPpT+Dkq2k/7oV+uM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143329},"module":"fesm2022/anarchitects-common-angular-ui-layouts.mjs","exports":{".":{"types":"./types/anarchitects-common-angular-ui-layouts.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts.mjs"},"./host":{"types":"./types/anarchitects-common-angular-ui-layouts-host.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-host.mjs"},"./defaults":{"types":"./types/anarchitects-common-angular-ui-layouts-defaults.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-defaults.mjs"},"./registry":{"types":"./types/anarchitects-common-angular-ui-layouts-registry.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-registry.mjs"},"./contracts":{"types":"./types/anarchitects-common-angular-ui-layouts-contracts.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-contracts.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"ee887ca63337e863260838bd9ee22dc649dffbc8","typings":"types/anarchitects-common-angular-ui-layouts.d.ts","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"_npmVersion":"10.9.4","description":"Pluggable layout runtime infrastructure for Angular bricks.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^21.0.0","@angular/common":"^21.0.0","@anarchitects/common-angular-ui-primitives":"^0.0.1","@anarchitects/common-angular-ui-composition":"^0.0.1"},"_npmOperationalInternal":{"tmp":"tmp/common-angular-ui-layouts_0.0.1_1773588690815_0.020247874410928457","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.2":{"name":"@anarchitects/common-angular-ui-layouts","version":"0.0.2","_id":"@anarchitects/common-angular-ui-layouts@0.0.2","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/common/angular/ui-layouts","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"88352c3d811fd8cc8908f8d7240c9ce6dfe3f278","tarball":"https://registry.npmjs.org/@anarchitects/common-angular-ui-layouts/-/common-angular-ui-layouts-0.0.2.tgz","fileCount":21,"integrity":"sha512-Dxq2FVW26j6/bb6db8LIu8Du9kcE2bfpRJA8MOv0TzjABJ3HSSTsdjXYDZTAW9kFH/i+ZKaQ+AtUicQFPLJW9Q==","signatures":[{"sig":"MEQCIHShIaD5GrF0cSVa8NIfTlCSvT5dJ9YNFEUCxpZcC88mAiBCHUfR711wOiiqvd0CyVrztziLiUHT9ap4XaIUbEpmfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fcommon-angular-ui-layouts@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":144418},"module":"fesm2022/anarchitects-common-angular-ui-layouts.mjs","exports":{".":{"types":"./types/anarchitects-common-angular-ui-layouts.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts.mjs"},"./host":{"types":"./types/anarchitects-common-angular-ui-layouts-host.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-host.mjs"},"./defaults":{"types":"./types/anarchitects-common-angular-ui-layouts-defaults.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-defaults.mjs"},"./registry":{"types":"./types/anarchitects-common-angular-ui-layouts-registry.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-registry.mjs"},"./contracts":{"types":"./types/anarchitects-common-angular-ui-layouts-contracts.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-contracts.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"ec365290ab5f59c8b8d7190c1c92b4c8188041f6","typings":"types/anarchitects-common-angular-ui-layouts.d.ts","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/common/angular/ui-layouts"},"_npmVersion":"10.9.4","description":"Pluggable layout runtime infrastructure for Angular bricks.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","dependencies":{"tslib":"^2.3.0","@anarchitects/common-angular-ui-primitives":"^0.0.2","@anarchitects/common-angular-ui-composition":"^0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/common-angular-ui-layouts_0.0.2_1774607930483_0.8331368761277573","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.3":{"name":"@anarchitects/common-angular-ui-layouts","version":"0.0.3","_id":"@anarchitects/common-angular-ui-layouts@0.0.3","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/common/angular/ui-layouts","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"86c4b0ea167a285fe0c7767c6e17301410cd2bc6","tarball":"https://registry.npmjs.org/@anarchitects/common-angular-ui-layouts/-/common-angular-ui-layouts-0.0.3.tgz","fileCount":21,"integrity":"sha512-uzLMtNDzlSu4FAMbLa7CtmD5S6lxHcHDNZQkUzeWVR5JbzUxs7L1901BTP5W+EEX9ut9pAfcJTP6gjERdBJuNw==","signatures":[{"sig":"MEUCIQCxWGAflaVmeaPbWqyNTY3qTftjfuWaoPwxgj5cwli7CAIgLlS1ouNEW+lTFVhTwj0MebuTFzYuUvhfeX0HDnWRJhI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fcommon-angular-ui-layouts@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":144418},"module":"fesm2022/anarchitects-common-angular-ui-layouts.mjs","exports":{".":{"types":"./types/anarchitects-common-angular-ui-layouts.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts.mjs"},"./host":{"types":"./types/anarchitects-common-angular-ui-layouts-host.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-host.mjs"},"./defaults":{"types":"./types/anarchitects-common-angular-ui-layouts-defaults.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-defaults.mjs"},"./registry":{"types":"./types/anarchitects-common-angular-ui-layouts-registry.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-registry.mjs"},"./contracts":{"types":"./types/anarchitects-common-angular-ui-layouts-contracts.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-contracts.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"b517f35d18965302e17711e107bd16309abf3ef1","typings":"types/anarchitects-common-angular-ui-layouts.d.ts","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/common/angular/ui-layouts"},"_npmVersion":"10.9.4","description":"Pluggable layout runtime infrastructure for Angular bricks.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","dependencies":{"tslib":"^2.3.0","@anarchitects/common-angular-ui-primitives":"^0.0.3","@anarchitects/common-angular-ui-composition":"^0.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/common-angular-ui-layouts_0.0.3_1774814852238_0.7420960272239618","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.0":{"name":"@anarchitects/common-angular-ui-layouts","version":"0.1.0","_id":"@anarchitects/common-angular-ui-layouts@0.1.0","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/common/angular/ui-layouts","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"075c635f8ded7d43867d371bbfb393b67ac2736c","tarball":"https://registry.npmjs.org/@anarchitects/common-angular-ui-layouts/-/common-angular-ui-layouts-0.1.0.tgz","fileCount":21,"integrity":"sha512-eei/Tjw39hPt4GZI+q12e4sD6PVJaBpQNScMUHNUZXwYWw2r92R8+nFHp+xluRpWGDVb/9ysaweMm6qUSwLp/Q==","signatures":[{"sig":"MEYCIQC4b+iDi28o4tVatiTueI0D2YB1uGWUrt1eHqM3cE8gfgIhAJsGceu/ey3xgAObCFBrU0WqgX+RVKSXwfvf6C59fV44","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fcommon-angular-ui-layouts@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151937},"module":"fesm2022/anarchitects-common-angular-ui-layouts.mjs","exports":{".":{"types":"./types/anarchitects-common-angular-ui-layouts.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts.mjs"},"./host":{"types":"./types/anarchitects-common-angular-ui-layouts-host.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-host.mjs"},"./defaults":{"types":"./types/anarchitects-common-angular-ui-layouts-defaults.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-defaults.mjs"},"./registry":{"types":"./types/anarchitects-common-angular-ui-layouts-registry.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-registry.mjs"},"./contracts":{"types":"./types/anarchitects-common-angular-ui-layouts-contracts.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-contracts.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"538b17d1113c2b6dd320d8faaeb9ecf2b835d6dd","typings":"types/anarchitects-common-angular-ui-layouts.d.ts","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/common/angular/ui-layouts"},"_npmVersion":"10.9.4","description":"Pluggable layout runtime infrastructure for Angular bricks.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","dependencies":{"tslib":"^2.3.0","@anarchitects/common-angular-ui-primitives":"^0.1.0","@anarchitects/common-angular-ui-composition":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/common-angular-ui-layouts_0.1.0_1775031467209_0.6055425291406245","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.1":{"name":"@anarchitects/common-angular-ui-layouts","version":"0.1.1","_id":"@anarchitects/common-angular-ui-layouts@0.1.1","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/common/angular/ui-layouts","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"ee40bb41177cae3558fcb7bdd9253a6f4130a1e7","tarball":"https://registry.npmjs.org/@anarchitects/common-angular-ui-layouts/-/common-angular-ui-layouts-0.1.1.tgz","fileCount":21,"integrity":"sha512-vTwflJXlO7GbxptKLBvwu9htooxZ3Z/b1/2Vkp8x3qBVYbg5pjk6cYKenb6j+csa6+F5QTZVrTY1F7utcVyMVA==","signatures":[{"sig":"MEQCIGnWCUQJc7GQVf7Q/dNo8Mg0PzjDp+FeFYT4Q1EKFlSRAiAYIQooUstMsXGlvh2Vvney32MisPwcAL+scAPzFh0ZzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fcommon-angular-ui-layouts@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":154468},"type":"module","module":"fesm2022/anarchitects-common-angular-ui-layouts.mjs","exports":{".":{"types":"./types/anarchitects-common-angular-ui-layouts.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts.mjs"},"./host":{"types":"./types/anarchitects-common-angular-ui-layouts-host.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-host.mjs"},"./defaults":{"types":"./types/anarchitects-common-angular-ui-layouts-defaults.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-defaults.mjs"},"./registry":{"types":"./types/anarchitects-common-angular-ui-layouts-registry.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-registry.mjs"},"./contracts":{"types":"./types/anarchitects-common-angular-ui-layouts-contracts.d.ts","default":"./fesm2022/anarchitects-common-angular-ui-layouts-contracts.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"2d6a4b3ada94f466ae25aa0f78c308f34f232b90","typings":"types/anarchitects-common-angular-ui-layouts.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd1da320-857b-4b9c-8f21-5d868da688c3"}},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/common/angular/ui-layouts"},"_npmVersion":"11.17.0","description":"> Transition status: retained for the final compatibility line; do not adopt for new work. Domain-owned > behavior and host-app composition replace this shared runtime under > [ADR-0003](../../../../docs/adr/0003-adopt-tailwind-v4-frontend-foundation-and-","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"tslib":"^2.3.0","@anarchitects/common-angular-ui-primitives":"^0.1.1","@anarchitects/common-angular-ui-composition":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^21.0.0 || ^22.0.0","@angular/common":"^21.0.0 || ^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/common-angular-ui-layouts_0.1.1_1788352908677_0.35635454406335043","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2026-03-15T15:31:30.714Z","modified":"2026-09-04T13:13:36.834Z","0.0.1":"2026-03-15T15:31:30.949Z","0.0.2":"2026-03-27T10:38:50.617Z","0.0.3":"2026-03-29T20:07:32.385Z","0.1.0":"2026-04-01T08:17:47.334Z","0.1.1":"2026-09-02T12:41:48.825Z"},"bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/common/angular/ui-layouts","repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/common/angular/ui-layouts"},"description":"> Transition status: retained for the final compatibility line; do not adopt for new work. Domain-owned > behavior and host-app composition replace this shared runtime under > [ADR-0003](../../../../docs/adr/0003-adopt-tailwind-v4-frontend-foundation-and-","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"readme":"# @anarchitects/common-angular-ui-layouts\n\n> Transition status: retained for the final compatibility line; do not adopt for new work. Domain-owned\n> behavior and host-app composition replace this shared runtime under\n> [ADR-0003](../../../../docs/adr/0003-adopt-tailwind-v4-frontend-foundation-and-retire-common-angular-ui-packages.md).\n> Published versions will not be unpublished.\n\nPluggable layout runtime infrastructure for Angular bricks.\n\nThis package provides layout contracts, registry, runtime host, and built-in\ndefault layouts. It is shared infrastructure only and does not embed\ndomain-specific behavior.\n\n## Features\n\n- Layout contracts and runtime host components for pluggable rendering\n- Registry-based layout resolution with explicit defaults\n- Default implementations for form/list/detail layout kinds\n- Contract-safe host styling aligned with shell utility collision prevention\n\n## Installation\n\n```bash\nnpm install @anarchitects/common-angular-ui-layouts\n# or\nyarn add @anarchitects/common-angular-ui-layouts\n```\n\n## Entry points\n\n- `@anarchitects/common-angular-ui-layouts/contracts`\n- `@anarchitects/common-angular-ui-layouts/registry`\n- `@anarchitects/common-angular-ui-layouts/host`\n- `@anarchitects/common-angular-ui-layouts/defaults`\n\n## Layout kinds and defaults\n\n- `form`: `form:stacked`, `form:grid`, `form:inline`, `form:card`\n- `list`: `list:list`, `list:grid`, `list:card`, `list:table`\n- `detail`: `detail:page`, `detail:card`, `detail:sidebar`\n\n## Resolution precedence\n\n1. explicit host input `[layout]`\n2. provider default from `ANX_LAYOUT_DEFAULTS[kind]`\n3. built-in fallback for the kind\n\n## Shell Utility Boundary\n\nShell utility classes (`anx-region`, `anx-stack`, `anx-inline`, `anx-grid`) are\nconsumer shell layout classes and must not be used by package host bindings or\ninternal templates.\n\nUse explicit component CSS for spacing and flow in layout renderers.\n\nIncorrect:\n\n```ts\nhost: { class: 'anx-default-layout anx-stack' }\n```\n\nCorrect:\n\n```ts\nhost: { class: 'anx-default-layout' }\n```\n\n```css\n:host {\n  display: grid;\n  gap: var(--anx-layout-gap-stack);\n  padding: var(--anx-layout-block-padding-current);\n}\n```\n\n## Consumer extension\n\nConsumer apps can add layouts without modifying core by:\n\n1. Creating a renderer component that accepts `context: AnxResolvedLayoutContext`\n2. Registering it with `provideAnxLayouts([...])`\n3. Overriding defaults with `provideAnxLayoutDefaults({...})`\n\n## Usage\n\nUse this package when runtime-selectable layout behavior is required. Keep\nlayout resolution in shared infrastructure and keep shell utility class usage in\nconsumer route/page wrappers.\n\n## Validation workflow\n\nContract and downstream validation references:\n\n1. `yarn nx run guardrails:test`\n2. `yarn nx run forms-angular-ui:test --testFile=libs/forms/angular/ui/src/form.spec.ts`\n\n## Documentation\n\n- System guide: `docs/guides/design-ui-systems.md`\n- Migration guide: `docs/guides/theme-migration.md`\n\n## Development notes\n\n- Keep runtime resolution deterministic and side-effect free.\n- Register new layouts through provider APIs rather than hardcoded switches.\n- Avoid domain-specific assumptions in shared layout contracts.\n","readmeFilename":"README.md"}