Colours
Use colour to signal structure, highlight or emphasize important information or elements, and display different states.
Use colour intentionally. It’s not decoration. Colour is supposed to be functional.
General guidelines
We have different shades for every defined colour in Bright. For most of our colours, the following points should apply:
- Every colour has specific guidelines for meaning. We honour these guidelines to maintain consistency across the product.
- It’s usually safe to combine the Light and Dark shades of any colour. Text in the Dark shade should be readable on the Light background of its colour.
- Every non-Dark colour has two additional shades defined:
:active
and:hover
. These additional shades should only be used for very specific cases.
Text
Text tokens are used for a variety of copy across the system. Each token is used in different contexts and should adhere to the guidelines below. Do not use these tokens on other elements (such as surfaces), instead use the surface token variant.
Text Main
Token guidelines
Token | Guidelines |
---|---|
textPrimary rgba(10, 34, 51, 1) | textPrimary is used as the main colour for all title and copy on light surfaces. This should be used for high emphasis text to communicate copy to the user. |
textSecondary rgba(71, 89, 102, 1) | textSecondary is used as a secondary colour for text that acts as helper or hints to the user (such as input descriptions). |
textDisabled rgba(146, 165, 179, 1) | textDisabled is used for text that is within a disabled component. This text will still be ligible but by using this colour token it is communicated to the user that the text is disabled and not relevent. |
Text Links
Token guidelines
Token | Guidelines |
---|---|
textLinkDefault rgba(0, 87, 173, 1) | textLinkDefault is used for the colour for text links. This can be used in a body of text or within components such as ButtonLinks. This colour has interactions with the variants below depending on its state. |
textLinkHover rgba(0, 112, 224, 1) | text links or ButtonLink text will change to this textLinkHover state when they are hovered over. This highlights to the user that the link is clickable and responsive. |
textLinkActive rgba(146, 165, 179, 1) | textLinkActive is the state textLinkHover will change to to indicate to the user that the link has been clicked |
Text Assets
Token guidelines
Token | Guidelines |
---|---|
textAccent rgba(225, 0, 120, 1) | textAccent can be used as secondary link text for high emphasis actions (such as 'view full profile' on employees cards). It is also used as titles in branding for specific areas of they system (such as lightning). textAccent should be used sparingly and never used for body text. |
textSuccessDark rgba(0, 76, 38, 1) | textSuccessDark is one of two colours used for success messaging. This is used for text within a coloured background (eg; surfaceSuccessLight, surfaceBgSecondary). This darker variant is used to maintain a high contrast against the coloured background. For success messaging on white, see below. Despite being usable on coloured background, never use textSuccessDark on any 'default' or 'dark' surfaces. |
textSuccessLight rgba(0, 102, 51, 1) | textSuccessLight is the second colour used for success messaging. Unlike the darker variant above, this should not be used on coloured backgrounds as is instead used on white backgrounds only. |
textErrorDark rgba(102, 0, 0, 1) | textErrorDark is one of two colours used for error messaging. This is used for text within a coloured background (eg; surfaceErrorLight, surfaceError,Secondary). This darker variant is used to maintain a high contrast against the coloured background. For error messaging on white backgrounds, see below. Despite being usable on coloured backgrounds, never use textErrorDark on any 'default' or 'dark' durfaces. |
textErrorLight rgba(229, 26, 26, 1) | textErrorLight is the second colour used for error messaging. Unlike the darker variant above, this should not be used on coloured backgrounds as is instead used on white backgrounds only. |
textWarning rgba(77, 38, 0, 1) | textWarning is used for warning messaging titles to users (see alerts, see badge). This can be used on light and white surfaces. Do not use this on "dark" or "default" surfaces. Do not use this as a colour for body text (longer than 1-2 words) Instead use textWarningLight. |
textWarningLight rgba(77, 38, 0, 1) | textWarningLight is used for warning messaging body text to users (see alerts, see badge). This can be used on light and white surfaces. Do not use this on "dark" or "default" surfaces. |
textLightWarning rgba(80, 62, 0, 1) | textLightWarning is used for light warning messaging to users (see badge). This can be used on light and white surfaces. Do not use this on "dark" or "default" surfaces. |
Surfaces
Background surfaces
Token guidelines
Token | Guidelines |
---|---|
surfaceBgPrimary (rgba(255, 255, 255, 1) | surfaceBgPrimary is the primary background for the UI. This allows us to create depth within the visual hierarchy and should be used in most usecases. |
surfaceBgSecondary rgba(250, 253, 255, 1) | surfaceBgSecondary is used as a secondary background colour for elements within the UI. this allows us to create further depth between the background and some elements. This can also be used within components such as tables and filter dialogues to create a flat contrast from the background or other elements within the component. |
surfaceBgNav rgba(16, 33, 50, 1) | surfaceBgNav is used as the background for the navigation bar within BrightHR's webapp. This is the only usecase for this colour and it should not be applied anywhere else. Always be sure to use light text tokens for copy or icons on this background. |
Brand surfaces
Token guidelines
Token | Guidelines | |
---|---|---|
surfaceBrandDark rgba(0, 87, 173, 1) | surfaceBrandDark can be used to communicate informational components and elements. This is the darkest variant for brand surfaces and has the highest contrast to any background (other than surfaceBgNav) and as such will act as one of most important elements in the UIs visual hierarchy if applied. This should only be used for elements which will have short, direct copy (eg, badge, buttons, tags) | |
surfaceBrandDefault rgba(61, 176, 247, 1) | surfaceBrandDefault is BrightHRs primary brand colour and runs as a constant throughout the entire system. This is also used for informational elements but be wary of using this too much to distract from branding elements. Similarly to surfaceBrandDark, this should only be used for mostly decorative surfaces and elements so please refrain from using this as a background for containers with large amounts of text. | |
surfaceBrandLight rgba(235, 247, 255, 1) | surfaceBrandLight can be used to communicate informational components and elements. This is the lightest variant for brand surfaces and as such is lower in the visual hierarchy than other default or dark variants of this surface (and any other). This can be used for information elements that require more copy (such as alerts) and requires the darkest variants of any text token. |
Success surfaces
Token | Guidelines |
---|---|
surfaceSuccessDark rgba(0, 102, 51, 1) | surfaceSuccessDark can be used to communicate success components and elements. This is the darkest variant for success surfaces and has the highest contrast to any background (other than surfaceBgNav) and as such will act as one of most important elements in the UIs visual hierarchy if applied. This should only be used for elements which will have short, direct copy (eg, badge, buttons, tags) |
surfaceSuccessDefault rgba(0, 153, 76, 1) | surfaceSuccessDefault is used for success elements that similarly to surfaceSuccessDark don't contain much text. This can be used for progress bars and icons. If text is required, please use textInvert. |
surfaceSuccessLight rgba(204, 255, 229, 1) | surfaceSuccessLight is used for success elements that have a larger body of text (such as alerts). textPrimary and textSecondary can be used on this as a container background, but refrain from using textInvert. |
Warning surfaces
Warning
Use Warning tokens for elements that need to be brought to the attention of the user urgently, but do not stop the users current flow. These may affect other settings or processes, or even the how data is stored and altered, however the user can continue with their actions. Elements that the user need to be brought attention to in order to continue their flow, should user the 'error' tokens.
Token | Guidelines |
---|---|
surfaceWarningDark rgba(102, 51, 0, 1) | surfaceWarningDark can be used to communicate warning components and elements. This is the darkest variant for error surfaces and has the highest contrast to any background (other than surfaceBgNav) and as such will act as one of most important elements in the UIs visual hierarchy if applied. This should only be used for elements which will have short, direct copy (eg, badge, buttons, tags) |
surfaceWarningDefault rgba(229, 128, 26, 1) | surfaceWarningDefault is used for warning elements that similarly to surfaceSuccessDark don't contain much text. This can be used for components like; alert, butons aswell as error icons. If text is required, please use textInvert. |
surfaceWarningLight rgba(255, 229, 204, 1) | surfaceWarningLight is used for warning elements that have a larger body of text (such as alerts). textPrimary and textSecondary can be used on this as a container background, but refrain from using textInvert. |
Light Warning
LightWarning tokens; similarly to Warning tokens, highlight areas that need attention from the user but aren't urgent or need to be actioned immediately. LightWarning surfaces and borders are used sparingly over the product estate, so think carefully if these tokens should be used and will bring the attention of components or elements to the user correctly.
Token | Guidelines |
---|---|
surfaceLightWarningDark rgba(92, 69, 10, 1) | surfaceLightWarningDark can be used to communicate error components and elements. This is the darkest variant for warning surfaces and has the highest contrast to any background (other than surfaceBgNav) and as such will act as one of most important elements in the UIs visual hierarchy if applied. This should only be used for elements which will have short, direct copy (eg, badge, buttons, tags) |
surfaceLightWarningDefault rgba(229, 172, 26, 1) | surfaceLightWarningDefault is used for warning elements that similarly to surfaceSuccessDark don't contain much text. This can be used for components like; alert, butons aswell as error icons. If text is required, please use textInvert. |
surfaceLightWarningLight rgba(255, 250, 204, 1) | surfaceLightWarningLight is used for warning elements that have a larger body of text (such as alerts). textPrimary and textSecondary can be used on this as a container background, but refrain from using textInvert. |
Error surfaces
Error surfaces are used to convey components or elements that require immediate attention and will either stop the user from completing their task, have a negative effect on their task, or even provide a destructive action (such as deleting).
Token | Guidelines |
---|---|
surfaceErrorDark rgba(153, 0, 0, 1) | surfaceErrorDark can be used to communicate error components and elements. This is the darkest variant for error surfaces and has the highest contrast to any background (other than surfaceBgNav) and as such will act as one of most important elements in the UIs visual hierarchy if applied. This should only be used for elements which will have short, direct copy (eg, badge, buttons, tags) |
surfaceErrorDefault rgba(229, 26, 26, 1) | surfaceErrorDefault is used for error elements that similarly to surfaceSuccessDark don't contain much text. This can be used for components like; alert, butons aswell as error icons. If text is required, please use textInvert. |
surfaceErrorLight rgba(255, 229, 230, 1) | surfaceErrorLight is used for error elements that have a larger body of text (such as alerts). textPrimary and textSecondary can be used on this as a container background, but refrain from using textInvert. |
Borders
Like surfaces; there are a number of borders that are used in different contexts through the system and are used to communicate a components purpose quickly. Some border tokens should only be used with other surface tokens, these are outlined below. Do not use a surface variant as a border instead use the token variant.
Token | Guidelines |
---|---|
borderPrimary rgba(10, 34, 51, 0.1) | Use this for an surfaces with a dark or default variant. This border has 10% opacity and as such will add a darker border of your surface colour. |
borderNeutral rgba(146, 165, 179, 1) | Use for neutral containers and components. This should be used with light surfaces. If you need a border for your dark or default surfaces, use borderPrimary. |
borderSuccess rgba(0, 153, 76, 1) | Use for success containers and components. This should be used with the light variant of success surfaces. If you need a border for your dark or default surfaces, use borderPrimary. |
borderBrandDark rgba(0, 87, 173, 1) | Use for informational containers and components and secondary outline CTAs. |
borderBrandLight rgba(61, 176, 247, 1) | Use for informational containers and components. This should be used with light variant of brand surfaces, this border can also be used for surfaceBgPrimary. If you need a border for your dark or default surfaces, use borderPrimary. |
borderDestructive rgba(153, 0, 0, 1) | Use for destructive containers and components destructive outline CTAs. |
borderError rgba(229, 26, 26, 1) | Use for error containers and components. This should be used with light variant of error surfaces. If you need a border for your dark or default surfaces, use borderPrimary. |
borderWarning rgba(229, 128, 26, 1) | Use for warning containers and components. This should be used with the light variant of warning surfaces. If you need a border for your dark or default surfaces, use borderPrimary. |
borderLightWarning rgba(229, 172, 26, 1) | Use for warning containers and components. This should be used with the light variant of light warning surfaces. If you need a border for your dark or default surfaces, use borderPrimary. |