Skip to content

Customization

Overview

The SDK offers a flexible and modular customization system designed to adapt to your brand identity, user needs, and accessibility standards—whether you're launching a quick integration or implementing a deeply tailored experience. A key advantage of this system is that you can start broad and refine as needed. Begin by applying global changes to colors, typography, and styles at the theme level. Then, if needed, progressively fine-tune individual components or interactive states. Each section supports partial configuration—you only need to override the values that are relevant for your use case. Any keys left undefined will automatically fall back to the SDK’s default values, ensuring robustness and ease of maintenance. This approach enables teams to deliver a cohesive, accessible, and brand-aligned experience with minimal effort, while still offering full control for advanced customization.

The sections that follow detail how to configure:

  • Texts (labels, messages, instructions, accessibility strings)
  • Media (illustrations and image assets per screen and device type)
  • Styles (design tokens, layout, colors, and typography)
  • Components (buttons, header, spinner, and more)

With this structure, you can create a customized user experience that feels natively integrated into your product—without sacrificing speed or maintainability.

Texts

The new system also provides flexible control over the text content displayed throughout the interface. Instead of editing hardcoded labels or messages in multiple places, you can now configure all user-facing texts from a centralized section. This approach allows you to easily adapt the language to suit your brand tone, localization needs, or specific use cases, whether it's updating button labels, instructions, error messages, or screen titles. By modifying just a few key parameters, you can ensure that the entire experience feels cohesive, consistent, and aligned with the expectations of your users.

Below is the full JSON structure containing all the configurable text elements used throughout the interface. This includes everything from screen titles and helper messages to button text and accessibility descriptions.

⬇ Download English Texts

⬇ Download Spanish Texts

You are not required to modify the entire structure. The configuration is highly flexible, allowing you to override only the specific text entries you want to customize. If a given key is not explicitly redefined, the SDK will automatically fall back to its default value ensuring smooth operation even with partial configurations.

In general, text entries apply to both active and passive flows, however, some text keys are nested under either active or passive, and those will only apply to their corresponding flow type.

For example, if your integration uses an active flow and you provide a value for texts.instructions.passive.title, that text will not be used. Instead, you must use the corresponding key: texts.instructions.active.title.

This gives you full control over the messaging without unnecessary complexity, making it easier to maintain consistency and adapt the interface to your product's voice and audience.

Take into account that ASCII codes (e.g., \n) will not be interpreted and will be shown as-is. Only some HTML tags can be used in section titles and subtitles to better adapt the messaging. If an unsupported tag is included, the text will be rendered as plain text.

The list of allowed tags is as follows:

  • <b></b>
  • <i></i>
  • <br/>
  • <ul></ul>
  • <li></li>
  • <ol></ol>

Example of title and subtitle with HTML inside:

"texts": {
    "instructions": {
        "passive": {
            "title": "Take a photo of <b>your face</b>",
            "subtitle": "<i>Follow these steps:</i> <ol><li><b>Frame your face</b> in the camera</li><li>Maintain a <b>neutral expression</b></li></ol>"
        }
    }
}
Desktop Mobile
DesktopTextsInstructionsSelfieModified MobileTextsInstructionsSelfieModified

Recommendations

Titles and Subtitles

  • Use short, descriptive, and action-oriented titles
    Titles should clearly indicate the action the user is expected to perform.
    Example: “Take a selfie”, “Show the front of your document”
  • Subtitles should expand or clarify the instruction
    They offer supporting context to the title in a more detailed or reassuring tone.
    Example: “Make sure your face is centered and well lit”
  • Avoid vague or generic labels
    Texts like “Step 1” or “Instruction screen” do not help users anticipate what they need to do next.
  • Maintain clear text hierarchy
    Titles should be visually prominent. Subtitles should follow in lighter or smaller weight.

Feedback and System Messages

  • Feedback should reflect the specific system activity
    Replace generic loading phrases with descriptive messages:
    “Analyzing selfie…”, “Verifying back side…”, “Finalizing check…”
  • Error messages should be neutral and constructive
    Avoid blame or overly technical language.
    Prefer: “Face not visible — please align your face within the frame”
    Avoid: “Error: Face detection failed”

Readability and Accessibility

  • Keep text clear, concise, and scannable
    Users tend to scan rather than read. Prioritize brevity and clarity over formality or marketing tone.
  • Avoid excessive formatting
    Do not overuse bold, italics, or underlining. These should be reserved for minimal emphasis, not used for entire sentences or instructions.
  • Maintain visual consistency
    Use the same tone and sentence structure across screens to improve predictability and reduce cognitive load.

Media

The new system also provides flexible control over the media content displayed throughout the interface.

Instead of editing media in multiple places, you can now configure all images from a centralized section. By modifying just a few media, you can ensure that the entire experience feels cohesive, consistent, and aligned with the expectations of your users.

Below is the full JSON structure containing all the configurable media elements used throughout the interface.

⬇ Download Media

You are not required to modify the entire structure. The configuration is highly flexible, allowing you to override only the specific media entries you want to customize. If a given key is not explicitly redefined, the SDK will automatically fall back to its default value—ensuring smooth operation even with partial configurations.

This gives you full control over the media without unnecessary complexity, making it easier to maintain consistency and adapt the interface to your product's look and feel.

Example of media configuration:

"media": {
    "instructions": {
        "desktopPassive": "/images/selfie_desktop.png",
        "mobilePassive": "/images/selfie_mobile.png",
        "desktopActive": "/images/selfie-active_desktop.png",
        "mobileActive": "/images/selfie-active.gif"
    },
}

Recommendations

File format

We support all image formats natively handled by the user's web browser, but we recommend modern formats for the best balance of quality and file size.

  • Static images: Use WebP (best for web) or standard JPEG/PNG. Use PNG only if you need transparency.
  • Animated images: Use GIF for very short, simple animations.

File weight and performance

The larger the file size, the longer it will take to load. Large files can significantly slow down the rendering of your content, especially for users on slower network connections or older devices.

Descriptive and Accessible Visuals

  • Prioritize descriptive, instructional visuals
    Illustrations and animations should clearly demonstrate the expected user behavior:
    Example: Show how to position the face, maintain lighting, or perform head movements.
  • All media should include alternative text for screen readers
    Alternative text can be configured directly in the JSON text structure. These descriptions help users with visual impairments understand the context or purpose of the image or animation.
  • Make alternative text specific and actionable
    Example: “Illustration of a person aligning their face in the oval frame” is more useful than “Selfie image”.
  • Avoid leaving media without a text fallback
    When media is purely visual, ensure it doesn’t carry the sole instructional value. Pair with a textual explanation for redundancy and accessibility.
  • Looping animations should not distract
    Loop behavior can be helpful when the action needs to be repeated, but it should not cause visual fatigue or interfere with reading other elements on screen.

Style

The new system based on design tokens transforms how you customize and manage the interface across your product.

Instead of manually overriding styles in multiple places, you can now adjust a centralized set of tokens that control key visual properties such as colors, typography, and more. By updating just a few parameters, you can apply consistent branding across all components and views.

This not only helps ensure visual consistency and accessibility, but also reduces the effort and time required for implementation and future maintenance. Design tokens act as a single source of truth for your UI’s appearance, making the customization process more scalable, predictable, and easier to maintain over time.

Below is the full JSON structure containing all the configurable styles used throughout the interface.

⬇ Download Styles

You are not required to modify the entire structure.

Three Levels of Customization

The customization system is structured in three progressive levels:

1. Theme Level (Global)

Apply your brand’s visual identity across the interface by adjusting a centralized set of tokens:

  • Brand colors (primary and secondary)
  • Typography (primary and secondary font families)

This is the recommended starting point for fast, system-wide consistency.

2. Component Level

Override the appearance of specific UI elements without affecting the rest of the system:

  • Header
  • Buttons (primary, secondary, icon)
  • Cards
  • Spinner

Control design tokens such as colors, borders, and icon styles at the component level.

3. Interactive States

Define how components behave visually in response to user actions, such as hover or pressed states. Customize:

  • Backgrounds
  • Icon and text colors
  • Border styles

This level provides precision over interactive behavior and reinforces a consistent experience.

Recommendations

Typography

  • font.familyPrimary
    Used in larger sizes for titles and headers. A slightly more expressive or “display-style” font can be used here, as long as legibility is preserved.
  • font.familySecondary
    Applied to subtitles, buttons, and general interface components. This font should prioritize readability at small sizes and across different screen types.

Colors

  • brandPrimaryColor
    Represents your main brand color, used in primary buttons and highlights.
  • brandSecondaryColor
    Typically used in secondary buttons and accent elements. Choose a color that complements your primary brand tone.
  • darkTextColor
    Used for primary text (titles, subtitles, body content).
    Given that the SDK background is white, this value should always be a dark tone to ensure proper contrast. Avoid using light or low-contrast colors here.

Accessibility and Contrast

  • The default theme already meets WCAG 2.2 contrast standards for accessibility.
  • When modifying colors—especially darkTextColor, brandPrimaryColor, or background tones—it is the integrator’s responsibility to validate the contrast ratios.

Theme Level

The first level of configuration, known as the theme level, allows you to personalize the interface by adjusting just a few key parameters related to colors and fonts.

Using the styles.theme configuration, you can define the following core design tokens:

  • darkTextColor – Main color used for high-contrast text.
  • brandPrimaryColor – Main brand color used across the UI for primary actions and highlights.
  • brandSecondaryColor – Secondary brand color used for accenting and complementary elements.
  • font.familyPrimary – The primary typeface used throughout the interface.
  • font.familySecondary – A secondary typeface for alternative or stylistic uses.

IMPORTANT

  • Any changes made to these values will have a global impact on the appearance of components across the system.
  • It's important to validate your customizations carefully to ensure they maintain a consistent and accessible user experience.

This approach provides a fast and efficient way to align the interface with your brand identity without needing to adjust individual components.

Applies to

  • darkTextColor: Titles, subtitles, feedback messages in capture, icons.
  • brandPrimaryColor: Loading Spinner, background color of primary buttons, color text of secondary buttons, close button color.
  • brandSecondaryColor: background color of secondary buttons.
  • font.familyPrimary: Titles.
  • font.familySecondary: Subtitles, buttons and feedback messages in capture.

Here is an example in desktop of how screens in the flow would visually change by updating the parameters mentioned above.

"styles": {
    "theme": {
        "darkTextColor": "#242323",
        "brandPrimaryColor": "#A50050",
        "brandSecondaryColor": "#E5D0DA",
        "font": { 
            "familyPrimary": "Arial", 
            "familySecondary": "Open Sans" 
        }
    }
}

Desktop

Default After Customization
Loading DesktopLoadingDefault DesktopLoadingModified
Instructions Passive DesktopInstructionsSelfieDefault DesktopInstructionsSelfieModified
Instructions Active DesktopInstructionsHeadDefault DesktopInstructionsHeadModified
Loading Capture DesktopLoadingCaptureDefault DesktopLoadingCaptureModified
Capture Passive DesktopCaptureSelfieDefault DesktopCaptureSelfieModified
Capture Passive (help modal) DesktopCaptureSelfieDefault DesktopCaptureSelfieModified
Capture Active DesktopCaptureHeadDefault DesktopCaptureHeadModified
Capture Active (help modal) DesktopCaptureHeadDefault DesktopCaptureHeadModified
Review (only Passive flow) DesktopReviewDefault DesktopReviewModified
Exit confirmation modal (apply all screens) DesktopExitConfirmationModalDefault DesktopExitConfirmationModalModified
Error Permissions DesktopErrorDefault1 DesktopErrorModified1
Error Verification DesktopErrorDefault2 DesktopErrorModified2
Error No Movement DesktopErrorDefault3 DesktopErrorModified3
Focus Error DesktopErrorDefault3 DesktopErrorModified3

Mobile

Default After Customization
Loading themeLoadingDefault themeLoadingModified
Instructions Passive themeInstructionsSelfieDefault themeInstructionsSelfieModified
Instructions Active themeInstructionsHeadDefault themeInstructionsHeadModified
Loading Capture themeLoadingCaptureDefault themeLoadingCaptureModified
Capture Passive themeCaptureSelfieDefault themeCaptureSelfieModified
Capture Passive (help modal) themeCaptureSelfieDefault themeCaptureSelfieModified
Capture Active themeCaptureHeadDefault themeCaptureHeadModified
Capture Active (help modal) themeCaptureHeadDefault themeCaptureHeadModified
Review (only Passive flow) themeReviewDefault themeReviewModified
Exit confirmation modal (apply all screens) mobileExitConfirmationModalDefault mobileExitConfirmationModalModified
Error Permissions themeErrorDefault1 themeErrorModified1
Error Verification themeErrorDefault2 themeErrorModified2
Error No Movement themeErrorDefault3 themeErrorModified3
Focus Error mobilepErrorDefault3 mobileErrorModified3

Component Level

While the custom level offers a fast way to globally apply brand identity, sometimes finer control is needed.

That’s where the component-level customization comes in.

This second level allows you to override the styles of specific components in the interface.

Using the styles.components configuration, you can target individual UI elements—such as buttons, icon buttons, spinner, or header adjust their appearance more precisely.

You can define properties like colors, borders, icons, and more for each component.

This provides the flexibility to go beyond global themes and fine-tune the user experience in specific screens or use cases, always maintaining visual coherence with the broader design system.

IMPORTANT

  • Keep in mind that when you modify a component, the changes will apply across all views where that component is used.
  • For example, if you change the colors of the primary button, the update will reflect in every view where that button appears. It’s not possible to modify a single instance — all buttons using that parameter will be affected.

In the following section, you'll find a list of customizable components, along with the available parameters and the screens where they are applied.

The Header is a key visual and structural element within the interface.
It appears at the top of the screen and contains the logo. The logo can be customised using the media.logo and media.logoSmall options in the configuration.

Desktop Mobile
HeaderDesktop HeaderMobile

As explained in the configuration section, it is possible to remove the logo from the interface by adjusting the appropriate parameter.

When the logo is disabled, the entire header component will be hidden from the view.

If your integration does not require a logo or you prefer a more minimal interface, disabling the header can help simplify the visual layout.

Applies to

Desktop Mobile
Loading DesktopLoadingDefault MobileLoadingDefault
Instructions Passive DesktopInstructionsSelfieDefault MobileInstructionsSelfieDefault
Instructions Active DesktopInstructionsHeadDefault MobileInstructionsHeadDefault
Capture Passive DesktopCaptureSelfieDefault MobileCaptureSelfieDefault
Capture Active DesktopCaptureHeadDefault MobileCaptureHeadDefault
Review (only Passive flow) DesktopReviewDefault MobileReviewDefault
Error Permissions DesktopErrorDefault MobileErrorDefault
Error Verification DesktopErrorDefault2 MobileErrorDefault2
Error Mo Movement DesktopErrorDefault3 MobileErrorDefault3
Focus Error DesktopErrorDefault3 MobileErrorModified3
Parameter Description
borderColor Border color
borderWidth Border width
backgroundColor Background color

Example of header modified:

"styles": {
    "components": {
        "header": {
            "backgroundColor": "#E5D0DA",
            "borderColor": "#A50050",
            "borderWidth": "15px"
        }
    }
}

HeaderModified

Button

General

Applies to

All buttons

The button component allows for detailed visual customization to better match your brand identity and UI style. You can configure the following aspects individually:

  • Background color
  • Border color
  • Border width
  • Text (label) color
  • Border radius

Within the product, the following button types are supported:

  • Primary button – used for main actions
  • Secondary button – used for complementary or navigation actions
  • Tertiary button – used for cancel or exit actions
  • Icon button – used for actions represented by an icon (e.g., closing, skipping, etc.)

Each type has its own set of customizable properties, allowing you to adjust the appearance of each variant independently. However, the borderRadius property is shared across all button types. This means that by changing it once, the same corner rounding will apply to primary, secondary, and icon buttons. For example, if your product design uses a flatter style, setting the borderRadius to 0px will make all buttons appear more rectangular. On the other hand, increasing this value will result in a more rounded appearance across the interface. This flexibility lets you fine-tune the visual feel of the interface while maintaining consistency across all interactive elements.

Keep in mind that when you modify the button, the changes will apply across all views where it is used

Primary Button

This is the button used for main actions, related to starting or continuing the process.

PrimaryButtonDefault

Applies to

Desktop Mobile
Instructions Passive DesktopInstructionsSelfieDefault MobileInstructionsSelfieDefault
Instructions Active DesktopInstructionsHeadDefault MobileInstructionsHeadDefault
Review (only Passive flow) DesktopReviewDefault MobileReviewDefault
Error Verification DesktopErrorDefault2 MobileErrorDefault2
Error No movement DesktopErrorDefault3 MobileErrorDefault3
Focus Error DesktopErrorDefault3 MobileErrorModified3

These properties allow you to fine-tune its appearance and behavior to better align with your brand and user experience needs.

Below is a comprehensive list of all the properties that can be customized for the button component.

Parameter Description
backgroundColorPrimary Background color
labelColorPrimary Label color (text)
borderColorPrimary Border color
borderWidthPrimary Border width

Example of primary button modified:

"styles": {
    "components": {
        "button": {
            "backgroundColorPrimary": "#A50050",
            "labelColorPrimary": "#FFFFFF",
            "borderColorPrimary": "#E5D0DA",
            "borderWidthPrimary": "5px",
            "buttonRadius": "15px"
        }
    }
}

PrimaryButtonModified

Secondary Button

This button is for secondary actions, such as repeating the previous step.

SecondaryButtonDefault

Applies to

Desktop Mobile
Review (only Passive flow) DesktopReviewDefault MobileReviewDefault

These properties allow you to fine-tune its appearance and behavior to better align with your brand and user experience needs.

Below is a comprehensive list of all the properties that can be customized for the button component.

Parameter Description
backgroundColorSecondary Background color
labelColorSecondary Label color (text)
borderColorSecondary Border color
borderWidthSecondary Border width

Example of secondary button modified:

"styles": {
    "components": {
        "button": {
            "backgroundColorSecondary": "#E5D0DA",
            "labelColorSecondary": "#000000",
            "borderColorSecondary": "#A50050",
            "borderWidthSecondary": "5px",
            "buttonRadius": "15px"
        }
    }
}

SecondaryButtonModified

Tertiary Button

This button is for exit actions, like canceling the process.

Tertiary Tertiary Inverse
TertiaryButtonDefault TertiaryInverseButtonDefault

Applies to

Desktop Mobile
Instructions Passive DesktopInstructionsSelfieDefault MobileInstructionsSelfieDefault
Instructions Active DesktopInstructionsHeadDefault MobileInstructionsHeadDefault
Capture Passive (help button) DesktopCaptureSelfieDefault MobileCaptureSelfieDefault
Capture Active (help button) DesktopCaptureHeadDefault MobileCaptureHeadDefault
Exit confirmation modal (apply all screens) mobileExitConfirmationModalDefault mobileInstructionsConfirmationModalModified

These properties allow you to fine-tune its appearance and behavior to better align with your brand and user experience needs.

Below is a comprehensive list of all the properties that can be customized for the button component.

Parameter Description
backgroundColorTertiary Background color
labelColorTertiary Label color (text)
borderColorTertiary Border color
borderWidthTertiary Border width
backgroundColorTertiaryInverse Background color for specific situations
labelColorTertiarInverse Label color (text) for specific situations
borderColorTertiaryInverse Border color for specific situations
borderWidthTertiaryInverse Border width for specific situations

Please note that both the default tertiary style and its inverse are applied to the capture help button. - When there is no detection, the background is captured by the camera and therefore requires certain styles to prevent the text from being unreadable. In this case, the inverse mode is applied. - When there is detection, the background turns white and the text should be dark. In this case, the default mode is used.

Tertiary help button default (with detection) Tertiary help button inverse (without detection)
CaptureHelpButtonTertiaryDefault CaptureHelpButtonTertiaryInverse

Example of tertiary button modified:

"styles": {
    "button": {
        "backgroundColorTertiary": "#F3F6FB",
        "iconColorTertiary": "#6D4C41",
        "labelColorTertiary": "#6D4C41",
        "borderColorTertiary": "#BCAAA4",
        "borderWidthTertiary": "5px",
        "backgroundColorTertiaryInverse": "#F7EAF2",
        "iconColorTertiaryInverse": "#C2185B",
        "labelColorTertiaryInverse": "#C2185B",
        "borderColorTertiaryInverse": "#F8BBD0",
        "borderWidthTertiaryInverse": "5px",
        "buttonRadius": "15px"
    }
}
Tertiary Tertiary Inverse
TertiaryButtonModified TertiaryInverseButtonModified
Interactive states

Applies to

Desktop Mobile
Instructions Passive DesktopInstructionsSelfieDefault MobileInstructionsSelfieDefault
Instructions Active DesktopInstructionsHeadDefault MobileInstructionsHeadDefault
Review (only Passive flow) DesktopReviewDefault MobileReviewDefault
Error Verification DesktopErrorDefault2 MobileErrorDefault2
Error No movement DesktopErrorDefault3 MobileErrorDefault3

The SDK allows you to customize the interactive states of buttons—such as hover and pressed—through a set of general-purpose color overlay parameters:

Parameter Description
colorDefaultHover Hover color
colorDefaultPressed Pressed color
colorInverseHover Hover color inverse
colorInversePressed Pressed color inverse

These parameters apply a semi-transparent color layer over the button's base style during interaction. This is useful for creating subtle feedback without redefining the full component style.

Default behavior

Primary buttons use a light semi-transparent overlay on top of their background.

Secondary and icon buttons use a dark overlay to create a stronger contrast on interaction.

This approach offers a quick and effective way to visually distinguish interactive states with minimal configuration effort.

When to use these parameters

Use the colorDefault and colorInverse values when:

  • You want to maintain the button’s base appearance.
  • You just need a consistent visual cue (e.g., a light/dark tint on hover/pressed).
  • You prefer not to modify background, text, or borders individually.
When to use specific parameters instead

If you want full control over the button’s appearance during interactive states (e.g., change text color, background color, borders, etc.), you should use the dedicated interaction parameters available for each button type:

  • backgroundColorPrimaryHover, labelColorPrimaryPressed, etc.
  • These allow granular changes to every visual aspect of the button.

This distinction gives you the flexibility to:

  • Apply a fast, unified effect across buttons using overlay colors, or
  • Create custom interaction styles on a per-component basis when needed.

Below is a comprehensive list of all the properties that can be customized for the button component.

Parameter Description
backgroundColorPrimaryHover Background color when hovered
backgroundColorPrimaryPressed Background color when pressed
labelColorPrimaryHover Label color (text) when hovered
labelColorPrimaryPressed Label color (text) when pressed
borderColorPrimaryHover Border color when hovered
borderColorPrimaryPressed Border color when pressed
borderWidthPrimaryHover Border width when hovered
borderWidthPrimaryPressed Border width when pressed
backgroundColorSecondaryHover Background color when hovered
backgroundColorSecondaryPressed Background color when pressed
labelColorSecondaryHover Label color (text) when hovered
labelColorSecondaryPressed Label color (text) when pressed
borderColorSecondaryHover Border color when hovered
borderColorSecondaryPressed Border color when pressed
borderWidthSecondaryHover Border width when hovered
borderWidthSecondaryPressed Border width when pressed
backgroundColorTertiaryHover Background color when hovered
backgroundColorTertiaryPressed Background color when pressed
labelColorTertiaryHover Label color (text) when hovered
labelColorTertiaryPressed Label color (text) when pressed
borderColorTertiaryHover Border color when hovered
borderColorTertiaryPressed Border color when pressed
borderWidthTertiaryHover Border width when hovered
borderWidthTertiaryPressed Border width when pressed

Example of the interactive states of the button modified:

"styles": {
    "components": {
        "button": {
            "colorDefaultHover":"#e69da9",
            "colorDefaultPressed":"#a8641c",
            "colorInverseHover":"#b55ef0",
            "colorInversePressed":"#b1f6e3",
            "interactiveStates": {
                "backgroundColorPrimaryHover": "#F0E0F0",
                "backgroundColorPrimaryPressed": "#D0B0D0",
                "labelColorPrimaryHover": "#222222",
                "labelColorPrimaryPressed": "#111111",
                "borderColorPrimaryHover": "#A50050",
                "borderColorPrimaryPressed": "#800030",
                "borderWidthPrimaryHover": "3px",
                "borderWidthPrimaryPressed": "4px",
                "backgroundColorSecondaryHover": "#E0F0E0",
                "backgroundColorSecondaryPressed": "#B0D0B0",
                "labelColorSecondaryHover": "#222222",
                "labelColorSecondaryPressed": "#111111",
                "borderColorSecondaryHover": "#0050A5",
                "borderColorSecondaryPressed": "#003080",
                "borderWidthSecondaryHover": "3px",
                "borderWidthSecondaryPressed": "4px",
                "backgroundColorTertiaryHover": "#F8BBD0",
                "backgroundColorTertiaryPressed": "#C2185B",
                "iconColorTertiaryHover": "#C2185B",
                "iconColorTertiaryPressed": "#F8BBD0",
                "labelColorTertiaryHover": "#C2185B",
                "labelColorTertiaryPressed": "#F8BBD0",
                "borderColorTertiaryHover": "#F8BBD0",
                "borderColorTertiaryPressed": "#C2185B",
                "borderWidthTertiaryHover": "2px",
                "borderWidthTertiaryPressed": "4px",
                "backgroundColorTertiaryInverseHover": "#E3F2FD",
                "backgroundColorTertiaryInversePressed": "#90CAF9",
                "iconColorTertiaryInverseHover": "#1976D2",
                "iconColorTertiaryInversePressed": "#E3F2FD",
                "labelColorTertiaryInverseHover": "#1976D2",
                "labelColorTertiaryInversePressed": "#E3F2FD",
                "borderColorTertiaryInverseHover": "#E3F2FD",
                "borderColorTertiaryInversePressed": "#1976D2",
                "borderWidthTertiaryInverseHover": "2px",
                "borderWidthTertiaryInversePressed": "4px"
            }
        }
    }
}

Icon button

The icon button component is designed for actions that are represented primarily by an icon rather than text. It is commonly used for secondary or contextual actions.

Icon buttons help keep the interface clean and intuitive, especially in places where space is limited or where a visual symbol is more effective than a label.

Close button

CloseButtonDefault

Applies to

Desktop Mobile
Instructions Passive DesktopInstructionsSelfieDefault MobileInstructionsSelfieDefault
Instructions Active DesktopInstructionsHeadDefault MobileInstructionsHeadDefault
Capture Passive DesktopCaptureSelfieDefault MobileCaptureSelfieDefault
Capture Active DesktopCaptureHeadDefault MobileCaptureHeadDefault
Review (only Passive flow) DesktopReviewDefault MobileReviewDefault
Error Permissions DesktopErrorDefault1 MobileErrorDefault1

You can fully customize the appearance of icon buttons to match your brand and user experience requirements.

This includes adjusting the icon color, background, border, and interactive states such as hover and pressed.

By fine-tuning these properties, you ensure that icon buttons remain visually consistent and accessible throughout your application.

Keep in mind that when you modify the icon button, the changes will apply across all views where it is used, regardless of whether the icon changes.

Below is a comprehensive list of all the properties that can be customized for the icon button component.

Parameter Description
backgroundColorTertiary Background color
iconColorTertiary Icon color
borderColorTertiary Border color
borderWidthTertiary Border width
borderRadius Border radius
colorHover Color when hovered
colorPressed Color when pressed

Example of icon button modified:

"styles": {
    "components": {
        "iconButton": {
            "backgroundColorTertiary": "#E5D0DA",
            "iconColorTertiary": "#A50050",
            "borderColorTertiary": "#A50050",
            "borderWidthTertiary": "5px",
            "borderRadius": "8px",
            "colorHover": "#F0E0F0",
            "colorPressed": "#D0B0D0"
        }
    }
}

IconButtonModified

Interactive states

Interactive states define how the button component visually responds to user interactions such as hovering or pressing.

These properties allow you to customize the appearance of the button in different states, ensuring a consistent and engaging user experience that aligns with your brand guidelines.

You can adjust colors, borders, and other visual aspects for each interaction state to provide clear feedback and improve usability.

Applies to

Desktop Mobile
Instructions Passive DesktopInstructionsSelfieDefault MobileInstructionsSelfieDefault
Instructions Active DesktopInstructionsHeadDefault MobileInstructionsHeadDefault
Capture Passive DesktopCaptureSelfieDefault MobileCaptureSelfieDefault
Capture Active DesktopCaptureHeadDefault MobileCaptureHeadDefault
Review (only Passive flow) DesktopReviewDefault MobileReviewDefault
Error Permissions DesktopErrorDefault1 MobileErrorDefault1

Below is a comprehensive list of all the properties that can be customized for the icon button component.

Parameter Description
backgroundColorTertiaryHover Background color when hovered
backgroundColorTertiaryPressed Background color when pressed
iconColorTertiaryHover Icon color when hovered
iconColorTertiaryPressed Icon color when pressed
borderColorTertiaryHover Border color when hovered
borderColorTertiaryHover Border color when pressed
borderWidthTertiaryHover Border width when hovered
borderWidthTertiaryPressed Border width when pressed

Example of interactive states of the icon button modified:

"styles": {
    "components": {
        "iconButton": {
            "interactiveStates": {
                "backgroundColorTertiaryHover": "#F5F5F5",
                "backgroundColorTertiaryPressed": "#E5D0DA",
                "iconColorTertiaryHover": "#A50050",
                "iconColorTertiaryPressed": "#E5D0DA",
                "borderColorTertiaryHover": "#E5D0DA",
                "borderColorTertiaryPressed": "#A50050",
                "borderWidthTertiaryHover": "2px",
                "borderWidthTertiaryPressed": "4px"
            }
        }
    }
}

Spinner

The spinner component provides a visual indication that a process is ongoing, such as loading data or waiting for a response. It helps reassure users that the system is working and encourages them to wait until the current operation is complete.

SpinnerDefault

Applies to

Desktop Mobile
Loading DesktopLoadingDefault DesktopLoadingCaptureDefault
Capture DesktopLoadingCaptureDefault DesktopLoadingCaptureDefault

You can customize the appearance of the spinner to match your brand's style.

Below is a comprehensive list of all the properties that can be customized for the spinner component.

Parameter Description
containerColor Container color
progressColor Progress color

Example of the spinner modified:

"styles": {
    "components": {
        "spinner": {
            "containerColor": "#E5D0DA",
            "progressColor": "#A50050"
        }
    }
}

SpinnerModified

The modal component is a popup window that appears on top of the main application content. It is used to display important information or to request user action before continuing.

Help modal

In this case, the modal component provides guidance on how to complete the capture process. For each capture status, it displays the corresponding instructions needed to continue the flow. To learn more about how to enable or disable the help button, go to helpModalShow in the configuration section.

HelpModalDefault

Applies to

Desktop Mobile
Capture Passive DesktopCaptureSelfieHelpModalDefault MobileCaptureSelfieHelpModalDefault
Capture Active DesktopCaptureHeadDefault MobileCaptureHeadHelpModalDefault

Error Modal

In this case, the modal provides information about errors that occurred during the capture process.

Applies to

Desktop Mobile
Focus Error DesktopErrorDefault3 MobileErrorModified3
Error Verification DesktopErrorDefault2 MobileErrorDefault2
Error No movement DesktopErrorDefault3 MobileErrorDefault3

You can customize the appearance of the help modal to match your brand's style.

Below is a comprehensive list of all the properties that can be customized for the help modal component.

Parameter Description
backgroundColor Background color
borderColor Border color
borderRadius Border radius
borderWidth Border width
descriptionColor Description color
titleColor Title color

Example of the help modal modified:

"styles": {
    "components": {
        "modal": {
            "backgroundColor": "#E5D0DA",
            "borderColor": "#A50050",
            "borderRadius": "2px",
            "borderWidth": "4px",
            "descriptionColor": "#A50050",
            "titleColor": "#A50050"
        }
    }
}

HelpModalModified

Exit confirmation modal

In this case, the modal acts as a confirmation dialog that asks the user if they really want to leave the process, preventing accidental exits.

ExitConfirmationModalDefault |

Applies to

Desktop Mobile
All screens DesktopExitConfirmationModalDefault MobileExitConfirmationModalDefault

You can customize the appearance of the exit confirmation modal to match your brand's style.

Below is a comprehensive list of all the properties that can be customized for the exit confirmation modal component.

Parameter Description
backgroundColor Background color
borderColor Border color
borderRadius Border radius
borderWidth Border width
descriptionColor Description color
titleColor Title color

Example of the exit confirmation modal modified:

"styles": {
    "components": {
        "modal": {
            "backgroundColor": "#E5D0DA",
            "borderColor": "#A50050",
            "borderRadius": "2px",
            "borderWidth": "4px",
            "descriptionColor": "#A50050",
            "titleColor": "#A50050"
        }
    }
}

ExitConfirmationModalModified