Core.Portal.Chrome 0.3.19
Core.Portal.Chrome
Core.Portal.Chrome contains portal-safe MVC/Razor chrome primitives for product portals.
Owns
- Auth shell and form-alert components.
- Public auth split-shell template for MVC/Razor and Blazor portal hosts.
- Public and app header partials.
- Appearance controls and static chrome assets.
- Product-agnostic account-support view models and partials.
Does Not Own
- Product workflows, navigation trees, route maps, dashboards, tables, page copy, or customer/product behavior.
- Broker-backed sign-in orchestration. Use
Core.Portal.SignInfor Core auth broker login. - Persistence, database, API-controller, worker, database explorer, or product-repo dependencies.
- Product-specific API clients. Any support client in this package must call product-agnostic Core endpoints only and must be optional for consuming hosts.
Consumer Rules
Product portals should consume this package through NuGet package flow. The product host owns branding, route placement, cookie settings, tenant configuration, typed product API clients, smoke tests, and architecture allowlists.
Public Auth Shell
Use PortalPublicAuthShell and PortalPublicAuthPreferences from Blazor hosts, and the _PortalChromePublicAuthWordmark, _PortalChromePublicAuthPreferences, and _PortalChromePublicAuthBrandField partials from MVC or Razor Pages hosts. Link _content/Core.Portal.Chrome/css/portal-auth-shell.css and _content/Core.Portal.Chrome/js/portal-auth-shell.js, then set product-owned CSS variables for brand color, gradients, and typography as needed. Core owns the responsive shell, masthead preference controls, form spacing, field sizing, field validation behavior, preference handoff hooks, and alert primitives; product hosts own the sign-in form, forgot-password behavior, provider posture, proof credentials, page copy, routes, cookie names, and storage-key overrides.
Public auth forms opt into the shared behavior with data-auth-form. Mark required visible fields with normal HTML validation attributes such as required, type="email", and minlength, and provide localized messages through data-auth-required-message, data-auth-invalid-message, data-auth-min-length-message, and data-auth-match-message. Password confirmation fields can declare data-auth-match-input="<field name>". Submit buttons can declare data-auth-busy-text; buttons marked data-auth-disabled-permanent remain disabled.
When changing language, portals can preserve non-sensitive state by placing data-auth-preserve-param="<query parameter>" on fields such as email, step, or return URL. Do not mark passwords for preservation.
Cookie-backed Razor Pages hosts should provide PublicLanguageCookieName; the shared script writes the cookie and removes the transient language query parameter on reload. Query-backed Blazor hosts can omit PublicLanguageCookieName; the shared script writes the selected language into LanguageQueryParameterName while preserving marked auth state.
The public-auth validation standard is:
- client-correctable input (required fields, email format, password length, password confirmation mismatch) uses field-level validation and keeps the primary submit button disabled until valid;
- auth, provider, reset-token, and upstream/server failures use visible alert banners above the form;
- product controllers must return equivalent field-level errors for crafted or no-script POSTs rather than converting missing/malformed values into authentication failures.
No packages depend on Core.Portal.Chrome.
.NET 10.0
- Core.Contracts (>= 0.3.19)
| Version | Downloads | Last updated |
|---|---|---|
| 0.3.80 | 5 | 07/21/2026 |
| 0.3.79 | 2 | 07/21/2026 |
| 0.3.78 | 10 | 07/20/2026 |
| 0.3.77 | 4 | 07/20/2026 |
| 0.3.76 | 1 | 07/19/2026 |
| 0.3.75 | 2 | 07/19/2026 |
| 0.3.74 | 1 | 07/19/2026 |
| 0.3.73 | 2 | 07/18/2026 |
| 0.3.72 | 2 | 07/17/2026 |
| 0.3.71 | 2 | 07/17/2026 |
| 0.3.70 | 2 | 07/17/2026 |
| 0.3.69 | 2 | 07/17/2026 |
| 0.3.68 | 2 | 07/17/2026 |
| 0.3.67 | 2 | 07/17/2026 |
| 0.3.66 | 2 | 07/16/2026 |
| 0.3.65 | 2 | 07/16/2026 |
| 0.3.64 | 2 | 07/15/2026 |
| 0.3.63 | 2 | 07/15/2026 |
| 0.3.62 | 2 | 07/15/2026 |
| 0.3.61 | 2 | 07/15/2026 |
| 0.3.60 | 3 | 07/14/2026 |
| 0.3.59 | 4 | 07/14/2026 |
| 0.3.58 | 2 | 07/14/2026 |
| 0.3.57 | 2 | 07/14/2026 |
| 0.3.56 | 2 | 07/14/2026 |
| 0.3.55 | 2 | 07/14/2026 |
| 0.3.54 | 2 | 07/14/2026 |
| 0.3.53 | 2 | 07/14/2026 |
| 0.3.52 | 2 | 07/14/2026 |
| 0.3.51 | 2 | 07/14/2026 |
| 0.3.50 | 2 | 07/13/2026 |
| 0.3.49 | 2 | 07/13/2026 |
| 0.3.48 | 2 | 07/13/2026 |
| 0.3.47 | 2 | 07/13/2026 |
| 0.3.46 | 2 | 07/13/2026 |
| 0.3.45 | 2 | 07/13/2026 |
| 0.3.44 | 2 | 07/13/2026 |
| 0.3.43 | 2 | 07/13/2026 |
| 0.3.42 | 2 | 07/13/2026 |
| 0.3.41 | 2 | 07/13/2026 |
| 0.3.40 | 2 | 07/12/2026 |
| 0.3.39 | 2 | 07/12/2026 |
| 0.3.38 | 2 | 07/12/2026 |
| 0.3.37 | 2 | 07/12/2026 |
| 0.3.36 | 2 | 07/12/2026 |
| 0.3.35 | 2 | 07/12/2026 |
| 0.3.34 | 2 | 07/12/2026 |
| 0.3.33 | 2 | 07/12/2026 |
| 0.3.32 | 2 | 07/12/2026 |
| 0.3.31 | 2 | 07/11/2026 |
| 0.3.30 | 2 | 07/11/2026 |
| 0.3.29 | 2 | 07/11/2026 |
| 0.3.28 | 2 | 07/11/2026 |
| 0.3.27 | 2 | 07/05/2026 |
| 0.3.26 | 3 | 07/05/2026 |
| 0.3.24 | 1 | 07/03/2026 |
| 0.3.23 | 5 | 06/23/2026 |
| 0.3.22 | 2 | 06/22/2026 |
| 0.3.21 | 2 | 06/21/2026 |
| 0.3.20 | 2 | 06/19/2026 |
| 0.3.19 | 2 | 06/19/2026 |
| 0.3.18 | 2 | 06/19/2026 |
| 0.3.17 | 2 | 06/19/2026 |
| 0.3.16 | 1 | 06/19/2026 |
| 0.3.15 | 2 | 06/19/2026 |
| 0.3.14 | 2 | 06/19/2026 |
| 0.3.13 | 1 | 06/19/2026 |
| 0.3.12 | 1 | 06/19/2026 |
| 0.3.11 | 2 | 06/19/2026 |
| 0.3.10 | 2 | 06/19/2026 |
| 0.3.9 | 1 | 06/19/2026 |
| 0.3.8 | 2 | 06/19/2026 |
| 0.3.7 | 2 | 06/19/2026 |
| 0.3.6 | 2 | 06/18/2026 |
| 0.3.5 | 2 | 06/18/2026 |
| 0.3.4 | 3 | 06/10/2026 |
| 0.3.0 | 3 | 06/02/2026 |
| 0.2.0 | 3 | 06/02/2026 |
| 0.1.3-local.1 | 2 | 06/10/2026 |
| 0.1.2 | 4 | 05/31/2026 |
| 0.1.2-local.1 | 2 | 06/10/2026 |
| 0.1.1 | 11 | 05/28/2026 |
| 0.1.0 | 52 | 05/23/2026 |
| 0.1.0-alpha.7 | 2 | 05/21/2026 |
| 0.1.0-alpha.6 | 2 | 05/21/2026 |
| 0.1.0-alpha.5 | 3 | 05/21/2026 |
| 0.1.0-alpha.4 | 3 | 05/21/2026 |
| 0.1.0-alpha.3 | 2 | 05/21/2026 |
| 0.1.0-alpha.2 | 2 | 05/20/2026 |