App Drop-in UI Customization

Integrations guide

Colors

Set the colors in the UI:

Colors

Colors

You can define colors as follows:

PropertyDescriptionLight mode
default
Dark mode
default
Color palette
primaryThe color for illustrations and elements that require focus, e.g. buttons and inputs.
This is the main color used in the app for e.g. animations, icons, primary button background, secondary button text, second option text primary button, scanner progress, table selectors, scanner checks, links.
# 0091FF# 7FB3FC
accentThe color for UI elements that offer clients a choice.# 00E062# 00E062
darkThe very dark color palette, mainly used for the default heading color.# 333333# FFFFFF
darkLightThe mid-dark color palette, mainly used for the default text color.# 585858# C3CDD8
darkLighterThe lightest-dark color palette, mainly used for the default alternative and less emphasis text color.# 878787# 3D5671
darkSoftThe soft dark color palette.# D6D6D6# 263444
lightThe light color palette, mainly used for the default backgroundColor.# FFFFFF# 172637
grayThe grey color palette.# B3B3B3# 607B93
OrcaScreen
backgroundColorThe default backgroundColor for the drop-in screen.lightlight
headerColorThe color for the screen header.darkdark
titleColorThe color for the screen title.darkdark
messageColorThe color for the screen message.darkLightdarkLight
dividerColorThe color for the dividers.darkLightdarkLight
tableCellsThe color inside table cells.
See OrcaCell 1 & 2.
OrcaCell 1
cellStyle1The cell style for the document type screen document option.
backgroundColorThe color for the background of cells.white# 263444
textColorThe color for text in cells.# 333333white
iconColorThe color for icons in cells.primaryprimary
borderColorThe color for the borders of cells.clearclear
dividerColorThe color for dividers between cells.clearclear
OrcaCell 2
cellStyle2The cell style for the documents to sign on the Document approval screen.
backgroundColorThe color for the background of cells.white# 263444
textColorThe color for the text in cells.primaryprimary
iconColorThe color for the icon of cells.primaryprimary
borderColorThe color for the borders of cells.black 10%white 10%
dividerColorThe color for dividers between cells.black 10%white 30%
OrcaCheckbox
tintColorThe primary checkbox color.primaryprimary
iconColorThe color for the checkmark icon.lightlight
Buttons
primary.
textColor
The primary button text color.lightlight
primary.
backgroundColor
The primary button background color.primaryprimary
primary.
borderColor
The primary button border color.black 10%black 10%
secondary.
textColor
The secondary button text color.primaryprimary
secondary.
backgroundColor
The secondary button background color.backgroundColorbackgroundColor
secondary.
borderColor
The secondary button border color.black 10%black 10%
backButtonColorThe Back button text color.primaryprimary
scannerPrimary.
textColor
The primary scanner button text color.lightlight
scannerPrimary.
backgroundColor
The primary scanner button background color.primaryprimary
scannerPrimary.
borderColor
The primary scanner button border color.black 10%black 10%
scannerSecondary.
textColor
The secondary scanner button text color used in the Scanner confirmation screen for the No button.primarywhite
scannerSecondary.
backgroundColor
The secondary scanner button background color used in the Scanner confirmation screen for the No button.whitedarkLighter
scannerSecondary.
borderColor
The secondary scanner button border color.black 10%black 10%
linkButtonColorThe color for links.primaryprimary
checkboxThe color for checboxes.
See OrcaCheckbox.
OrcaInputField
textColorThe color for input field text.darkdark
disabledTextColorThe color for input field text in disabled state.black 20%white 20%
placeholderColorThe color for input field placeholders.dark 60%dark 60%
titleColorThe color for input field titles at the top and next to the field border.darkLightdarkLight
statusColorThe color for hint messages below input fields.darkLighterdarkLighter
errorColorThe color for error messages below input fields.dangerdanger
backgroundColorThe background color for input fields.backgroundColorbackgroundColor
disabledBackgroundColorThe background color for input fields in disabled state.dark 10%white 40%
borderColorThe unfocused border color for input fields.graydarkLighter
disabledBorderColorThe color for input field borders in disabled state.# B3B3B3darkLighter
OrcaScanner
confirmationThe colors for elements on the Scanner confirmation screen.
See OrcaScannerConfirmation.
spinnerColorThe color for loading animations in selfie and liveness scanner screens.primaryprimary
progressColorThe color for progress indicators in the document scanner screen.primaryprimary
OrcaScannerConfirmation
textColorThe color for scanner confirmation text.whitewhite
backgroundColorThe background color for Scanner confirmation screens.# 333333# 172230
bulletListThe color for bullet lists.primaryprimary
OrcaHint
textColorThe color for hint text.darkdark
backgroundColorThe color for hint backgrounds.# F3F9FF# 3E586F
borderColorThe color for hint component borders.black 10%black 10%
OrcaBox
backgroundColorThe default background color for boxes.# F7F7F7# 121C28
borderColorThe border color for boxes.black 10%white 10%
titleColorThe title color for boxes.darkLightdarkLight
OrcaPopup
backgroundColorThe background color for popups.backgroundColor
titleColorThe title color for popups.dark
messageColorThe color for messages in popups.darkLight
OrcaGraphic
backgroundColorThe background color for introduction animations.# F3F3F3white 10%
primaryColorThe color for animations in introduction screens.primaryprimary


Android & iOS examples

Example code:

import com.fourthline.orca.core.flavor.OrcaColors
import com.fourthline.orca.core.flavor.OrcaColors.OrcaColor
import com.fourthline.orca.core.flavor.OrcaFlavor

val customFlavor = OrcaFlavor(
    colorsDark = OrcaColors.defaultDarkColors().apply {
      buttons.primary.backgroundColor = OrcaColor.FromRes(R.color.colorPrimary)
      popup.backgroundColor = OrcaColor.FromInt(0xEEEEEE)
    }
)

// Usage
import com.fourthline.orca.Orca
import com.fourthline.orca.[product].[Product]CustomizationConfig
import com.fourthline.orca.[product].[product]

val customizationConfig = [Product]CustomizationConfig(flavor = customFlavor)

Orca.[product](context)
  ...
  .customize(config = customizationConfig)
  ...
var flavor = OrcaFlavor()
  
var colorPalette = OrcaPalette()
colorPalette.primary = .black

flavor.colors = OrcaColors(colorPalette: colorPalette)

// Update the colors of the primary button
flavor.colors.buttons.primary.backgroundColor = .yellow
flavor.colors.buttons.primary.textColor = .black
flavor.colors.buttons.primary.borderColor = .lightGray

// Update the colors of the popup
flavor.colors.popup.backgroundColor = .blue
flavor.colors.popup.titleColor = .white
flavor.colors.popup.messageColor = .white

// Add to the Orca Kyc builder
let configuration = KycConfig(supportedCountries: localDataSource.supportedCountries)
let customization = KycCustomizationConfig(flavor: flavor)
Orca.kyc
.configure(with: configuration)
.customize(with: customization)
.present { result in
   switch result {
   case .success(let kycInfo):
     print("Finished Orca with kyc info: \(kycInfo)")
   case let .failure(kycError):
     print("Finished Orca with error: \(kycError)")
 }

iOS dark mode support

iOS 13 supports dark mode. You can optimize colors for dark mode:

Either programmatically:

init(dynamicProvider: @escaping (UITraitCollection) -> UIColor)

Or using iOS Assets:

  1. Create a new color set from Assets.
  2. In the inspector panel, change Appearance to Dark mode.
  3. You can set 2 colors.

If initializing the drop-in with dynamic colors, dark mode is automatically supported.


Plugin examples

Example configuration JSON:

{
  "fonts": Orca Fonts Json,
  "colors": Orca Colors Json,
  "localization": Orca Localization Json,
  "layouts": Orca Layouts Json
}

  • All colors are optional and if not set, the default is used.
  • Specify colors in hex format.
  • Start hex strings with the hash symbol followed by 6 digits: #FFFFFF
  • To add color transparency, change the hex code format from #RRGGBB to #AARRGGBB where alpha is AA: #800080FF is blue with alpha value set to 80.
  • You can only use 3-digit hex codes if the RR, GG, and BB values are the same for each component. Write #FF00CC as #F0C.

Color format

{
  "colorsLight": ColorConfiguration,
  "colorsDark": ColorConfiguration
}
  • colorsDark is optional.
  • iOS 13 and Android 11.0 support dark mode. To customize colors for dark mode, set values for colorsDark.

Color configuration

{
  "screen": {
    "backgroundColor": String,
    "headerColor": String,
    "titleColor": String,
    "messageColor": String,
    "dividerColor": String,
    "tableCells":{
      "cellStyle1":{
        "backgroundColor": String,
        "textColor": String,
        "iconColor": String,
        "borderColor": String,
        "dividerColor": String
      },
      "cellStyle2":{
        "backgroundColor": String,
        "textColor": String,
        "iconColor": String,
        "borderColor": String,
        "dividerColor": String
      }
    }
  },
  "buttons": {
    "primary": {
      "textColor": String,
      "backgroundColor": String,
      "borderColor": String
    },
    "secondary": {
      "textColor": String,
      "backgroundColor": String,
      "borderColor": String
    },
    "scannerPrimary": {
      "textColor": String,
      "backgroundColor": String,
      "borderColor": String
    },
    "scannerSecondary": {
      "textColor": String,
      "backgroundColor": String,
      "borderColor": String
    },
    "checkbox": {
      "tintColor": String,
      "iconColor": String
    },
    "backButtonColor": String,
    "linkButtonColor": String
  },
  "inputField": {
    "textColor": String,
    "placeholderColor": String,
    "titleColor": String,
    "statusColor": String,
    "errorColor": String,
    "backgroundColor": String,
    "disabledBorderColor": String,
    "disabledTextColor": String,
    "disabledBackgroundColor": String,
    "borderColor": String
  },
  "palette": {
    "dark": String,
    "gray": String,
    "light": String,
    "darkSoft": String,
    "darkLighter": String,
    "accent": String,
    "primary": String,
    "darkLight": String
  },
  "hint": {
    "textColor": String,
    "backgroundColor": String,
    "borderColor": String
  },
  "popup": {
    "titleColor": String,
    "messageColor": String,
    "backgroundColor": String
  },
  "scanner": {
    "spinnerColor": String,
    "progressColor": String,
    "confirmation": {
      "textColor": String
      "backgroundColor": String,
      "bulletListColor": String
    }
  },
  "graphic": {
    "primaryColor": String,
    "backgroundColor": String
  },
  "box": {
    "titleColor": String,
    "backgroundColor": String,
    "borderColor": String
  }
}

Example code:

var colors = `{
  "colorsLight": {
    "screen": {
      "headerColor": "#333333",
      "titleColor": "#333333",
      "messageColor": "#585858",
      "backgroundColor": "#FFFFFF",
      "dividerColor": "#000000",
      "tableCells":{
        "cellStyle1":{
            "backgroundColor":"#FFFFFF",
            "textColor":"#333333",
            "iconColor":"#04A1BD",
            "borderColor":"#FFFFFF",
            "dividerColor":"#FFFFFF"
          }
        }
    }
  }
}`

var config = `{
  "flowType": "defaultFlow",
  "configuration": {
    "flavor": {
      "colors": ${colors}
    }
  }
}`

Fourthline.startKyc(
    config,
    function(kycJson) {
      // Extract and process information from the result String received in JSON format
      var jsonResult = JSON.parse(kycJson);
    },
    function(error) {
      // Extract and process information from the error String received in JSON format
      var jsonError = JSON.parse(error);
    }
);
String colors = """
{
  "colorsLight": {
    "screen": {
      "headerColor": "#333333",
      "titleColor": "#333333",
      "messageColor": "#585858",
      "backgroundColor": "#FFFFFF",
      "dividerColor": "#000000",
      "tableCells":{
        "cellStyle1":{
            "backgroundColor":"#FFFFFF",
            "textColor":"#333333",
            "iconColor":"#04A1BD",
            "borderColor":"#FFFFFF",
            "dividerColor":"#FFFFFF"
          }
        }
    }
  }
}
""";

String config = """
{
  "flowType": "customFlow",
  "configuration": {
    "flowSteps": ["selfieFlow", "addressFlow"],
    "flavor": {
      "colors": $colors
    }
  }
}
""";

try {
  String result = await _fourthlinePlugin.startKyc(config) ?? "Could not start Kyc";
  // Extract and process information from the result String received in JSON format
  print('The success response is: $result');
} on PlatformException catch (e) {
  // Extract and process information from the error
  String error = e.toString();
};

// Instance variable defined in your Dart class.
final _fourthlinePlugin = Fourthline();
import { NativeModules } from 'react-native'
var colors = `{
  "colorsLight": {
    "screen": {
      "headerColor": "#333333",
      "titleColor": "#333333",
      "messageColor": "#585858",
      "backgroundColor": "#FFFFFF",
      "dividerColor": "#000000",
      "tableCells":{
        "cellStyle1":{
            "backgroundColor":"#FFFFFF",
            "textColor":"#333333",
            "iconColor":"#04A1BD",
            "borderColor":"#FFFFFF",
            "dividerColor":"#FFFFFF"
          }
        }
    }
  }
}`
var config = `{
  "flowType": "defaultFlow",
  "configuration": {
    "flavor": {
      "colors": ${colors}
    }
  }
}`;
NativeModules.Fourthline.startKyc(config)
    .then((kycJson) => {
        // Extract and process information from the result String received in JSON format
        var jsonResult = JSON.parse(kycJson);
    })
    .catch((error) => {
        // Extract and process information from the error String received in JSON format
        var jsonError = JSON.parse(error.message);
    });

Top of page