Filigran

Login

A complete login page component inspired by OpenCTI, featuring a two-column layout with a decorative aside panel, credentials form, SSO provider buttons, consent message, and alert banners.

Full Login Page

My App

When a consentMessage is provided, the form and SSO buttons are hidden until the user accepts.

My App
By logging in, you agree to our Terms of Service and Privacy Policy. Your data will be processed in accordance with our data processing agreement.
I have read and comply with the above statement

Sub-Components

The login system is composed of several sub-components that can be used independently or together via LoginPage.

LoginLayout

A two-column layout: centered content on the left, decorative aside panel on the right. The aside panel is hidden on mobile.

My App

Your login content goes here

LoginLayout Props

NameTypeDefaultDescription
asideLoginAsideConfig-Configuration for the decorative aside panel (see below).
logoReactNode-Logo element displayed above the content area.
asideContentReactNode-Custom content to render inside the aside panel.
childrenReactNode-Main content (forms, alerts, etc.) rendered in the left panel.

LoginAsideConfig

NameTypeDefaultDescription
variantenum ("color" | "gradient" | "image" | "default")"default"Type of aside background.
colorstring-Background color (when variant is "color").
gradientStartstring-Gradient start color (when variant is "gradient").
gradientEndstring-Gradient end color (when variant is "gradient").
imagestring-Background image URL (when variant is "image").

Default background: When no aside config is provided (or variant is "default"), the aside uses the OpenCTI gradient — dark mode: #050A14 → #0C1728, light mode: #EAEAED → #FEFEFF. This adapts automatically with the theme.


LoginForm

A credentials form with email and password fields, powered by react-hook-form + Zod validation. Submission is handled entirely via the onSubmit callback — no network dependency.

LoginForm Props

NameTypeDefaultDescription
onSubmit(values: {email: string, password: string}) => void | Promise<void>-Called when the form is submitted with valid values.
onForgotPassword() => void-Called when "I forgot my password" is clicked.
errorstring-Server-side error message to display below the fields.
labelsLoginLabels-Custom labels for i18n (see below).
disabledbooleanfalseDisables all form inputs and the submit button.

LoginAlert

Styled alert banners for displaying messages (errors, warnings, info, success).

LoginAlert Props

NameTypeDefaultDescription
variantenum ("error" | "warning" | "info" | "success")"error"The alert style variant.
childrenReactNode-Alert message content.

LoginConsent

A consent message with a checkbox that must be accepted before login options are shown.

By logging in, you agree to our Terms of Service and Privacy Policy.
I have read and comply with the above statement

Consent accepted: No

LoginConsent Props

NameTypeDefaultDescription
messagestring-The consent message to display.
checkedboolean-Whether the checkbox is checked.
onCheckedChange(checked: boolean) => void-Called when the checkbox state changes.
confirmTextstring"I have read and comply with the above statement"Custom text for the checkbox label.

LoginSSOGroup & LoginSSOButton

Buttons for external SSO authentication providers.

SSOProvider Type

NameTypeDescription
namestringDisplay name of the provider.
providerstringUnique identifier for the provider.
hrefstringURL to redirect to for SSO authentication.
iconReactNodeOptional icon to display in the button.
buttonLabelstringOptional custom label (overrides name).

LoginSSOGroup Props

NameTypeDefaultDescription
providersSSOProvider[]-Array of SSO providers to display.
onProviderClick(provider: SSOProvider) => void-Called when a provider button is clicked.

LoginLabels (i18n)

All text labels can be customized via the labels prop for internationalization.

NameTypeDefault
emailLabelstring"Login"
passwordLabelstring"Password"
signInLabelstring"Sign in"
forgotPasswordLabelstring"I forgot my password"
consentConfirmTextstring"I have read and comply with the above statement"
noProviderMessagestring"No authentication provider available"

LoginPage (Orchestrator)

The top-level component that composes all sub-components together.

LoginPage Props

NameTypeDefaultDescription
onSubmit(values: {email: string, password: string}) => void | Promise<void>-Form submission callback.
providersSSOProvider[][]SSO providers to display.
hasCredentialsFormbooleantrueWhether to show the email/password form.
consentMessagestring-If provided, gates login behind a consent checkbox.
loginMessagestring-Optional message displayed above the form.
logoReactNode-Logo element.
asideLoginAsideConfig-Aside panel configuration.
asideContentReactNode-Custom aside panel content.
onForgotPassword() => void-Forgot password callback.
onSSOClick(provider: SSOProvider) => void-SSO button click callback.
errorstring-Server error message for the form.
alertsArray<{variant, message, key?}>-Array of alert banners to display.
labelsLoginLabels-Custom labels for i18n.
disabledbooleanfalseDisables all interactive elements.

Import

Import from @filigran/ui :

Import {LoginPage, LoginLayout, LoginForm, LoginAlert, LoginConsent, LoginSSOButton, LoginSSOGroup} from '@filigran/ui/clients'