Icons

Fundamentals > Icons
Hand holding pen over page with small drawings
Use icons to help your users more quickly identify the different elements of your application.

Responsive UI provides a library of enterprise icons to help ensure consistent appearance in icons across our applications.

Each icon has a unique name that conveys the meaning behind the icon. This allows you to match the icon to its meaning in your application. However, with all the hundreds of different concepts that can be represented in our applications, the same icon may fit multiple uses. For example. The “Check” icon could be used to represent a checking account, a “Deposit Check” function, or an option that displays a check image (among other uses).

Icon name casing

We use different casing for icon names depending on which component technology you’re using.

Select the component technology you’re using with the selector below in order to see the correct icon names.

Standard icons

Here are the primary icons you can use in your Responsive UI applications.

Icons for account types

Here are icons you can use to represent specific account types.

Account Type Icon Icon Name

Internally used icons

The following icons are used internally within the application chrome and should generally not be used in your apps.

Guiding principles for enterprise icons

  • Icons will not necessarily be unique across the entire application.
    • There are too many content views (unique noun/verb combinations) in a sizable application to have a unique icon for each.
    • By “noun” we mean business objects like “customer”, “account”, “transaction”, etc.
    • By “verb” we mean actions you can take on those nouns, like “add”, “delete”, “edit”, “transfer”, etc.
    • Icons should be used to reinforce a UI concept within the current visual context, **not uniquely identify **it across all concepts in an entire application.
    • If you were to multiply all the nouns and verbs in the system into a library of icons, the sheer number of icons would be overwhelming and difficult to use. That’s why we only have icons for nouns or verbs (like “Add” and “User”) instead of icons for nouns and verbs (like “Add User”). If we were to multiply the nouns and verbs, you’d be selecting from a library of several thousand icons instead of a few hundred. And the resulting mashup of verb + noun would often be difficult to see clearly at 16x16 pixels.
  • Icons need to be visually simple.
    • An icon may be legible at larger sizes, but they’re almost always viewed at 16x16 pixels.
    • Seriously, there is only so much that you can effectively communicate in that small of a space.
  • Our icons are monochromatic, with their color set by the current theme.
  • It can be helpful for an icon to be used in tandem with descriptive text to help the user understand what a screen element is for. The icon gets you in the right neighborhood (“ok it’s a CD and not a Checking account”), and the accompanying text gets you all the way home (“ok it’s a 24-month CD and not a 6-month CD”).
    • Our brains recognize simple icons (emphasis on simple) faster than text.
    • Complex icons actually take longer for our brains to grasp than text, just because we have to stop and try to understand what that tangled mess of objects is supposed to represent. It’s easier to just read the text at that point.
    • With smaller form factors like mobile, there may not be enough space for accompanying text.
  • Some objects in a large application are so similar that it isn’t feasible to create unique icons for each.
    • For example, trying to create a unique icon for a 6-month CD vs. a 12-month CD vs. a 24-month CD could be brittle and not feasible.
    • Instead, it’s probably best to have a single icon like “TimeDeposit” and use accompanying text to clarify.
  • Not everything in the UI needs an icon.
    • If the icon can help the user more quickly recognize what the element is for, then it’s being used well. For example, if I always see the same buttons in a toolbar, after a while I can just look for the picture of a printer rather than actually having to read the word “Print”. It helps me speed up the process of identifying something within a local context.
    • However, if the screen is littered with hundreds of icons, that can slow the user down as their eyes have to skip over all the little pictures to find what they’re looking for. Our eyes are drawn more rapidly to pictures than text, because of the way visual pattern matching works in our brains. If there are too many icons in the screen, our eyes are drawn more to the icons than to the actual real world task we’re trying to accomplish. It’s too much of a good thing in that case.

So icons are most useful when:

  • They work in tandem with text to help reinforce what a screen element is for, not uniquely identify it across an entire application.
  • They illustrate simple concepts. Complex icons are more difficult for our brains to parse than text.
  • They are used to identify something within a local context vs. a global context (unless the app is tiny and the number of objects in the app is very small).
  • They are used sparingly. It’s easy to overwhelm the user with visual noise and distract them from the real world task they’re trying to accomplish.

Development

Web component development

Component reference

rui-icon
rui-icon
Module: rui-icon - Package: @jha/rui-wc

Displays a standalone enterprise icon, outside of a Responsive UI component

Name Type Default Description
iconType string ''

The name of the enterprise icon to display. You can find a list of all enterprise icons here.

Icon names used in Responsive UI web components use kebab casing. Switch the Component Technology selector at the top of this page to “Web Components” in order to see the kebab-cased icon names.

size string '' Specifies the size of the status icon. Use CSS notation appropriate for the CSS “width” and “height” attributes.
context string '' Icons display with different sizes and colors depending on where they are positioned in your application’s UI. We internally use the context property to let the icon understand where it’s displayed so that it can display the proper color and size. You’ll typically leave this property at its default blank value; this property is typically set internally.

Implementation

Enterprise icons in Responsive UI components

Most of the time you’ll display an enterprise icon within a Responsive UI component. All Responsive UI components that display an icon have a iconType property. Set this property’s value to the name of the icon you wish to use.

Setting the iconType property in Responsive UI components
<rui-nav-button iconType="information" text="About" route="/#/About"></rui-nav-button>
Displaying an enterprise Icon in an icon-only button

To display an enterprise icon within an icon-only button, set the iconType property in rui-button.

Setting the iconType property in a component
<rui-button iconType="edit"></rui-button>
Displaying standalone enterprise icons outside of a Responsive UI component

You can also display a standalone enterprise icon outside of a Responsive UI component.

Begin by importing the rui-icon module into your application.

Import the module
// import into app.module
import '@jha/rui-wc/components/rui-icon/rui-icon-imports';

A common use case for displaying a standalone enterprise icon outside of a Responsive UI component is templated lists.

Add an instance of rui-icon in the desired location within the template, speciying an icon name for the iconType property. Specify a value for the size property if you’d like the icon to be larger than the default size.

You can modify the opacity for the rui-icon using CSS if that helps the icon blend better into the template.

Displaying a standalone icon in a templated list
<div *ngFor="let account of accountList" class="rui-template account-container">

    <rui-icon [iconType]="account.iconType" size="28px" class="account-icon"></rui-icon>

    <div class="account-info">
        <div class="rui-bright-text-label">Account {{account.name}}</div>
        <div class="rui-regular-text-label">{{account.type}}</div>
    </div>

    <p class="rui-regular-text-label account-balance">
        {{account.balance | jhaCurrency}}
    </p>

</div>

Angular component development

Component reference

jha-icon
jha-icon
Module: JhaIconModule - Package: @jha/jharesponsive

Displays a standalone enterprise icon, outside of a JHA component

Name Type Default Description
jhaIconType string ''

The name of the enterprise icon to display. You can find a list of all enterprise icons here.

Icon names used in Responsive UI Angular components use Pascal casing. Switch the Component Technology selector at the top of this page to “Angular” in order to see the kebab-cased icon names.

jhaSize string '14px' Specifies the size of the status icon. Use CSS notation appropriate for the CSS “width” and “height” attributes.

Implementation

Enterprise icons in Responsive UI components

Most of the time you’ll display an enterprise icon within a Responsive UI component. All Responsive UI components that display an icon have a jhaIconType property. Set this property’s value to the name of the icon you wish to use.

Setting the iconType property in Responsive UI components
<jha-nav-button jhaIconType="Information" jhaText="About" jhaRouterLink="/About"></jha-nav-button>
Displaying an enterprise Icon in an icon-only button

To display an enterprise icon within an icon-only button, set the jhaIconType property in jha-button.

Setting the iconType property in a component
<jha-button jhaIconType="Edit"></jha-button>
Displaying standalone enterprise icons outside of a Responsive UI component

You can also display a standalone enterprise icon outside of a Responsive UI component.

Begin by importing the JhaIconModule module into your application.

Import the module
/ import into app.module
import { JhaIconModule } from '@jha/jharesponsive/jha-icon';

@NgModule({
    imports: [
        ...
        JhaIconModule,
        ...
    ]
})

export class AppModule(){}

A common use case for displaying a standalone enterprise icon outside of a Responsive UI component is templated lists.

Add an instance of jha-icon in the desired location within the template, speciying an icon name for the jhaIconType property. Specify a value for the jhaSize property if you’d like the icon to be larger than the default size.

You can modify the opacity for the jha-icon using CSS if that helps the icon blend better into the template.

Displaying a standalone icon in a templated list
<div *ngFor="let account of accountList" class="jha-template account-container">

    <jha-icon [jhaIconType]="account.iconType" jhaSize="28px" class="account-icon"></jha-icon>

    <div class="account-info">
        <div class="jha-bright-text-label">Account {{account.name}}</div>
         <div class="jha-regular-text-label">{{account.type}}</div>
    </div>

    <p class="jha-regular-text-label account-balance">
        {{account.balance | jhaCurrency}}
    </p>

</div>

Design

Figma design

Figma design info
You can find this component in the Components - Icons page in the Figma UI Kit.

Many of our development components embed an icon within the component, including header and nav buttons, icon buttons, tiles, etc.

The design components work differently. You first set up the container component (often a type of button), then drag in an icon component, set its Usage to get the appropriate size and color, then move it to a higher layer than its container component so that it appears above it.

We’ve added a nav button into the nav bar. Next we want to add its icon.
Nav button ready for icon

Add an Enterprise Icon to your Design

After you have the container component in place, find the name of the icon you want here.

Finding the “Notes” icon in the list of enterprise icons
Finding the Account enterprise icon

Next, find the design component for that icon by pressing Shift+I in Figma to display the Components popup. Type the icon’s name into the search box in the popup until you see it listed. Note that you may see several assets that match the name. You’re looking for one whose name starts with “RUI / Icon /”. For example, the component name for the “Notes” icon is “RUI / Icon / Notes”.

Searching for “notes” using the Components popup
Searching for the Notes icon

Click the icon component in the popup and it is added to your design. The odds are that the icon has the incorrect position, size, and/or styling. We’ll fix that next.

After adding the “Notes” icon component to the design
After adding the Notes icon to the artboard

Note that we did not include some of the “Icons for Account Types” that duplicate other existing icons. Here’s a list of those icons, along with their icon equivalent (which looks the same):

  • Collateral = Gold
  • CreditLine = Invoice
  • Customer = Person
  • InternetBanking = Web
  • LoginLogout = LockClosed
  • NonJHAMisc = Import
  • OverdraftProtection = Protected
  • Shareholder = Stock
  • TaxPlan = Calculation
  • TimeDeposit = Certificate
  • Vendor = Building

Set the Icon’s Usage

Select the icon element and choose an appropriate value for the icon component’s Usage property:

Icon Context Usage
Header buttons Header Button
Nav buttons Nav Button
Primary buttons Primary Button
Secondary buttons Secondary Button
Destructive buttons Destructive Button
Disabled buttons Disabled Button
Toggle buttons – on Secondary Button
Toggle buttons – off Secondary Button
Grid buttons Grid Button
Tree view nodes Grid Button
Large and Wide tiles Large and Wide Tiles
Large and Wide tiles - disabled Large and Wide Tiles: also manually change the icon fill color to “#999999”.
Large and Wide tiles - error Large and Wide Tiles: also manually change the icon fill color to “#A80000” and set the icon opacity to 40%.
Small tiles Small Tiles
Small tiles - disabled Small Tiles: also manually change the icon fill color to “#999999”.
Small tiles - error Small Tiles: also manually change the icon fill color to “#A80000” and set the icon opacity to 40%.
Icon in a templated list Default (You can optionally change the icon’s opacity to help it blend well within the template.)
We set the icon’s Usage to “Nav Button” since this icon is being displayed on a nav button. Note how this changes the icon’s size and color from the default values to the appropriate values for a nav button icon.
Setting the icon's usage

Position the Icon

Once the icon has the correct state, move it to the appropriate X,Y position in your design. Also, an icon for a button must appear above the button component in the Layers panel to be visible.

We move the icon to its proper X,Y location in the artboard, and ensure that its layer appears above the layer for its button component
Setting the icon's position

After the icon has the correct state and is in the correct position, it can be helpful to group the icon and its container so you can work with them together. Give the group a meaningful name so that anyone working on this design understands what’s in the group.

We’ve grouped the icon and its button into a new “Notes” group
Grouping the icon and its button

Adobe XD design

Adobe XD design info
You can find this component in these artboards in the Adobe XD design samples:
  • Guidance - Icon Usage

Many of our development components embed an icon within the component, including header and nav buttons, icon buttons, tiles, etc.

The design components work differently. You first set up the container component (often a type of button), then drag in an icon component, set its Usage to get the appropriate size and color, then move it to a higher layer than its container component so that it appears above it.

We’ve added a nav button into the nav bar. Next we want to add its icon.
Nav button ready for icon

Add an Enterprise Icon to your Design

After you have the container component in place, find the name of the icon you want here.

Finding the “Notes” icon in the list of enterprise icons
Finding the Account enterprise icon

Find the design component for that icon by typing its name into the Asset filter box in Adobe XD until you see it listed. Note that you may see several assets that match the name. You’re looking for one whose name starts with “JHA / Icon /”. For example, the component name for the “Notes” icon is “JHA / Icon / Notes”.

When searching for library assets in the Libraries panel, it’s important to consider the context for that search:

  • If you search from the Document Assets section of the Libraries panel, you’ll only see search results for components and icons that have already been used in this design document. If the item you’re searching for hasn’t already been used in the document, it won’t show up in the search results in this context.
  • If you search from the JHA Responsive UI Kit section of the Libraries panel, you’ll see search results for components and icons in the UI kit. This is typically the best context from which to search.
  • If you search from the topmost section of the Libraries panel, you’ll see search results for components and icons that are either currently being used in this design document (from the Document Assets context) or are in the UI kit (from the JHA Responsive UI Kit context). So you may see duplicate search results when searching from this context. You can hover the mouse over a search result to see which context it’s coming from.

The Document Assets section of the Libraries panel is typically the default context in the Libraries panel, so if you want to search just the UI kit, you’ll need to back up a level to the topmost context, then move down into the JHA Responsive UI Kit context to perform your search.

Searching for “notes” using the Assets panel filter. We’re searching from the topmost context in the Libraries panel (searching all libraries) and the Notes icon is not already in the Document Assets, so we see one search result, from the JHA Responsive UI Kit.
Searching for the Notes icon

Drag the icon component from the Assets panel into your artboard. The odds are that the icon has the incorrect position, size, and/or styling. We’ll fix that next.

After dragging the “Notes” icon component to the artboard. Now that the Notes icon is used in the document, you’ll see 2 search results for this icon in the Libraries panel: one from the JHA Responsive UI Kit and another from the document assets.
After adding the Notes icon to the artboard

Note that we did not include some of the “Icons for Account Types” that duplicate other existing icons. Here’s a list of those icons, along with their icon equivalent (which looks the same):

  • Collateral = Gold
  • CreditLine = Invoice
  • Customer = Person
  • InternetBanking = Web
  • LoginLogout = LockClosed
  • NonJHAMisc = Import
  • OverdraftProtection = Protected
  • Shareholder = Stock
  • TaxPlan = Calculation
  • TimeDeposit = Certificate
  • Vendor = Building

Set the Icon’s Usage

Select the icon element and choose an appropriate value for the icon component’s Usage property:

Icon Context Usage
Header buttons Header Button
Nav buttons Nav Button
Nav dropdown options Nav Dropdown Option
Primary buttons Primary Button
Secondary buttons Secondary Button
Destructive buttons Destructive Button
Disabled buttons Disabled Button
Toggle buttons – on Secondary Button
Toggle buttons – off Secondary Button
Grid buttons Grid Button
Tree view nodes Grid Button
Large and Wide tiles Large and Wide Tiles
Large and Wide tiles - disabled Large and Wide Tiles: also manually change the icon fill color to “#999999”.
Large and Wide tiles - error Large and Wide Tiles: also manually change the icon fill color to “#A80000” and set the icon opacity to 40%.
Small tiles Small Tiles
Small tiles - disabled Small Tiles: also manually change the icon fill color to “#999999”.
Small tiles - error Small Tiles: also manually change the icon fill color to “#A80000” and set the icon opacity to 40%.
Icon in a templated list Default state (You can optionally change the icon’s opacity to help it blend well within the template.)
We set the icon’s state to “Nav Button” since this icon is being displayed on an nav button. Note how this changes the icon’s size and color from the default values to the appropriate values for a nav button icon.
Setting the icon's state

Position the Icon

Once the icon has the correct state, move it to the appropriate X,Y position in your design. Also, an icon for a button must appear above the button component in the Layers panel to be visible.

We move the icon to its proper X,Y location in the artboard, and ensure that its layer appears above the layer for its button component
Setting the icon's position

After the icon has the correct state and is in the correct position, it can be helpful to group the icon and its container so you can work with them together. Give the group a meaningful name so that anyone working on this design understands what’s in the group.

We’ve grouped the icon and its button into a new “Notes” group
Grouping the icon and its button

Support options
Have questions on this topic?
Join the Responsive UI team in Microsoft Teams to connect with the community.
See something in this page that needs to change?
Send us feedback on this page.
Last updated Tue Apr 4 2023