Skip to main content

Themes

Unit's UI components support multiple Themes. In order to create a new Theme, you would need to upload a JSON that contains the settings associated with that theme via an API. In response, you will get a URL. You will then specify that URL as you initialize any UI Component, under the theme attribute.

The best way to understand how to use the themes is to see them in action. Try out the Component Preview page in order to make a Component look and feel like your brand. Once you are happy with the result, you can copy the JSON settings from under the 'Appearance Config' tab in the preview page, and create the theme by uploading the JSON to the API.

After creating the theme, you can use the link from the response to apply the theme to UI components. Here's an example with an account component:

<unit-elements-account
account-id="12345"
customer-token="{{customerToken}}"
theme="https://ui.s.unit.sh/resources/1/themes/291ccb0e-9447-4010-98ef-0b9bf0fd04dc.json"
></unit-elements-account>

Customization Options​

The settings that make up a theme are divided into two main categories - global settings and component specific settings.

  • Global settings are meant to reflect your brand's design system - colors, fonts, basic component look and feel.
  • Component specific settings are meant to allow you to control UI Elements that are unique to a specific Component (e.g. the color of the font on a card image). On the component specific level, you may also provide overrides to any parameter specified in the global settings.
Note

Please reach out to Unit if you need additional customization options to support your brand.

Global Settings​

  • This object located on the root of the theme JSON object, but it can also be overridden on the component level.
NameTypeDescription
logoUrlstringURL to a logo image.
faviconUrlstringURL to a favicon image.
colorsobjectColor palette
typographyobjectTypography (text) preferences
buttonsobjectbuttons states preferences
anchorButtonobjectanchor button preferences
avatarobjectavatar preferences
cardIconobjectcard icon preferences
whiteLabelAppBoxobjectapplication box preferences
whiteLabelAppHeaderobjectapplication header preferences
admonitionobjectadmonition (alert) preferences
chipobjectchip preferences
boxobjectbox preferences
tabsobjecttab preferences
fieldsobjectform field preferences

Colors​

NameTypeDescription
backgroundstringWill be used as background color of the components, drop downs menus and inner flows.
primarystringWill be used for buttons, icons, highlight fields that are in focus, cover elements.
secondarystringThe secondary brand color is used for secondary buttons.
neutralstringWe will derive 6 neutral shades based on your main Neutral color. These shades will be used for texts, light background colors and disabled/inactive elements.
successstringSemantic. Will be used in messages, toasts, statuses and alerts.
warningstringSemantic. Will be used in messages, toasts, statuses and alerts.
errorstringSemantic. Will be used in messages, toasts, statuses and alerts.

Typography​

NameTypeDescription
commonobjectCommon typography settings (running texts).
titlesobjectTitles typography settings.

Common​

NameTypeDescription
fontFamilystringFont family for Elements. Note, the Components components will not fetch the font. Font should be available on the page from which the Components are used.
fontSizestringFont size for elements. Can be set to either relative or absolute units.
rootFontSizestringSets the base font size, similar to applying font-size on :root or the "html" element. Affects text scaling and all relative-based units within the component.

Titles​

NameTypeDescription
h2TitleThe main title used in the Components. Examples include the Card title, Activity table title etc.
h3TitleThe secondary title used in the Components. Examples include menus and empty states.
menuTitleTitleThe title used for mobile menus (card-menu, account-list menu, etc).
componentTitleTitleThe title applied to various components such as card and activity components.
bigNumberBigNumberThe title used for big number displays in components.
flowFlowThe titles used for a flow or series of steps in a component. (card-actions, payments flows, etc.)
responseResponseThe titles used for a response or message in components.
emptyStateEmptyStateThe titles displayed in empty states within component.
tableTableThe titles for tables used in components.
Title​
NameTypeDescription
fontWeight100 , 200 , 300 , 400 , 500 , 600 , 700 , 800 , 900 , 950 , "normal" , "bold" , "bolder" , "lighter"The thickness or boldness of the font.
colorstringThe color of the text in the title.
fontSizestringThe size of the font used in the title.
fontFamilystringThe specific font family for the title's text.
Big Number​
NameTypeDescription
fontWeight100 , 200 , 300 , 400 , 500 , 600 , 700 , 800 , 900 , 950 , "normal" , "bold" , "bolder" , "lighter"The thickness or boldness of the font.
colorstringThe color of the text in the big number display.
fontFamilystringThe specific font family for the big number text.
largeFontSizestringThe font size for larger big number displays.
extraLargeFontSizestringThe font size for extra-large big number displays.
Flow​
NameTypeDescription
titleTitleThe main title for the flow.
subtitleTitleThe secondary title for the flow.
Response​
NameTypeDescription
titleTitleThe title for the response.

Empty State​

NameTypeDescription
titleTitleThe title displayed in the empty state.

Table​

NameTypeDescription
headersTitleThe titles for the table headers.

Buttons​

NameTypeDescription
fontWeight100 , 200 , 300 , 400 , 500 , 600 , 700 , 800 , 900 , 950 , "normal" , "bold" , "bolder" , "lighter"Font weight for buttons. Omit to use the default.
primaryButtonStatesThe primary style of the button.
secondaryButtonStatesA secondary style option for the button.
subtleButtonStatesA subtle style option for the button.
outlineButtonStatesAn outlined style option for the button.
flatButtonStatesA flat style option for the button.

Example:

{
"global": {
"buttons": {
"fontWeight": 600
}
}
}
NameTypeDescription

Button States​

NameTypeDescription

Button Attributes​

NameTypeDescription

Border​

NameTypeDescription

Controls the appearance of action menus across components (for example, card actions, account actions, and selection menus).

NameTypeDescription
NameTypeDescription

Example:

{
"global": {
"menu": {
"actionItems": {
"fontWeight": 600
}
}
}
}

Anchor Button​

Controls the default color for anchor buttons (text-style link buttons) across components.

NameTypeDescription
defaultColorstringDefault color for anchor buttons. Accepted values: "primary", "neutral". Omit to use the default ("primary").

Example:

{
"global": {
"anchorButton": {
"defaultColor": "neutral"
}
}
}

Avatar​

NameTypeDescription
iconColorstringWill control the color of the icon.
borderColorstringWill control the color of the border.
backgroundColorstringWill control the color of the background.

Card Icon​

NameTypeDescription
backgroundColorstringWill control the color of the background.
visaTextColorstringWill control the color of the Visa text.

White Label App Box​

Styles the container box used in application form flows.

NameTypeDescription
backgroundColorstringWill control the background color of the box.
borderRadiusstringWill control the border radius of the box.
borderColorstringWill control the border color of the box.
boxShadowstringWill control the box shadow of the box.

White Label App Header​

Styles the header used in application form flows.

NameTypeDescription
actionsobjectHeader action preferences.

Actions​

NameTypeDescription
fontSizestringWill control the font size of header actions.
iconSizestringWill control the icon size of header actions.

Controls the color palette for sidebars rendered by Components (for example, the stages sidebar in unit-elements-application-form or unit-elements-create-card). Setting this object re-derives the sidebar's text, border and icon colors from the seed colors, so a dark sidebar stays legible.

NameTypeDescription

Accepts the same shape as the top-level colors palette. The SDK derives the sidebar's text, border and icon colors from these seeds to preserve contrast.

NameTypeDescription

Example — theme-wide sidebar palette (applies everywhere a sidebar is shown):

{
"global": {
"sidebar": {
"colors": {
"primary": "#4F46E5",
"neutral": "#0B1020",
"background": "#0B1020"
}
}
}
}

To scope the palette to a single component (for example, only the Application Form sidebar), set the same object under that component's override.global.sidebar. See Application Form.

Admonition​

Controls the appearance of admonition (alert) components used across UI components — for example, informational, success, warning, and error callouts.

NameTypeDescription
borderWidthstringBorder width around the admonition. Accepts any valid CSS length value (for example, "1px"). Omit to use the default (no border).
hideBackgroundbooleanWhen true, removes the admonition background color so only the border and icon remain visible. Default is false.

Example:

{
"global": {
"admonition": {
"borderWidth": "1px",
"hideBackground": false
}
}
}

Chip​

Controls the default rendering style for chip components (for example, status labels on accounts and cards).

NameTypeDescription
outlinebooleanWhen true, chips render with an outlined style (border and transparent background) instead of a filled style. Default is false.

Example:

{
"global": {
"chip": {
"outline": true
}
}
}

Box​

Controls the default rendering style for box (container) components.

NameTypeDescription
subtleToOutlinebooleanWhen true, boxes with the subtle variant render as outlined containers (border with transparent background) instead of filled subtle boxes. Default is false.

Example:

{
"global": {
"box": {
"subtleToOutline": true
}
}
}

Tabs​

Controls the appearance of tab navigation across components.

NameTypeDescription
activeColorstringAccent color for the active tab. Accepted values: "primary", "neutral". Omit to use the default ("neutral").

Example:

{
"global": {
"tabs": {
"activeColor": "primary"
}
}
}

Controls the appearance of breadcrumb navigation across components.

NameTypeDescription
NameTypeDescription

Example:

{
"global": {
"breadcrumbs": {
"fontSize": "14px",
"activeItem": {
"fontWeight": 600
}
}
}
}

Fields​

Controls the appearance of form fields (inputs, selects, text areas, and their labels) across components.

NameTypeDescription
inputobjectInput control preferences.
labelobjectField label preferences.

Input​

NameTypeDescription
sizestringInput size preset. Accepted values: "small", "medium". Omit to use the default size.
borderobjectInput border preferences.
Border​
NameTypeDescription
widthstringBorder width for inputs. Accepts any valid CSS length value (for example, "1px").
radiusstringBorder radius for inputs. Accepts any valid CSS length value (for example, "6px").

Label​

NameTypeDescription
fontWeightstringFont weight for field labels. Accepted values: "bold", "regular". Omit to use the default ("bold").

Example:

{
"global": {
"fields": {
"input": {
"size": "medium",
"border": {
"width": "1px",
"radius": "6px"
}
},
"label": {
"fontWeight": "regular"
}
}
}
}

Component Specific Settings​

Card​

NameTypeDescription
designsArray of DesignThe main title used in the Components. Examples include the Card title, Activity table title etc
overrideGlobalThe secondary title used in the Components. Examples include menus and empty states

Card Design​

NameTypeDescription
namestringName of your design, should match the name of Card design in Unit. For charge cards the name must contain "_credit".
urlstringLink to Card image
fontColorstringWill control the font color on top of the Card
boxShadowstringWill control the Card shadow

Account​

NameTypeDescription
titleColorstringWill control the font color of the account title
balanceTitleColorstringWill control the font color of the balance title
coverBackgroundColorstringWill control the color of the cover background

Application Form​

Applies to unit-elements-application-form. To recolor the Application Form sidebar without affecting other Components that render a sidebar, set Sidebar colors under override.global.sidebar:

{
"elementsApplicationForm": {
"selectionStageIconsPrimaryColor": true,
"override": {
"global": {
"sidebar": {
"colors": {
"background": "#0B1020",
"neutral": "#0B1020"
}
}
}
}
}
}
NameTypeDescription
overrideGlobalGlobal overrides scoped to the Application Form, including a sidebar palette.
selectionStageIconsPrimaryColorbooleanWhen true, icons in the Application Form account-type selection stage use the theme's primary color. Default is false.
sidebarBackgroundColorstringDeprecated. Background color of the Application Form sidebar. Prefer the sidebar palette instead.
Important Info

elementsApplicationForm.sidebarBackgroundColor still works but is discouraged. It recolors only the background — sidebar text, borders and icons are not re-derived, so a dark value can produce unreadable content. It exists for backwards-compatibility only.

Prefer setting global.sidebar.colors, or scope it to the Application Form via elementsApplicationForm.override.global.sidebar.colors. These drive the full palette (primary, secondary, neutral, background, info, success, warning, error) and re-derive contrasting text, border and icon colors.

Precedence​

When multiple sidebar settings are provided, the background color is resolved in this order (first match wins):

  1. elementsApplicationForm.override.global.sidebar.colors.background — element-scoped palette.
  2. global.sidebar.colors.background — theme-wide palette.
  3. elementsApplicationForm.sidebarBackgroundColor — legacy, deprecated.

Default Theme​

You can set a default theme for all components in the Unit Dashboard under Org Settings → Branding. The dashboard displays all themes created by your organization, and the selected theme will be applied to all components by default unless a specific theme is provided.

Create Theme​

Creates theme for UI components.

Note

Creating, updating, and listing themes does not require any scopes. Authenticate with a valid organization API token.

VerbPOST
URLhttps://api.s.unit.sh/white-label/theme
Data TypewhiteLabelTheme
Timeout (Seconds)5

Attributes​

NameTypeDescription
name RequiredstringTheme Name.
global RequiredobjectGlobal theme setup.
elementsCard RequiredobjectCard element setup.
elementsActivity RequiredobjectActivity element setup.
elementsAccount RequiredobjectAccount theme setup.
elementsPayment RequiredobjectPayment theme setup.
elementsApplicationForm RequiredobjectApplication Form element setup.
Example Request:
curl -X POST 'https://api.s.unit.sh/white-label/theme'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "whiteLabelTheme",
"attributes": {
"name": "VIP Theme",
"global": {
"colors": {
"background": "#2223334",
"primary": "#0000F0",
"secondary": "#000000",
"neutral": "#FF9933",
"success": "#0CD96F",
"warning": "#FF9933",
"error": "#FF4F64"
},
"typography": {
"common": {
"fontFamily": "sans-serif"
},
"titles": {
"h2": {
"fontWeight": "800"
},
"h3": {
"fontWeight": "800"
}
}
}
},
"elementsCard": {
"designs": [
{
"name": "default",
"url": "https://d1xlopvhx2cz8k.cloudfront.net/resources/outlay.png",
"fontColor": "#00ff00",
"boxShadow": "0px 3.6px 15px 2px rgb(0 0 0 / 0.25)"
}
]
},
"elementsAccount": {
"override": {
"global": {
"colors": {
"background": "#00ff00"
}
}
}
},
"elementsPayment": {
"override": {
"global": {
"typography": {
"common": {
"fontFamily": "Poppins"
}
}
}
}
}
}
}
}'

Response​

Response is a JSON:API document.

201 Created​

NameTypeDescription
dataobjectThe requested resource after the operation was completed.
NameTypeDescription
typeStringType of the resource in link.
hrefobjectURL to be set in theme property of component.
Example Response:
{
"data": {
"type": "whiteLabelTheme",
"id": "10008",
"attributes": {
"...": "..."
},
"links": {
"related": {
"type": "application/json",
"href": "https://ui.s.unit.sh/resources/982/themes/605676c1-b00b-4748-9fa4-258d1a28c3fb.json"
}
}
}
}

Update Theme​

Updates theme for UI components.

Note

You need to send the full theme object in the request body, not only the fields that were changed.

VerbPUT
URLhttps://api.s.unit.sh/white-label/theme/{id}
Data TypewhiteLabelTheme
Timeout (Seconds)5
Example Request:
curl --request PUT 'https://api.s.unit.sh/white-label/theme/{id}' \
--header 'Content-Type: application/vnd.api+json' \
--data-raw '{
"data": {
"type": "whiteLabelTheme",
"attributes": {
"name": "VIP Theme",
"global": {
"colors": {
"background": "#2223334",
"primary": "#0000F0",
"secondary": "#000000",
"neutral": "#FF9933",
"success": "#0CD96F",
"warning": "#FF9933",
"error": "#FF4F64"
},
"typography": {
"common": {
"fontFamily": "sans-serif"
},
"titles": {
"h2": {
"fontWeight": "800"
},
"h3": {
"fontWeight": "800"
}
}
}
},
"elementsCard": {
"designs": [
{
"name": "default",
"url": "https://d1xlopvhx2cz8k.cloudfront.net/resources/outlay.png",
"fontColor": "#00ff00",
"boxShadow": "0px 3.6px 15px 2px rgb(0 0 0 / 0.25)"
}
]
},
"elementsAccount": {
"override": {
"global": {
"colors": {
"background": "#00ff00"
}
}
}
},
"elementsPayment": {
"override": {
"global": {
"typography": {
"common": {
"fontFamily": "Poppins"
}
}
}
}
}
}
}
}'

Get Theme​

Get theme by id.

VerbGET
URLhttps://api.s.unit.sh/white-label/theme/{id}
Data TypewhiteLabelTheme
Timeout (Seconds)5
Example Request:
curl -X GET 'https://api.s.unit.sh/white-label/theme/{id}' \
-H "Authorization: Bearer ${TOKEN}"

List​

List themes resources. Paging and sorting can be applied.

VerbGET
URLhttps://api.s.unit.sh/white-label/theme
Timeout (Seconds)5

Query Parameters​

NameTypeDefaultDescription
page[limit]integer100Optional. Maximum number of resources that will be returned. Maximum is 1000 resources. See Pagination.
page[offset]integer0Optional. Number of resources to skip. See Pagination.
filter[fileName]string(empty)Optional. Find by file name.
sortstringsort=-createdAtOptional. sort=createdAt for ascending order or sort=-createdAt (leading minus sign) for descending order.
curl -X GET 'https://api.s.unit.sh/white-label/theme?page[limit]=20&page[offset]=10' \
-H "Authorization: Bearer ${TOKEN}"