ThemeConfiguration

A JSON string that customizes the visual appearance of the SDK

Overview

Theming is configured via a JSON string passed as the appearance attribute of the ReadyRemitConfiguration object that is passed to ReadyRemit.startSdk() or ReadyRemit.openTransferDetailsScreen(). All properties are optional — omitted values fall back to defaults.

A WYSIWYG Configuration Editor is available for download to visually customize and generate the JSON:

ConfigurationEditor.html


JSON Schema

The theme configuration JSON has two top-level sections: foundations and components.

{
  "foundations": {
    "colorPrimary": { "light": "#hex", "dark": "#hex" },
    "colorTextPrimary": { "light": "#hex", "dark": "#hex" },
    "colorTextSecondary": { "light": "#hex", "dark": "#hex" },
    "colorTextLink": { "light": "#hex", "dark": "#hex" },
    "colorForeground": { "light": "#hex", "dark": "#hex" },
    "colorBackground": { "light": "#hex", "dark": "#hex" },
    "colorDivider": { "light": "#hex", "dark": "#hex" },
    "colorSuccess": { "light": "#hex", "dark": "#hex" },
    "colorWarning": { "light": "#hex", "dark": "#hex" },
    "colorDanger": { "light": "#hex", "dark": "#hex" },
    "fontFamily": "roboto"
  },
  "components": {
    "button": { ... },
    "inputFields": { ... },
    "loading": { ... },
    "backLink": { ... },
    "content": { ... }
  }
}

Foundations

Foundation tokens define the core visual identity of the SDK.

Colors

Each color token accepts an object with light and dark hex values.

TokenDescriptionLight DefaultDark Default
colorPrimaryDefines the core brand color used throughout the SDK #42CB91 #42CB91
colorPrimaryTintA lighter variant of the primary brand color, used for subtle accents and supporting UI elementsCalculatedCalculated
colorTextPrimaryPrimary text color used for main content and high-emphasis text #001C2A #E3E3E3
colorTextSecondarySecondary text color used for supporting or lower-emphasis text #5E636B #B0B0B0
colorTextLinkColor applied to hyperlink text displayed within body copy #006F94 #4E83A6
colorForegroundSurface color used for containers and section backgrounds #FFFFFF #1F1F1F
colorBackgroundBase background color for the overall interface #F4F5F6 #111111
colorDividerColor used for divider lines that separate content sections #E2E2E2 #313131
colorSuccessColor used to indicate success states or positive outcomes #008761 #008761
colorWarningColor used to represent warning or cautionary states #FEF8DB #6C560D
colorDangerColor applied to error states or destructive actions #AA220F #ED7083
colorDangerTintA lighter variant of the danger color, used for subtle error-related accentsCalculatedCalculated

Note: colorPrimaryTint and colorDangerTint are calculated automatically by the SDK and are not included in the theme configuration JSON.


Font Family

PropertyTypeDefaultDescription
fontFamilyString"roboto"The font family used throughout the SDK

Values:

ValueDescription
"roboto"Roboto (default on Android)
"inter"Inter
"source sans 3"Source Sans 3

Components

Component tokens control the appearance of specific UI elements.

Button

"button": {
  "buttonPrimaryBackgroundColor": { "light": "#hex", "dark": "#hex" },
  "buttonPrimaryTextColor": { "light": "#hex", "dark": "#hex" },
  "buttonSecondaryBorderColor": { "light": "#hex", "dark": "#hex" },
  "buttonSecondaryTextColor": { "light": "#hex", "dark": "#hex" },
  "buttonTextCase": "none",
  "buttonPrimaryTextShadow": false,
  "buttonRadius": 100
}
PropertyTypeDefaultDescription
buttonPrimaryBackgroundColorColor #00766C / #20948ABackground color for primary buttons
buttonPrimaryTextColorColor #FFFFFF / #FFFFFFText color displayed on primary buttons
buttonSecondaryBorderColorColor #006F94 / #4E83A6Border color applied to secondary button styles
buttonSecondaryTextColorColor #006F94 / #4E83A6Text color displayed on secondary buttons
buttonTextCaseString"none"Defines the text case style applied to all button labels (Primary, Secondary, Tertiary, and Ghost). Values: "none", "capitalize", "uppercase", "lowercase"
buttonPrimaryTextShadowBooleanfalseEnables or disables a text shadow on primary button labels for WCAG AA contrast compliance
buttonRadiusDouble100Defines the corner radius applied to all button types (Primary, Secondary, Tertiary, and Ghost)

Input Fields

"inputFields": {
  "inputBorderColor": { "light": "#hex", "dark": "#hex" },
  "inputBackgroundColor": { "light": "#hex", "dark": "#hex" },
  "inputRadius": 8
}
PropertyTypeDefaultDescription
inputBorderColorColor #858585 / #505050Border color applied to all input field types, including text fields, dropdowns, and search fields
inputBackgroundColorColor #F8F8F8 / #0C0C0CBackground color applied to all input field types, including text fields, dropdowns, and search fields
inputRadiusDouble8Corner radius applied to all input field types, including text fields, dropdowns, and search fields

Loading

"loading": {
  "loadingBackgroundColor": { "light": "#hex", "dark": "#hex" },
  "loadingTextColor": { "light": "#hex", "dark": "#hex" },
  "loadingSpinnerColor": { "light": "#hex", "dark": "#hex" }
}
PropertyTypeDefaultDescription
loadingBackgroundColorColor #004C5B / #03282FBackground color displayed on loading screens
loadingTextColorColor #FFFFFF / #FFFFFFText color used on loading screens
loadingSpinnerColorColor #42CB91 / #42CB91Color of the loading spinner displayed on loading screens

Back Link

"backLink": {
  "backIconType": "chevron",
  "backTextCase": "none"
}
PropertyTypeDefaultDescription
backIconTypeString"chevron"Determines the style of the back arrow icon displayed in the navigation's back link. Values: "arrow", "chevron"
backTextCaseString"none"Controls the text case for back link labels. Values: "none", "capitalize", "uppercase", "lowercase"

Content

"content": {
  "contentHomepageHeadline": "International and domestic transfers",
  "contentHomepageDescription": "Send money to friends and family in other countries"
}
PropertyTypeDefaultDescription
contentHomepageHeadlineString"International and domestic transfers"Sets the headline text displayed on the SDK homepage
contentHomepageDescriptionString"Send money to friends and family in other countries"Sets the supporting body text displayed on the SDK homepage

Headline values:

Value
"Global transfer"
"International and domestic transfers"
"International transfers"
"Send money internationally"

Description values:

Value
"Send funds to your recipients with convenience and flexibility."
"Send money to friends and family in other countries"

Default Configuration

{
  "foundations": {
    "colorPrimary": {
      "light": "#42CB91",
      "dark": "#42CB91"
    },
    "colorTextPrimary": {
      "light": "#001C2A",
      "dark": "#E3E3E3"
    },
    "colorTextSecondary": {
      "light": "#5E636B",
      "dark": "#B0B0B0"
    },
    "colorTextLink": {
      "light": "#006F94",
      "dark": "#4E83A6"
    },
    "colorForeground": {
      "light": "#FFFFFF",
      "dark": "#1F1F1F"
    },
    "colorBackground": {
      "light": "#F4F5F6",
      "dark": "#111111"
    },
    "colorDivider": {
      "light": "#E2E2E2",
      "dark": "#313131"
    },
    "colorSuccess": {
      "light": "#008761",
      "dark": "#008761"
    },
    "colorWarning": {
      "light": "#FEF8DB",
      "dark": "#6C560D"
    },
    "colorDanger": {
      "light": "#AA220F",
      "dark": "#ED7083"
    },
    "fontFamily": "roboto"
  },
  "components": {
    "button": {
      "buttonPrimaryBackgroundColor": {
        "light": "#00766C",
        "dark": "#20948A"
      },
      "buttonPrimaryTextColor": {
        "light": "#FFFFFF",
        "dark": "#FFFFFF"
      },
      "buttonSecondaryBorderColor": {
        "light": "#006F94",
        "dark": "#4E83A6"
      },
      "buttonSecondaryTextColor": {
        "light": "#006F94",
        "dark": "#4E83A6"
      },
      "buttonTextCase": "none",
      "buttonPrimaryTextShadow": false,
      "buttonRadius": 100
    },
    "inputFields": {
      "inputBorderColor": {
        "light": "#858585",
        "dark": "#505050"
      },
      "inputBackgroundColor": {
        "light": "#F8F8F8",
        "dark": "#0C0C0C"
      },
      "inputRadius": 8
    },
    "loading": {
      "loadingBackgroundColor": {
        "light": "#004C5B",
        "dark": "#03282F"
      },
      "loadingTextColor": {
        "light": "#FFFFFF",
        "dark": "#FFFFFF"
      },
      "loadingSpinnerColor": {
        "light": "#42CB91",
        "dark": "#42CB91"
      }
    },
    "backLink": {
      "backIconType": "chevron",
      "backTextCase": "none"
    },
    "content": {
      "contentHomepageHeadline": "International and domestic transfers",
      "contentHomepageDescription": "Send money to friends and family in other countries"
    }
  }
}

Sample Usages

val themeConfiguration = """
{
  "foundations": {
    "colorPrimary": { "light": "#FF5733", "dark": "#C70039" }
  }
}
""".trimIndent()

val sdkConfiguration = ReadyRemitConfiguration(
    appearance = themeConfiguration,
    ...
    ...
)

ReadyRemit.startSdk(
    activity = this@MainActivity,
    configuration = sdkConfiguration
)
val themeConfiguration = """
{
  "foundations": {
    "colorPrimary": { "light": "#42CB91", "dark": "#42CB91" },
    "colorBackground": { "light": "#F4F5F6", "dark": "#111111" },
    "fontFamily": "inter"
  },
  "components": {
    "button": {
      "buttonPrimaryBackgroundColor": { "light": "#00766C", "dark": "#20948A" },
      "buttonRadius": 8,
      "buttonTextCase": "uppercase"
    },
    "loading": {
      "loadingBackgroundColor": { "light": "#004C5B", "dark": "#03282F" },
      "loadingSpinnerColor": { "light": "#42CB91", "dark": "#42CB91" }
    },
    "content": {
      "contentHomepageHeadline": "Send money internationally",
      "contentHomepageDescription": "Send funds to your recipients with convenience and flexibility."
    }
  }
}
""".trimIndent()

val sdkConfiguration = ReadyRemitConfiguration(
    appearance = themeConfiguration,
    ...
    ...
)

ReadyRemit.startSdk(
    activity = this@MainActivity,
    configuration = sdkConfiguration
)