Application context snapshot for AI agent awareness — updated on every app/tab transition
Suppresses chat overlay during initial app load — set true after workspace initializes
True when the current route is the full Conversations/Chat workspace — hides the chat overlay
Tracks whether the login page is in dark mode
True when the current URL is the OAuth callback route - used for conditional rendering
Where the story panel's brand block sits: 'start' (Login C's editorial split, the default) or
'center'. Centering is what a logo-led brand usually wants, and it is what the stacked (≤900px)
layout already does — this makes the same choice available on the wide layout without a host
reaching into .main-banner.
Accessible name for the banner's brand image. The artwork itself comes from the
--mj-login-banner-logo token, which the component cannot read — so a deployment that swaps
the logo sets the matching name here, or a screen reader keeps announcing the default brand.
The supporting line under LoginBannerTitle, or null for none.
The story panel's headline, or null for none. It was hardcoded ("Welcome back"), which made
the one prominent line of copy on the page the one thing a host could not change. null
collapses the element, so a logo-only banner is a binding, not a CSS hide.
Extra content for the login screen expressed as data rather than markup — a support route, a trust mark, a policy link. Each card names the region it belongs to (see MJLoginCard).
This is the channel a configured deployment uses from code. A host that keeps per-tenant branding somewhere resolves it itself — as Explorer already resolves the provider catalog before bootstrap — and binds it here. A design published in Login Studio is the data-driven route instead: see PublishedLoginScreen.
A host that needs richer content than a card projects a template into the region's slot instead, which takes over from the cards there.
The default theme's brand and the published design's --mj-login-* tokens, on the login wrapper
only: it exists while signed out, so it cannot race the user's own theme applied after sign-in.
The heading above the sign-in options, or null for none.
Explorer's own login column already labels the action on the button itself, so an embedding app
whose single provider renders one CTA sees the word twice ("Log in" over a "Log in" button).
Passing null drops the heading. Default matches MJLoginPickerComponent.Heading.
How the story panel and the sign-in column are arranged — see MJLoginLayout.
The stock 'split' is the editorial layout; 'split-reverse' mirrors it; 'centered' is the
single-column sign-in page, where the story content sits on a full-bleed banner background and
the sign-in column becomes a card on top of it. Every slot and every input still applies in
each layout — a layout decides where the regions go, never whether they exist.
Whether the sign-in panel carries MemberJunction's "Powered by" attribution. A white-labelled deployment turns it off here instead of hiding it with a CSS rule against the picker's internals. Default matches MJLoginPickerComponent.ShowPoweredBy.
Whether a pre-shell guard overlay is blocking the shell
If specified, this provider will be used for communication and for all metadata purposes. By default, if not provided, the Metadata and RunView classes are used for this and the default GraphQLDataProvider is used which is connected to the same back-end MJAPI instance as the Metadata and RunView classes. If you want to have this component connect to a different MJAPI back-end, create an instance of a ProviderBase sub-class like GraphQLDataProvider/etc, and configure it as appropriate to connect to the MJAPI back-end you want to use, and then pass it in here.
The default theme's published sign-in page (GET /auth/login-screen), or null while it loads,
when there is none, when the server predates the route, or when UsePublishedLoginScreen is off.
True while a sign-in is being initiated, so the picker cannot start two at once.
Draw the default theme's published sign-in page (Login Studio) and wear its brand colors before
sign-in. A published design wins over LoginLayout, LoginBannerAlignment and
LoginHeading, and over LoginCards in a region it fills; a host's mjLoginSlot
templates still win over it, region by region. Set false to keep the login screen exactly as this host's inputs and CSS draw it.
StaticɵdirStaticɵfacUse AuthBase.
Providers offered by the server catalog. Empty for a single-provider deployment.
Top boundary (in px) the chat overlay bubble cannot be dragged past. The shell-header is 60px tall, but if the server-connectivity banner is showing it sits above the shell-header and pushes everything down, so we add its height in.
The height is read from the banner's HeightPx signal, never from the DOM.
The banner publishes it from an animation-done listener that can fire while
views are refreshing; a DOM read is invisible to change detection, so this
binding went stale and dev mode reported NG0100 on every later pass
(MJ #4377). A signal read registers this view as a consumer, so the write
re-refreshes it.
Use Document instead.
Use IsChatRoute.
Use IsOAuthCallback.
Cards configured for the story panel.
Cards configured for the sign-in column — the default region.
Use PreShellBlocked.
Lede rendered above the provider picker.
A real auth status message (expired session, provider error) always wins — a failure the user needs to see must never be displaced by static copy.
Absent one, this is Login C's lede, which C marks multi-only: it explains that there is a
choice to make, so it is suppressed when there is exactly one provider and nothing to choose.
Returns either the default Metadata provider or the one specified in the Provider property, if it was specified
Returns either the default RunQuery provider or the one specified in the Provider property, if it was specified
Returns either the default RunView provider or the one specified in the Provider property, if it was specified
Instance Config gate for the floating chat overlay bubble.
Whether to render the picker instead of the single "Log in" button. Only ever true when the server published 2+ client-visible providers — one option is not a choice.
Instance Config gate for the service-worker update toast.
Use ShowValidationOnly.
Use SubHeaderText.
Handle successful login and initialize the application
A published region's blocks, or null when the design leaves that region to the stock content.
Resolves a slot name to the host's TemplateRef, or null when nothing was projected for it
— in which case the template renders that region's default (the stock brand block, the
configured cards, or nothing, per MJLoginSlotName).
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
A callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.
Starts sign-in with the provider the user picked.
Choosing the provider already wired into DI logs in immediately. Choosing a different one requires a reload: each browser SDK contributes its Angular providers (interceptors, guards, config tokens) at module-definition time, so the injector cannot be re-composed in place. The choice is persisted first, and the reloaded app both bootstraps that provider and starts its login flow automatically — so the user experiences one click, not two.
Handle app/nav-item navigation requests emitted from the floating chat overlay
Handle "open full chat workspace" from the chat overlay — navigate to the Conversations tab with the active conversation
Handle "open entity record" events from the chat overlay
Handle tool execution events from the chat overlay
Use SetupAuth.
Toggle between light and dark themes, persisting the choice
Base class for all Angular components in the MemberJunction system.