v2.0

Foreward

It is important to be clear about what user interface guidelines are, what they can do, and what they cannot do. User interface guidelines provide a reference for common user interface patterns to ensure that whenever a user sees a particular pattern, they can comprehend exactly how it will work before they attempt to use it. What guidelines will do is ensure that products visually will appear uniform and cohesive while allowing some differentiation appropriate to specfic tasks and usage of the products.

What guideliness cannot do is ensure that a user interface is usable. It is possible to follow the guidelines to the letter and still create a user interface where people are unable to successfully complete tasks. This is because the look and feel provided by following guidelines only covers the visuals, which, while affecting usability, is only one dimension of usability and does nothing to ensure that terminology in use is understandable and that UI elements are laid out in a manner expected by the user to be intuitive. There still needs to be proper analysis of the user's tasks to design the flow of screens and craft the interaction to be intuitive, and investigation into nomenclature familiar to the target users and so forth to ensure the user interface is understandable and usable.

How To Use

First, it is vital to understand the tasks users will carry out with the UI and understand the path they need to take through the UI to complete tasks. It's also important to know the priority of the tasks and the elements of the UI in support of those tasks. This information is what is needed to apply the guidelines in a way that will make complex UIs easier to use, as much as is possible with visual changes alone.

Avoid more than one "Primary" heading per page.

Try to avoid more than two "Secondary" headings per page.

There should never be more than one Primary (or Default) action button per page. (The "Primary" or "Default" action is what will happen if the user loads the page and hits the Enter key without doing anything else.)

By way of example, let's suppose in the Workflow product UI the most primary thing the user will do is take some kind of action, and the second-most thing the user will do is assign team members or reassign tasks to team members. Armed with that information, we can apply the primary heading style to the Actions section and the Secondary heading style to the Team Members area, and apply Tertiary and alternate section styles to remaining areas of the UI, based on relative priority, as seen in this example.

For more background information to help apply visual styles from the guideline to UI, please review this presentation.

Layout

There is a common top header section. The top left navigation is reserved for switching between applications in the Lead To Money suite, and for the main navigation of the current application. The top right is reserved for help contents and profile management of the currently logged in user. The main content area can be subdivided in halves or thirds both horizontally and vertically to accomodate neede panels and display of various content together.

Everything should be laid out on a 5-pixel grid as much as possible. Margins and padding for the page should be 20 pixels, major content areas should be either 10 or 20 pixels to separate sections of text. Margins should 'collapse' between content areas. In other words, avoid having two content areas next to each other with margins resulting in 40 pixels in between them but only 20 pixels around the outside. Margins need to be set so that there is never more than a 20-pixel combined margin around content areas. Content should never be placed in the margin area, it is only to be used for spacing between content sections.

Design Style

All elements are in a flat, borderless style (with some exceptions, e.g. form inputs). Fonts are Helvetica Neue / sans-serif. This is both the state of the art in UI and makes it very easy for applications to appear consistent on multiple target devices and operating systems. There is a detriment that some visual affordances to indicate interaction are compromised with a flat style (3-D makes it obvious what can be pressed, flat requires other ways to distinguish), so opportunities to integrate interaction affordances back in will be identified as the guidelines mature.

The top header section is white, to not pull attention away from the main content/data area of applications. The top left navigation is reserved for switching between applications in the Lead To Money suite, and for the main navigation of the current application. The top right is reserved for help contents and profile management of the currently logged in user. The main content should have a white background and all text by default is a dark gray #636466. Black is reserved only for <H#> headings and <STRONG> elements. Borders and backgrounds behind the default text color should always be lighter, never the same or darker. (Specific colors to use are detailed in the colors section.)

Everything should be laid out on a 5-pixel grid as much as possible. Margins and padding for the page should be 20 pixels, major content areas should be either 10 or 20 pixels to separate sections of text. Margins should 'collapse' between content areas. In other words, avoid having two content areas next to each other with margins resulting in 40 pixels in between them but only 20 pixels around the outside. Margins need to be set so that there is never more than a 20-pixel combined margin around content areas.

Static Content Vs Interactive Content

In mobile, just about everything is interactive. Almost everything can be touched, dragged, swiped, resized. But across devices and platforms, if a decision must be made for the visual style, prefer square corners for static content and round corners for interactive content.

Square = Static

123

Status
Warning:Warning! A warning message.


CSS

border-radius: 0px;

Rounded = Interactive


CSS

border-radius: 5px;

Info:Note: to create a round profile picture, the border-radius of the img tag is set to 50% of the height/width dimension of the image itself. Bootstrap provides img-circle for this, or a Callidus CSS class can be created (e.g. cald_profile_pic) where border-radius: 50%;

Fonts

Font face is Helvetica Neue. In CSS, the spec including fallback fonts is

font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif;

Roboto is for Google Android devices and is first because Android at time of writing has larger market share (consider China/Asia). Helvetica Neue is to cover Apple iOS devices. Arial covers Microsoft Windows devices and sans-serif covers everything else.

Font size should start with the browser default, and prefer using relative CSS font sizes to handle setting variations in size. For example, use font-size: smaller; or font-size: larger; only when absolutely necessary to distinguish specific lines of text. Additionally, semantic markup like <strong> rather than <b> should be used. Otherwise, structural markup appropriate for the content (e.g. H1, H2, H3, etc.) should be relied on to provide the size and weight for text.

H1

H2

H3

H4

H5
H6
This sentence has something to be emphasized and stated strongly.
Using font-size: larger;
Default browser font size.
Using font-size: smaller;
Visual Spec in progress. TBD
<h1>H1</h1>
<h2>H2</h2>
<h3>H3</h3>
<h4>H4</h4>
<h5>H5</h5>
<h6>H6</h6>
<div>This sentence has something to be <em>emphasized</em> and stated <strong>strongly</strong>.</div>
<div class="cald_larger">Using font-size: larger;</div>
<div>Default browser font size.</div>
<div class="cald_smaller">Using font-size: smaller;</div>
body {
    background-color: white;
    color: rgba(99,100,102,1.0);
    font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif;
}

h1, h2, h3, h4, h5, h6, strong {
    color: black;
    text-decoration: none;
}

.cald_larger {
    font-size: larger;
}

.cald_smaller {
    font-size: smaller;
}

Colors

The color palette is not just a range of colors to be used at will. Each color in the palette was chosen from the mockups where each color has a specific use. The palette was initialized from specific colors found in the Callidus corporate identity and in products of the suite. When two colors are adjacent, e.g. text on a background, it's important that the two colors have sufficient contrast to be perceptible.

Base Palette

Headline
#000000
Body text
#636466
Background
#FFFFFF
Accent #1
#00A8E3
Accent #2
#fee1a9

The base palette is the designer's reference to evaluate the overall look. See the UI Color Palette below for all the specific colors and their usage.

UI Color Palette

Grayscale

Color and Usage
#000000

Example H4

Usage: Heading text with no background color
#47484a
1st level ^
2nd level ^
3rd level
Usage: Mobile main hamburger menu item background, 3rd level
#555557
1st level ^
2nd level
Usage: Mobile main hamburger menu item background, 2nd level
#636466

Example of normal page text

Usage: Default page text color, mobile hamburger menu 1st level background
#919293
Menu item
Menu item
Usage: Mobile main hamburger menu border lines
#bfbfbf
Example borders
Usage: Gridlines and input borders
#d9d9d9
Tertiary grid heading
Row 1
Row 2
Usage: Tertiary grid heading background and mobile menu text color
#e5e5e5
Parent menu item
Child menu item
Child menu item
Usage: iOS in-page menu child menu item background
#ececec
Heading
Row 1
Row 2 (banded)
Usage: Grid banding for even rows only (secondary, tertiary, alternate grids only)
#f3f3f3
Example Subsection Heading
and subsection content
Usage: Subsection heading background and subsection content background
#f2f2f2
Empty page margins with page content inside white area.
Usage: Page margins (below the global header and outside of page content)
#FFFFFF
Usage: Global header background, primary page content (widget/section) backgrounds


Colors

#2b6191
Back to login screen Usage: Button that is primary action (one per page only)
#00A8E3

Example Secondary Section Heading

Usage: Secondary headings and grid titles, global header bottom border
#1ea9e0
An example link Usage: Links (underline on hover only)
#72c9e9
Menu item 1
Hover menu item 2
Menu item 3
Usage: Hover menu item or selected nav bar item
#bee0ee
EXAMPLE   BANNER   NAV  
SELECTED
Usage: Banner menu background
#d3eef9
Primary grid heading
Row 1
Row 2 (banded)
Usage: Grid banding for even rows only (primary grids only)
#FDB823
Heading
Row 1
Row 2 hovered
Usage: Hover or selected by the user, also warning color (without text on top)
#fee1a9
Heading
Row 1
Row 2 selected, but focus/action is somewhere else
Usage: Selected but not in focus, or selected by the system.
#f5f3f0
Empty page margins with page content inside white area.
Usage: Page margins (below the global header and outside of page content)


Reserved Colors For Traffic Lighting / Status Notification

#ad3a3a
100
Errors
Usage: Traffic lighting with white text only over the color
#d9b500
100
Warnings
Usage: Traffic lighting with white text only over the color
#309030
100
Success
Usage: Traffic lighting with white text only over the color
#ff0000
0%
Usage: Traffic lighting with no text over the color
#FDB823
50%
Usage: Traffic lighting with no text over the color
#00c000
100%
Usage: Traffic lighting with no text over the color
#98C83C

Done.

Usage: Spinner and progress bar final success color
#bde573
 
100% complete Usage: Progress bar final success color for sub-component progress

Data Visualization For graphic charts only

Apply the cool series first. Use the warm series only if needed for large number of data series on one visualization. (Do not alternate the cool series on one visualization and the warm series on another visualization.) If there are significant number of data series to be displayed, wrap the series back to the first cool color in the cool series and use hover/highlighting to help the user identify a particular data series. The purple highlight is only to be used for temporal hover or selection of a data series on a visualization. Do not use purple as a fixed color for a data series on any visualization.

Cool Color Series

#1667bd
1
#00a5ef
2
#97b68c
3
#467dc8
4
#56b397
5
#277876
6
#529bbd
7
#8dd9b5
8
#899884
9

Warm Color Series

#88714b
10
#cbc62e
11
#c38746
12
#7eb070
13
#ffc024
14
#6ca58a
15
#888016
16
#8dd9b5
17
#899884
18

Mixed Color Series

#1667bd
1
#00a5ef
2
#88714b
3
#cbc62e
4
#467dc8
5
#97b68c
6
#c38746
7
#7eb070
8

#277876
9
#56b397
10
#ffc024
11
#6ca58a
12
#888016
13
#529bbd
14
#8dd9b5
15
#899884
16

Transitional Colors

#9E57A2 hover select

Examples

Legend
Data series 1
Data series 2
Data series 3
Data series 4
Data series 5
Data series 6
Data series 7
Data series 8
 
 
A very even pie chart
Legend
Data series 1

Data series 2

Data series 3

Data series 4

Data series 5

Data series 6

Data series 7

Data series 8

Data series 9

Data series 10

Data series 11

Data series 12

Data series 13

Data series 14

Data series 15

Data series 16

Example of how the color series works with a very dense line chart using the mixed color series. Hover over the line or legend.

















Iconography

Iconography should be flat, solid color. It's recommended to start with the Icomoon library. The default Bootstrap icon library is possible as well. (Reference information on the Icomoon web site.) Pay careful attention to file names and only use icons exactly as originally intended by the file names. DO NOT use icons simply because they look like something that might work. If an icon for a feature peculiar to Sales Management cannot be found in the library, based on file name not image, then a custom icon will need to be created with a new, unique visual metaphor for the purpose. AVOID using social media emojis / smileys.

Depending on the context, either 16pt or 32pt are acceptable. Try to avoid 24pt with Icomoon as only multiples of 16 are clear.

16pt 24pt 32pt
HTML code:
<head>
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <link rel="stylesheet" href="fonts/icomoon/style.css">
</head>
<body>

	ICOMOON:
	<span class="icon-name"></span>

	BOOTSTRAP:
	<span class="glyphicon glyphicon-name"></span>

</body>

This is the complete set. Not all icons seen here should be used in products. Icons that have been standardized for particular use are highlighted in this color. Hover over the icon for usage details. Do not use icons marked in red without consulting UX and Legal.

Header Bars

The structure of the top banner area is a global Callidus suite bar and a product-level bar. The top-most bar is only global Lead To Money suite elements - the CallidusCloud brand, application switching navigation, options pertaining to the current login and possibly any global suite-level help that might be provided. The top banner is visually white in order to reserve darker/higher contrast for primary use areas of the UI. The second bar will be colored and have the navigation specific to the current product. The second product navigation bar could be hidden into a "hamburger" menu on mobile devices. Any other links or inputs should be avoided in the brand bar, other than perhaps global help for the suite.

Default Header Bar

Each button/link loads a page
Application Name
Username

Header With Submenus

Menu categories instead of page links
Application Name
Username

Tertiary Bar

For contextual search or other page-level capabilities
Application Name
Username
Selected Page

No Submenus

Typically used for mobile

Embedded

Embedded in a 3rd Party Product

No change to the Callidus colors or branding. The three-dot overflow menu handles the user profile and help menu links that would have been in the heading.

3rd-party Product Heading

3rd-party Navigation
Callidus content

Embedded in a 3rd Party Product and Co-branded

Basic color changes to match the parent application. Monochrome Callidus logo (if allowed) to keep Callidus brand but not disrupt parent applcation.

3rd-party Product Heading

3rd-party Navigation
Callidus content

Embedded in Another Callidus Product

The blue menu system is the embedded product. The white header, including the dark blue line, is the parent application.

Parent Application
Username
Click to enlarge
<header class="cald_header">
    <div class="cald_header">
        <div class="cald_left cald_app_name">
            Application Name <span class="caret"></span>
        </div>
        <div class="cald_logo" id="cald_logo"></div>
        <!-- this ends up on the far right -->
        <div class="cald_right cald_help_link">Help</div>
        <div class="cald_right">Username <span class="caret"></span></div>
    </div>
</header>
<nav class="cald_header">
    <ul class="nav nav-pills">
      <li role="presentation" class="cald_header_menuitem">HOME</li>
      <li role="presentation" class="cald_header_menuitem_selected">SELECTED PAGE</li>
      <li role="presentation" class="cald_header_menuitem">PAGE TWO</li>
    </ul>        
</nav>
header {
	text-align: center;
	padding: 0px;
	height: 64px;
	min-height: 60px;
	vertical-align: middle;
	border-bottom-color: rgba(0,168,227,1.0);
	border-bottom-style: solid;
	border-bottom-width: 5px;
	background-color: white;
	z-index: 1000;
	width: 100%;
}

header.cald_header {
	position: static;
}

div.cald_header {
	position: relative;
}

nav.cald_header {
	background-color: rgba(190,224,238,1.0);
	height: 40px;
	min-height: 5px;
	width: 100%;
	z-index: 1000;
	margin: 0px;
	padding: 0px;
	position: static;
}

.cald_no_menu {
	height: 5px !important;
}

.cald_app_name, .cald_help_link {
	text-transform: uppercase;
}

.cald_logo {
	background-color: transparent;
	background-image: url("../img/CallidusCloud_logo_product_dark.png");
	background-position: center;
	background-repeat: no-repeat;
	background-size: contain;
	height: 44px;
	width: 117px;
	display: inline-block;
	position: absolute;
	top: 50%;
	left: 50%;
	margin: 10px 10px 10px -58px;
}

.cald_left {
	float: left;
	padding: 20px 0px 20px 20px;
}

.cald_right {
	float: right;
	padding: 20px 20px 20px 0px;
}

.cald_header_menuitem {
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: none;
	text-align: center;
	vertical-align: middle;
}

.cald_header_menuitem_selected {
	background-color: #72c9e9;
	height: 40px;
	margin: -1px;
	padding: 10px 20px;
	border: none;
	text-align: center;
	vertical-align: middle;
	color: white;
	font-weight: bold;
}

Menus

Menus are temporal (except for in-page) therefore a dark color is used for hover to get attention. This is the same color used for selection on the default header bar that has no menus. Avoid iconography in menus, other than checkmarks for currently selected options for menu items that are not actions.

Heading Menu

Visual Spec in progress. TBD
<!-- Logo header not shown here -->
<nav class="cald_header">
    <ul class="nav nav-pills">
      <li role="presentation" class="cald_header_menuitem cald_header_menuitem_hover">CATEGORY
        <div class="cald_header_submenu" style="">
            <div class="cald_header_submenuitem">Menu item</div>
            <div class="cald_header_submenuitem_hover">Hover</div> 
            <div class="cald_header_submenuitem"><nobr>Extremely wide menu item</nobr></div>
        </div>
      </li>
    </ul>        
</nav>
nav.cald_header {
	background-color: rgba(190,224,238,1.0);
	height: 40px;
	min-height: 5px;
	width: 100%;
	z-index: 1000;
	margin: 0px;
	padding: 0px;
	position: static;
}

.cald_header_menuitem {
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: none;
	text-align: center;
	vertical-align: middle;
}

.cald_header_menuitem_selected {
	background-color: #72c9e9;
	height: 40px;
	margin: -1px;
	padding: 10px 20px;
	border: none;
	text-align: center;
	vertical-align: middle;
	color: white;
	font-weight: bold;
}

.cald_header_menuitem_hover {
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: none;
	text-align: center;
	vertical-align: middle;
	color: #636466;
	font-weight: bold;
	position: relative;
}

.cald_header_submenu, .cald_header div .cald_header_submenu {
	background-color: #bee0ee;
	padding: 0px 0px;
	box-shadow: 3px 5px 12px 0px rgba(0,0,0,0.35);
	position: absolute;
	top: 40px;
	left: 0px;
	font-weight: normal;
	margin: -2px;
}

.cald_header_submenuitem {
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
}

.cald_header_submenuitem_hover {
	background-color: #72c9e9;
	color: white;
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
	position: relative;
}

Mega Menu

Headings and separators should not allow hover.

Visual Spec in progress. TBD
<!-- Logo header not shown here -->
<nav class="cald_header">
    <ul class="nav nav-pills">
      <li role="presentation" class="cald_header_menuitem cald_header_mega cald_header_menuitem_hover">CATEGORY
        <div class="cald_header_megamenu" style="width: 217px;">
            <div class="cald_header_megacontainer">
                <div class="cald_header_submenuitem cald_header_submenuheading">Heading</div>
                <div class="cald_header_submenuitem">Menu item</div>
                <div class="cald_header_submenuitem_hover">Hover</div> 
                <div class="cald_header_submenuitem">Menu item</div>
                <div class="cald_header_submenuitem">Menu item</div>
                <div class="cald_header_submenuitem">Menu item</div>
            </div>
            <div class="cald_header_megacontainer">
                <div class="cald_header_submenuitem cald_header_submenuheading">Heading</div>
                <div class="cald_header_submenuitem">Menu item</div>
                <div class="cald_header_submenuitem">Menu item</div>
                <div class="cald_header_submenuitem">Menu item</div> 
                <hr>
                <div class="cald_header_submenuitem">Menu item</div> 
            </div>
        </div>
      </li>
    </ul>        
</nav>
nav.cald_header {
	background-color: rgba(190,224,238,1.0);
	height: 40px;
	min-height: 5px;
	width: 100%;
	z-index: 1000;
	margin: 0px;
	padding: 0px;
	position: static;
}

.cald_header_menuitem {
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: none;
	text-align: center;
	vertical-align: middle;
}

.cald_header_menuitem_selected {
	background-color: #72c9e9;
	height: 40px;
	margin: -1px;
	padding: 10px 20px;
	border: none;
	text-align: center;
	vertical-align: middle;
	color: white;
	font-weight: bold;
}

.cald_header_menuitem_hover {
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: none;
	text-align: center;
	vertical-align: middle;
	color: #636466;
	font-weight: bold;
	position: relative;
}

.cald_header_submenu, .cald_header div .cald_header_submenu {
	background-color: #bee0ee;
	padding: 0px 0px;
	box-shadow: 3px 5px 12px 0px rgba(0,0,0,0.35);
	position: absolute;
	top: 40px;
	left: 0px;
	font-weight: normal;
	margin: -2px;
}

li.cald_header_megamenu {
	position: relative;
}

.cald_header_megamenu {
	background-color: #bee0ee;
	padding: 0px 0px;
	display: inline-block;
	box-shadow: 3px 5px 12px 0px rgba(0,0,0,0.35);
	position: absolute;
	top: 38px;
	left: 0px;
	font-weight: normal;
}

li.cald_header_mega {
	position: relative;
	box-shadow: none;
}

.cald_header_megacontainer {
	top: 39px;
	display: inline-block;
}

.cald_header_submenuheading {
	font-style: italic;
}

.cald_header_submenuitem {
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
}

.cald_header_submenuitem_hover {
	background-color: #72c9e9;
	color: white;
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
	position: relative;
}

In-Page Menu

Menu item
Selected
Menu item
Hover
Menu item
Selected page contents.
Visual Spec in progress. TBD
<div class="cald_menu_inpage">
    <div class="cald_header_submenuitem">Menu item</div>
    <div class="cald_header_submenuitem_selected">Selected<div class="cald_menu_pointer_right"></div></div>
    <div class="cald_header_submenuitem">Menu item</div>
    <div class="cald_header_submenuitem_hover">Hover</div>
    <div class="cald_header_submenuitem">Menu item</div>
</div>
<div class="cald_page_contents">Selected page contents.</div>
.cald_header_submenuitem {
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
}

.cald_header_submenuitem_hover {
	background-color: #72c9e9;
	color: white;
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
	position: relative;
}

.cald_header_submenuitem_selected {
	background-color: #bee0ee;
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
	position: relative;
}

.cald_menu_inpage {
	display: inline-block; 
	background-color: #f2f2f2;
}

.cald_menu_pointer_right {
	background-color: #72c9e9;
	height: 40px;
	width: 20px;
	margin: 0px;
	border-top: solid 20px white;
	border-bottom: solid 20px white;
	border-left: solid 10px #bee0ee;
	border-radius: 0px;
	position: absolute;
	top: 0px;
	right: -20px;
}

.cald_page_contents {
	display: inline-block;
}

Context Menu

[Object clicked on]
Menu item
Hover
Menu item
Menu item
Visual Spec in progress. TBD
<div class="cald_context_menu">
    <div class="cald_header_submenuitem cald_menu_compact">Menu item</div>
    <div class="cald_header_submenuitem_hover cald_menu_compact">Hover</div>
    <div class="cald_header_submenuitem cald_menu_compact">Menu item</div>
    <div class="cald_header_submenuitem cald_menu_compact">Menu item</div>
</div>
.cald_header_submenuitem {
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
}

.cald_header_submenuitem_hover {
	background-color: #72c9e9;
	color: white;
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
	position: relative;
}

.cald_header_submenuitem_selected {
	background-color: #bee0ee;
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
	position: relative;
}

.cald_menu_compact {
	padding: 5px 20px;
	height: 30px !important;
}

Headings

Page content needs to be visually prioritized based on frequency of use, or average duration of use per session, or sequence of tasks within a user's workflow. To aid in this, there are primary, secondary, tertiary styles. View an example of all these styles applied.

There should only be one primary section per page. Avoid more than one secondary heading also. There shouldn't be more than 2-3 tertiary headings. Use the alternate heading for any additional sections. The subsection is for callout panels, details, explanations, etc.

Primary Heading

Primary content

Secondary Heading

Secondary content

Tertiary Heading

Tertiary content

Alternate Heading

Additional content

Subsection Heading

Subsection / details

Visual Spec in progress. TBD
<h1 class="cald_header">Primary Heading</h1>

<h2 class="cald_header">Secondary Heading</h2>

<h3 class="cald_header">Tertiary Heading</h3>

<h4 class="cald_header">Alternate Heading</h4>

<div class="cald_subsection">
    <h5 class="cald_header">Subsection Heading</h5>
</div>
h1.cald_header {
	background-color: black;
	color: white;
	padding: 10px;
	font-size: 1em;
	margin: -10px -10px 10px -10px;
}

h2.cald_header {
	background-color: #00A8E3;
	color: white;
	padding: 10px;
	font-size: 1em;
	margin: -10px -10px 10px -10px;
}

h3.cald_header {
	background-color: #d9d9d9;
	padding: 10px;
	font-size: 1em;
	margin: -10px -10px 10px -10px;
}

h4.cald_header {
	border-bottom: solid 1px #bfbfbf;
	padding: 10px;
	padding-bottom: 9px;
	font-size: 1em;
	margin: -10px -10px 10px -10px;
}

h5.cald_header  {
	background-color: #f3f3f3;
	font-size: 1em;
	margin: 0px 0px 10px 0px;
	font-weight: bold;
}

.cald_subsection  {
	background-color: #f3f3f3;
	padding: 10px;
	margin: 0px;
}

Grids

Like sections of a page, grids and lists need to be visually prioritized based on frequency of use, or average duration of use per session, or sequence of tasks within a user's workflow. To aid in this, there are primary, secondary, tertiary grid styles.

Primary Grid

Usage: one per page

Banded
Heading Heading
Non-banded row Data cell
Banded row Data cell
Non-banded row Data cell
Banded row Data cell
Non-banded row Data cell
Hover row Data cell
Selected row Data cell
Bordered
Heading Heading
Data cell Data cell
Data cell Data cell
Data cell Data cell
Data cell Data cell
Data cell Data cell
Hover row Data cell
Selected row Data cell
Visual Spec in progress. TBD
<-- Primary Grid - banded -->
<table class="cald_table cald_primary cald_banded">
    <tr class="cald_tr_heading ">
        <th>Heading</th>
        <th>Heading</th>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_even">
        <td>Banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_even">
        <td>Banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_hover">
        <td>Hover row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_selected">
        <td>Selected row</td>
        <td>Data cell</td>
    </tr>
</table>

<-- Primary Grid - bordered -->
<table class="cald_table cald_primary">
    <tr class="cald_tr_heading">
        <th>Heading</th>
        <th>Heading</th>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_hover">
        <td>Hover row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_selected">
        <td>Selected row</td>
        <td>Data cell</td>
    </tr>
</table>
.cald_table th, .cald_table td {
	padding: 5px 5px 4px 5px;
}

.cald_tr_heading, .cald_tr_cells {
	border-bottom: solid 1px #bfbfbf;
	padding: 5px 5px 4px 5px;
}

.cald_banded .cald_tr_heading, .cald_banded .cald_tr_cells {
	border: none;
}

.cald_banded th, .cald_banded td {
	border: none;
	padding: 5px;
}

.cald_tr_cells.cald_hover {
	background-color: #FDB823;
}

.cald_tr_cells.cald_selected {
	background-color: #fee1a9;
}

.cald_primary .cald_tr_heading {
	background-color: black;
	color: white;
}

.cald_primary.cald_banded .cald_tr_cells.cald_even, .cald_primary_section .cald_alternate.cald_banded .cald_tr_cells.cald_even {
	background-color: #d3eef9;
}

Secondary Grid

Usage: one per page

Banded
Heading Heading
Non-banded row Data cell
Banded row Data cell
Non-banded row Data cell
Banded row Data cell
Non-banded row Data cell
Hover row Data cell
Selected row Data cell
Bordered
Heading Heading
Data cell Data cell
Data cell Data cell
Data cell Data cell
Data cell Data cell
Data cell Data cell
Hover row Data cell
Selected row Data cell
Visual Spec in progress. TBD
<-- Secondary Grid - banded -->
<table class="cald_table cald_secondary cald_banded">
    <tr class="cald_tr_heading ">
        <th>Heading</th>
        <th>Heading</th>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_even">
        <td>Banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_even">
        <td>Banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_hover">
        <td>Hover row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_selected">
        <td>Selected row</td>
        <td>Data cell</td>
    </tr>
</table>

<-- Secondary Grid - bordered -->
<table class="cald_table cald_secondary">
    <tr class="cald_tr_heading">
        <th>Heading</th>
        <th>Heading</th>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_hover">
        <td>Hover row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_selected">
        <td>Selected row</td>
        <td>Data cell</td>
    </tr>
</table>
.cald_table th, .cald_table td {
	padding: 5px 5px 4px 5px;
}

.cald_tr_heading, .cald_tr_cells {
	border-bottom: solid 1px #bfbfbf;
	padding: 5px 5px 4px 5px;
}

.cald_banded .cald_tr_heading, .cald_banded .cald_tr_cells {
	border: none;
}

.cald_banded th, .cald_banded td {
	border: none;
	padding: 5px;
}

.cald_tr_cells.cald_hover {
	background-color: #FDB823;
}

.cald_tr_cells.cald_selected {
	background-color: #fee1a9;
}

.cald_secondary .cald_tr_heading {
	background-color: #00A8E3;
	color: white;
}

.cald_secondary.cald_banded .cald_tr_cells.cald_even {
	background-color: #ececec;
}

Tertiary Grid

Usage: try to avoid more than 2-3 per page

Banded
Heading Heading
Non-banded row Data cell
Banded row Data cell
Non-banded row Data cell
Banded row Data cell
Non-banded row Data cell
Hover row Data cell
Selected row Data cell
Bordered
Heading Heading
Data cell Data cell
Data cell Data cell
Data cell Data cell
Data cell Data cell
Data cell Data cell
Hover row Data cell
Selected row Data cell
Visual Spec in progress. TBD
<-- Tertiary Grid - banded -->
<table class="cald_table cald_tertiary cald_banded">
    <tr class="cald_tr_heading ">
        <th>Heading</th>
        <th>Heading</th>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_even">
        <td>Banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_even">
        <td>Banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_hover">
        <td>Hover row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_selected">
        <td>Selected row</td>
        <td>Data cell</td>
    </tr>
</table>

<-- Tertiary Grid - bordered -->
<table class="cald_table cald_tertiary">
    <tr class="cald_tr_heading">
        <th>Heading</th>
        <th>Heading</th>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_hover">
        <td>Hover row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_selected">
        <td>Selected row</td>
        <td>Data cell</td>
    </tr>
</table>
.cald_table th, .cald_table td {
	padding: 5px 5px 4px 5px;
}

.cald_tr_heading, .cald_tr_cells {
	border-bottom: solid 1px #bfbfbf;
	padding: 5px 5px 4px 5px;
}

.cald_banded .cald_tr_heading, .cald_banded .cald_tr_cells {
	border: none;
}

.cald_banded th, .cald_banded td {
	border: none;
	padding: 5px;
}

.cald_tr_cells.cald_hover {
	background-color: #FDB823;
}

.cald_tr_cells.cald_selected {
	background-color: #fee1a9;
}

.cald_tertiary .cald_tr_heading {
	background-color: #d9d9d9;
}

.cald_tertiary.cald_banded .cald_tr_cells.cald_even {
	background-color: #ececec;
}

Alternate Grid

Usage: for all other tables on a page, or combine with an appropriate heading with buttons below the heading to create tables with a toolbar. See example.

Banded
Heading Heading
Non-banded row Data cell
Banded row Data cell
Non-banded row Data cell
Banded row Data cell
Non-banded row Data cell
Hover row Data cell
Selected row Data cell
Bordered
Heading Heading
Data cell Data cell
Data cell Data cell
Data cell Data cell
Data cell Data cell
Data cell Data cell
Hover row Data cell
Selected row Data cell
Visual Spec in progress. TBD
<-- Alternate Grid - banded -->
<table class="cald_table cald_alternate cald_banded">
    <tr class="cald_tr_heading ">
        <th>Heading</th>
        <th>Heading</th>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_even">
        <td>Banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_even">
        <td>Banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td>Non-banded row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_hover">
        <td>Hover row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_selected">
        <td>Selected row</td>
        <td>Data cell</td>
    </tr>
</table>

<-- Alternate Grid - bordered -->
<table class="cald_table cald_alternate">
    <tr class="cald_tr_heading">
        <th>Heading</th>
        <th>Heading</th>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells">
        <td>Data cell</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_hover">
        <td>Hover row</td>
        <td>Data cell</td>
    </tr>
    <tr class="cald_tr_cells cald_selected">
        <td>Selected row</td>
        <td>Data cell</td>
    </tr>
</table>
.cald_table th, .cald_table td {
	padding: 5px 5px 4px 5px;
}

.cald_tr_heading, .cald_tr_cells {
	border-bottom: solid 1px #bfbfbf;
	padding: 5px 5px 4px 5px;
}

.cald_banded .cald_tr_heading, .cald_banded .cald_tr_cells {
	border: none;
}

.cald_banded th, .cald_banded td {
	border: none;
	padding: 5px;
}

.cald_tr_cells.cald_hover {
	background-color: #FDB823;
}

.cald_tr_cells.cald_selected {
	background-color: #fee1a9;
}

.cald_alternate .cald_tr_heading {
	border-bottom: solid 1px #bfbfbf;
	padding-bottom: 4px;
}

.cald_alternate.cald_banded .cald_tr_cells.cald_even {
	background-color: #ececec;
}

Grid With A Toolbar

Reserve a row space for toolbar actions and filters. Use text for actions as much as feasible. For very common operations that have a well-known metaphor, an icon button is acceptable. If an action will be used frequently, then it should be a text-based button to make it a larger target, possibly style it as a primary action if that is the case.

Page Heading Used As Grid Heading

|
Heading Heading Heading
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Hover row Data cell Data cell
Selected row Data cell Data cell

Forms

Inputs and their labels should be lined up on a grid system to make them easier to visually scan and locate a particular field on a page. Inputs should be sized appropriately for the expected value. This further helps visually distinguish specific inputs and avoid errors by users attempting to put the wrong value in the incorrect field simply because all the inputs were the same size. Inputs should be seeded with valid defaults as much as possible so that potentially the user could simply hit submit without having to modify any inputs.

Labels primarily should be oriented above the input they identify to allow for translation text expansion and to maintain a uniform grid pattern, regardless of label length, along the left (or right margin depending on language direction) for easy visual scanning. The rare exception might be a login where there are only 2-3 inputs and whitespace, visual scanning and readability are not at risk. Sufficient whitespace should be used above form labels to ensure the label is only visually associated with the one input it identifies (if there are two inputs equidistant between a label, it can be ambiguous which field the label is identifying).

Mobile

Desktop




Button Styles

Refer to the button alignment section for reference.

Button Alignment

This section describes alignment of various buttons in various situations.

Short Form

Buttons aligned bottom right, primary far right.

Long Page (where buttons would have ended up off-screen)

Buttons pinned top right (always visible), primary far right.

Long Page with Search / Filter This is an exception

This is a different pattern as the buttons here are intended as a toolbar for a page and not a form submit mechanism. Buttons pinned top left (always visible), primary far left. Search / filter always top right.

Heading Heading Heading
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Non-banded row Data cell Data cell
Banded row Data cell Data cell
Non-banded row Data cell Data cell
Banded row Data cell Data cell

Dialogs and Mobile

Buttons centered (always visible), primary right. This puts the actions in proper proximity on screen for thumb / hand-held usage.

Visual Spec in progress. TBD
<!-- STANDARD BUTTON BAR - ALIGNED RIGHT -->
<div class="cald_button_bar">
    <button class="btn btn-default cald_3D_button_default" disabled>Disabled</button>
    <button class="btn btn-default cald_3D_button_default">Normal</button>
    <button class="btn btn-primary cald_3D_button_primary">Primary</button>
</div>

<!-- EXCEPTION BUTTON BAR WITH FILTER - ALIGNED LEFT -->
<div class="cald_button_bar_left">
    <button class="btn btn-primary cald_3D_button_primary">Primary</button>
    <button class="btn btn-default cald_3D_button_default">Normal</button>
    <button class="btn btn-default cald_3D_button_default" disabled>Disabled</button>
    <input placeholder="Filter" class="pull-right form-control" size="25" style="width: 15em;">
</div>

<!-- STANDARD DIALOG / MOBILE BUTTON BAR - CENTERED -->
<div class=" cald_dialog_buttonbar">
    <button class="btn btn-default cald_3D_button_default" disabled>Disabled</button>
    <button class="btn btn-default cald_3D_button_default">Normal</button>
    <button class="btn btn-primary cald_3D_button_primary">Primary</button>
</div>
.cald_dialog_buttonbar {
	text-align: center;
	vertical-align: middle;
	width: 100%;
	padding: 20px;
	padding-bottom: 0px;
}

.cald_button_bar {
	margin-top: 2em;
	text-align: right;
}

.cald_button_bar_left {
	margin-top: 2em;
	text-align: left;
}

.btn.btn-primary.cald_interactive {
	box-shadow: none; 
	background:-webkit-linear-gradient(#337ab7,#337ab7);
	background:linear-gradient(#337ab7,#337ab7);
}

.btn.btn-default.cald_interactive {
	box-shadow: none; 
	background:-webkit-linear-gradient(#ffffff,#ffffff);
	background:linear-gradient(#ffffff,#ffffff);
}

.btn.btn-primary.cald_interactive:hover, .btn.btn-primary.cald_interactive:active {
	box-shadow: none; 
	background:-webkit-linear-gradient(#337ab7,#337ab7);
	background:linear-gradient(#337ab7,#337ab7);
}

.btn.btn-default.cald_interactive:hover, .btn.btn-default.cald_interactive:active {
	box-shadow: none; 
	background:-webkit-linear-gradient(#ffffff,#ffffff);
	background:linear-gradient(#ffffff,#ffffff);
}

.btn.btn-default.cald_interactive:disabled {
	box-shadow: none; 
	background:-webkit-linear-gradient(#dddddd,#dddddd);
	background:linear-gradient(#dddddd,#dddddd);
}

.cald_3D_button_primary {
	border-radius: 5px; 
	box-shadow:0 0 3px 0px; 
	background:-webkit-linear-gradient(#47a9ff,#337ab7);
	background:linear-gradient(#47a9ff,#337ab7);
}

.cald_3D_button_default {
	background:-webkit-linear-gradient(#ffffff,#dddddd);
	background:linear-gradient(#ffffff,#dddddd);
	border-radius: 5px;
}

.cald_3D_button_primary:hover, .cald_3D_button_primary:active {
	border-radius: 5px; 
	box-shadow:0 0 3px 0px; 
	background:-webkit-linear-gradient(#337ab7,#47a9ff);
	background:linear-gradient(#337ab7,#47a9ff);
}

.cald_3D_button_default:hover, .cald_3D_button_default:active {
	background:-webkit-linear-gradient(#dddddd,#ffffff);
	background:linear-gradient(#dddddd,#ffffff);
	border-radius: 5px;
}

.cald_3D_button_default:disabled {
	background:-webkit-linear-gradient(#ececec,#dddddd);
	background:linear-gradient(#ececec,#dddddd);
	color: #636466;
}

Input Layout

If a well-known layout pattern for a set inputs is known (e.g. addresses) it should be used.

Required Fields

The 'required' attribute should be set and the word 'Required' should be parenthetically suffixed to the label for the field. If all inputs in a form or page are required, there only needs to be a note to that effect at the start of the form. If only a few inputs are required, those inputs should be marked as required individually. If the majority of the inputs are required with only a few inputs optional, there should be a note at the start of the form that all inputs are required except as noted, and the optional fields marked accordingly.

Marking inputs as required (or optional)

Parenthetically append '(Required)' to the label. Technique should be the same, whether the word is 'Required' or 'Optional'


Form With Only Required Fields

Use a note at the top of the form

All inputs are required

Form With Mostly Required Fields, Few Optional

Use a note at the top of the form and mark the optional fields individually

All inputs are required, except as noted

Form With Few Inputs Required

Mark the required fields individually

Disabling

If a feature is disabled for a user via permissions and there is nothing the user could ever do during a login session to enable the feature, then it should not display on the UI. If removal from the UI of features disabled by permissions would result in an inexplicably blank screen, a human-readable message explaning the absence of any features should be displayed to the user. Otherwise, if the feature is disabled due to conditions during the user session and there are things the user could do to enable the feature, then it should not be hidden, it should be visible though disabled. Inputs and their labels should be disabled together.

Example


Dialogs

The title of a dialog should match the link that launched it. Use the secondary blue heading style for the title bar so the dialog stands out against the page. (Do not use the primary black heading style.) When there are multiple action buttons, the default action should use the 'primary' button style as long as the default action is not destructive and does not require the user to respond to a question. There can be only one default action. Using the primary button style is not required when there is only one action, though it should still have the behavior of a default action (e.g. hitting return without doing anything else first should result in executing the default action) Buttons should be centered in dialogs.

This area represents an entire browser page in the background.

Dialog Title

Dialog contents

Visual Spec in progress. TBD
<div class="cald_content cald_disabled_section">
    This area represents an entire browser page in the background.
    <div class="cald_dialog cald_content" id="example_dialog" style="width: 400px;">
        <h2 class="cald_header">
            Dialog Title
            <span class="glyphicon glyphicon-remove pull-right cald_titlebar_icon" aria-hidden="true"></span>
        </h2>
        <p>Dialog contents</p>
        <form action="javascript:void(0);" class="form-inline cald_dialog_buttonbar">
            <p>
                <button class="btn btn-default cald_3D_button_default">Cancel</button>
                <button class="btn btn-primary cald_3D_button_primary">Default action</button>
            </p>
        </form>
    </div>
</div>
<script language="javascript" type="text/javascript">

$(document).ready(function(e) {
    /* Extend the JQuery $() function with a center() method */
    $.fn.center = function() {
        $(this).parent().css("height", $(this).parent().outerHeight());
        $(this).parent().css("width", $(this).parent().outerWidth());
        $(this).parent().css("position", "relative");
        $(this).css("position", "absolute" );
        $(this).css("top", Math.round($(this).parent().outerHeight()/2) - Math.round($(this).outerHeight()/2) + "px");
        $(this).css("left", Math.round($(this).parent().outerWidth()/2) - Math.round($(this).outerWidth()/2) + "px");
    }

    $("#example_dialog").center();
});

</script>
.cald_content {
	background-color: white;
	padding: 20px;
}

.cald_dialog {
	margin:auto auto auto 7%;
	box-shadow: 0px 5px 25px 0px rgba(51,51,51,0.85);
	padding: 10px;
}

.cald_titlebar_icon {
	margin-left: 3px;
}

.cald_dialog_buttonbar {
	text-align: center;
	vertical-align: middle;
	width: 100%;
	padding: 20px;
	padding-bottom: 0px;
}

.cald_disabled_section {
	background: rgba(0,0,0,0.5) !important;
}

h2.cald_header {
	background-color: #00A8E3;
	color: white;
	padding: 10px;
	font-size: 1em;
	margin: -10px -10px 10px -10px;
}

.cald_3D_button_primary {
	border-radius: 5px; 
	box-shadow:0 0 3px 0px; 
	background:-webkit-linear-gradient(#47a9ff,#337ab7);
	background:linear-gradient(#47a9ff,#337ab7);
}

.cald_3D_button_default {
	background:-webkit-linear-gradient(#ffffff,#dddddd);
	background:linear-gradient(#ffffff,#dddddd);
	border-radius: 5px;
}

.cald_3D_button_primary:hover, .cald_3D_button_primary:active {
	border-radius: 5px; 
	box-shadow:0 0 3px 0px; 
	background:-webkit-linear-gradient(#337ab7,#47a9ff);
	background:linear-gradient(#337ab7,#47a9ff);
}

.cald_3D_button_default:hover, .cald_3D_button_default:active {
	background:-webkit-linear-gradient(#dddddd,#ffffff);
	background:linear-gradient(#dddddd,#ffffff);
	border-radius: 5px;
}

Notifications

Notifications should be in human-readable form and provide sufficient detail that a user understands the notice. Avoid surfacing system-generated messages like cryptic back-end object names and event codes that are not meaningful unless it's confirmed the user will recognize the specific message and know what follow up action to take. Notifications should be located on screen and in the area where the user is working or should be looking.

Basic

Info:Page or dialog-level information notification.

Warning:Page or dialog-level warning notification.

Error:Page or dialog-level error notification.

Success:Page or dialog-level success notification.

Visual Spec in progress. TBD
<p class="alert alert-info cald_notification_box"><span class="icon-info2" aria-hidden="true"></span>
<span class="sr-only">Info:</span>Page or dialog-level information notification.</p>

<p class="alert alert-warning cald_notification_box"><span class="icon-warning" aria-hidden="true"></span>
<span class="sr-only">Warning:</span>Page or dialog-level warning notification.</p>

<p class="alert alert-danger cald_notification_box"><span class="icon-minus-circle2" aria-hidden="true"></span>
<span class="sr-only">Error:</span>Page or dialog-level error notification.</p>

<p class="alert alert-success cald_notification_box"><span class="icon-checkmark-circle2" aria-hidden="true"></span>
<span class="sr-only">Success:</span>Page or dialog-level success notification.</p>
/* All other classes are Bootstrap classes */
.cald_notification_box {
	padding: 10px;
	margin: 5px;
	border-radius: 0px;
}

In-page Notification

Application Name
Username

Warning: The application is currently working in 'offline' mode.


The remainder of the page contents...

Dialog Notification

This area represents an entire browser page in the background.

Success

Success:The new position was successfully saved.

Toaster Notification

A toaster-style notification is one that slides in from the edge of the window and should automatically dismiss itself after sufficient time to read the message. Warning/error type messages should require the user to dismiss them if the user will be unable to proceed without addressing the issue cited in the message.

This area represents an entire browser page in the background.

Toaster

Warning message one.


Warning message two.


Warning message three.

Visual Spec in progress. TBD
<!-- widths and heights need to be adjusted per usage -->
<div class="cald_bkgd" style="position: relative;height: 250px;">
    <div class="cald_content" style="width:100%;height: 100%;">
        This area represents an entire browser page in the background.
        <div class="alert-warning cald_toaster">
            <h3 class="cald_header">Toaster<span class="glyphicon glyphicon-remove pull-right cald_titlebar_icon" aria-hidden="true"></span></h3>
            <div class="cald_toaster_msgs" style="width:173px;height: 91px;">
                <p>Warning message one.</p>
                <hr>
                <p>Warning message two.</p>
                <hr>
                <p>Warning message three.</p>
            </div>
        </div>
    </div>
</div>
/* width, height and position need to be adjusted per usage */
.cald_toaster {
	width:175px;
	height: 130px;
	position: absolute;
	right: 10px;
	bottom: 20px;
	box-shadow: 0px 7px 15px 0px rgba(187,187,187,0.85);
	border: solid 1px #bfbfbf;
	padding: 10px;
}

.cald_toaster_msgs {
	overflow-y: scroll; 
	overflow-x: hidden;
	margin: -10px;
	padding: 10px; 
	font-size: smaller;
}

h3.cald_header {
	background-color: #d9d9d9;
	padding: 10px;
	font-size: 1em;
	margin: -10px -10px 10px -10px;
}

Square Notification

For common success, fail and warning type notification use the reserved traffic lighting colors. Otherwise square notifications should be treated as data visualizations and use the data visualization color palette.

99%

Default

100

Success

50

Warning

0

Error
Visual Spec in progress. TBD
<div class="cald_status_square">
    <h1>99%</h1>
    <span class="cald_status_subtext">Default</span>
</div>

<div class="cald_status_square cald_success">
    <h1>100</h1>
    <span class="cald_status_subtext">Success</span>
</div>

<div class="cald_status_square cald_warning">
    <h1>50</h1>
    <span class="cald_status_subtext">Warning</span>
</div>

<div class="cald_status_square cald_error">
    <h1>0</h1>
    <span class="cald_status_subtext">Error</span>
</div>
.cald_status_square {
    height: 84px;
    width: 84px;
    text-align: center;
    vertical-align: middle;
    padding: 5px;
    margin: 5px;
    color: white;
    display: inline-block;
    background-color: #72c9e9;
}

.cald_status_square h1, .cald_status_number {
    padding: 0px;
    margin: 5px 0px;
    color: white;
    font-weight: normal;
}

.cald_status_square.cald_success {
    background-color: #309030;
}

.cald_status_square.cald_warning {
    background-color: #d9b500;
}

.cald_status_square.cald_error {
    background-color: #ad3a3a;
}

.cald_status_subtext {
    font-size: smaller;
}

No Data Notification

Whenever pages, components, grids, charts or other elements load but no data is available, a human-readible message should be displayed explaining the situation and providing instructions or options to take action, if necessary, to correct the problem. Do not use a dialog to notify about no data situations because dialogs can be dismissed and that leaves the area with no data blank and without explanation (if the user leaves and comes back, or prematurely dismissed the dialog without reading how to take corrective action.)

Page

Application Name
Username

Session Expired

Error: The page contents cannot be displayed because the login session has expired. Log in again to access this page.

Grid

Grid Heading

|
Column Heading Column Heading Column Heading

No Matching Results

Info: There are no records matching the current query. Try revising your query using less query terms or try partial query terms with the wildcard character * to retrieve more results.

Charts

No Data To Display

Warning: There is no data available to display for the period, product or persons selected.
Visual Spec in progress. TBD
<!-- PAGE-LEVEL NO DATA NOTIFICATION -->
<div class="alert alert-danger cald_notification_box">
    <h2>Session Expired</h2>
    <span class="glyphicon glyphicon-alert" aria-hidden="true"></span>
    <span class="sr-only">Error:</span> The page contents cannot be displayed because the login session has expired.  <a href="javascript:void(0);">Log in</a> again to access this page.
</div>

<!-- GRID NO DATA NOTIFICATION - NOTE THE COLSPAN FOR THE MESSAGE -->
<table class="cald_table cald_alternate cald_banded" style="width: 100%;">
    <tr class="cald_tr_heading ">
        <th>Column Heading</th>
        <th>Column Heading</th>
        <th>Column Heading</th>
    </tr>
    <tr class="cald_tr_cells cald_odd">
        <td colspan="3">

            <div class="alert alert-info cald_notification_box">
                <h2>No Matching Results</h2>
                <span class="icon-info2" aria-hidden="true"></span>
                <span class="sr-only">Info:</span> There are no records matching the current query.  Try revising your query using less query terms or try partial query terms with the wildcard character * to retrieve more results.
            </div>

        </td>
    </tr>
</table>

<!-- CHART NO DATA NOTIFICATION - NOTE THE DIV WRAPPER AROUND THE CHART AND SEPARATE MESSAGE -->
<div>
    <div id="chart"></div>
    <div id="cald_no_data_msg">
        <div class="alert alert-warning cald_notification_box">
            <h3>No Data To Display</h3>
            <span class="icon-warning" aria-hidden="true"></span>
            <span class="sr-only">Warning:</span> There is no data available to display for the period, product or persons selected.
        </div>
    </div>
</div>

/* The other classes are from Bootstrap and JQuery */
.cald_notification_box {
	padding: 10px;
	margin: 5px;
	border-radius: 0px;
}

Error Notification

Error messages should provide instructions for recovery from the error. Avoid surfacing system-generated messages like stack traces to the user unless it's confirmed they will recognize the specific message and know what follow up action to take. Avoid alarming, negative messages for situations where the user can easily recover.

An integer value is required


Error:The username or password was incorrect.


Warning: The transaction details could not be loaded because the database server could not be contacted. Wait 10 minutes and try again, or contact someone@example.com to restart the database server.

Visual Spec in progress. TBD

<form action="javascript:void(0);">
    <input class="" value=" Some text value">
    <span class="icon-minus-circle2 text-danger" aria-hidden="true"></span><span class="text-danger"> An integer value is required</span>
</form>

<p class="alert alert-danger cald_notification_box"><span class="icon-minus-circle2" aria-hidden="true"></span>
<span class="sr-only">Error:</span>The username or password was incorrect.</p>

<p class="alert alert-warning cald_notification_box"><span class="icon-warning" aria-hidden="true"></span>
<span class="sr-only">Warning:</span> The transaction details could not be loaded because the database server could not be contacted.  Wait 10 minutes and try again, or contact someone@example.com to restart the database server.</p>
                                
/* All other classes are Bootstrap classes */
.cald_notification_box {
	padding: 10px;
	margin: 5px;
	border-radius: 0px;
}

Email Notification

The actual HTML template is here. In use, it should look like the screen capture below.

Visual Spec in progress. TBD
<!DOCTYPE html>
<html>
<head>

	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<meta name="description" content="Email notification for CallidusCloud Lead To Money Suite">
	<meta name="author" content="Balu Gillella, Kevin Lynn Brown">

	<title>Lead to Money Suite - CallidusCloud</title>

	<!-- Bootstrap core CSS -->
	<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">

	<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
	<!--[if lt IE 9]>
	<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
	<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
	<![endif]-->

	<style type="text/css">
		/* CLIENT-SPECIFIC STYLES */
		#outlook a{padding:0;} /* Force Outlook to provide a "view in browser" message */
		.ReadMsgBody{width:100%;} .ExternalClass{width:100%;} /* Force Hotmail to display emails at full width */
		.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing */
		body, table, td, a{-webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;} /* Prevent WebKit and Windows mobile changing default text sizes */
		table, td{mso-table-lspace:0pt; mso-table-rspace:0pt;} /* Remove spacing between tables in Outlook 2007 and up */
		img{-ms-interpolation-mode:bicubic;} /* Allow smoother rendering of resized image in Internet Explorer */

		/* RESET STYLES */
		body{margin:0; padding:0;}
		img{border:0; height:auto; line-height:100%; outline:none; text-decoration:none;}
		table{border-collapse:collapse !important;}
		body{height:100% !important; margin:0; padding:0; width:100% !important;}

		/* iOS BLUE LINKS */
		.appleBody a {color:#68440a; text-decoration: none;}
		.appleFooter a {color:#999999; text-decoration: none;}

		/* MOBILE STYLES */
		@media screen and (max-width: 525px) and (orientation: landscape) and (orientation: portrait) {

		/* ALLOWS FOR FLUID TABLES */
		table[class="wrapper"]{
		width:100% !important;
		}

		/* ADJUSTS LAYOUT OF LOGO IMAGE */
		td[class="logo"]{
		text-align: left;
		padding: 20px 0 20px 0 !important;
		}

		td[class="logo"] img{
		margin:0 auto!important;
		}

		/* USE THESE CLASSES TO HIDE CONTENT ON MOBILE */
		td[class="mobile-hide"]{
		display:none;
		}

		img[class="mobile-hide"]{
		display: none !important;
		}

		img[class="img-max"]{
		max-width: 100% !important;
		height:auto !important;
		}

		/* FULL-WIDTH TABLES */
		table[class="responsive-table"]{
		width:100%!important;
		}

		/* UTILITY CLASSES FOR ADJUSTING PADDING ON MOBILE */
		td[class="padding"]{
		padding: 10px 5% 15px 5% !important;
		}

		td[class="padding-copy"]{
		padding: 10px 5% 10px 5% !important;
		text-align: left !important;
		}

		td[class="padding-meta"]{
		padding: 30px 5% 0px 5% !important;
		text-align: center;
		}

		td[class="no-pad"]{
		padding: 0 0 20px 0 !important;
		}

		td[class="no-padding"]{
		padding: 0 !important;
		}

		td[class="section-padding"]{
		padding: 10px 15px 10px 15px !important;
		}

		}

		H1, H2, H3, H4, H5, H6 {
		color: black;
		}

		A, A:hover, A:active {
		color: #1ea9e0;
		}

		.cald_navbar {
		background: none;
		background-color: white;
		border: none;
		border-bottom: solid 5px #00A8E3;
		border-radius: 0px;
		height: 69px;
		color: #636466;
		}

		TABLE.cald_icon_div {
		width: 100% !important;
		}

		.cald_icon_div {
		text-align:center;
		margin-bottom:10px;
		}

		.pull-right.cald_icon_div {
		text-align: right;
		}

		.cald_header_section {
		text-align: center;
		vertical-align: middle;
		border: none !important;
		border-radius: none !important;
		}

		.cald_header_section_right {
		text-align: right;
		vertical-align: middle;
		padding: 20px;
		}

		.cald_header_nomenubar {
		background-color: rgb(190, 224, 238);
		margin: 5px 0;
		height: 5px;
		float: left;
		width: 100%;
		}

	</style>

</head>
<body style="margin: 0; padding: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; color: #636466 !important; font-size: 15px; height:100% !important; margin:0; padding:0; width:100%;">

<!-- HEADER -->
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="border-collapse:collapse; background-color: white;">
	<tr>
		<td width="100" style="text-align:center; padding: 0 0 10px 0;">
			<div class="navbar navbar-default cald_navbar" style="min-height: 65px; margin-bottom: 0px; margin-top: 5px; border-width: medium medium 5px; border-style: none none solid; border-image: none; border-color: rgb(231, 231, 231) rgb(231, 231, 231) rgb(0, 168, 227); background: transparent none repeat scroll 0% 0%; border-radius: 0px; color: rgb(99, 100, 102); height: 65px;">
				<img src="http://calliduscloud.com/files/2012/09/250.png" width="160" height="60" style="vertical-align:middle; background-position: 0 -82px; background-repeat: no-repeat; background-size: 60% auto; display: inline-block; height: 60px; margin: -3px auto 8px; width: 160px;" border="0">
			</div>
			<div class="col-md-12 col-xs-12 cald_header_nomenubar" id="bottom_div" style="width: 100%; background-color: rgb(190, 224, 238); float: left; height: 5px; margin: 0;"></div>
		</td>
	</tr>
</table>

<!-- GREETING SECTION -->
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="border-collapse:collapse; margin-top: 1%; margin-right: 15%">
	<tr>
		<td class="padding-copy" style="text-align:left;">
			<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;">Hello {{username}},</span>
		</td>
	</tr>
	<tr>
		<td class="padding-copy" style="text-align:left;">
			<h1 style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 36px;font-weight: 500;line-height: 1.1;color: black;margin-top: 20px;margin-bottom: 10px;">{{Email Subject/Message}}</h1>
		</td>
	</tr>
</table>

<!-- LINK SECTION -->
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin-bottom: 20px; border-collapse:collapse">
	<tr>
		<td class="padding-copy" style="text-align:left;">
			<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;">
				Please use this <a href="http://example.com/path/take_action?id=0123456789" style="font-size: 1.5em;font-weight: bold;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;background-color: transparent;color: #1ea9e0;text-decoration: underline;">link</a> to {{take action}} within the next 24 hours.
			</p>
			<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;">
				Alternatively, you can copy this URL into your web browser's address bar.  Be sure to copy the entire string of characters.
			</p>
			<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;">
				<a href="http://example.com/path/take_action?id=0123456789" style="background-color: transparent;color: #1ea9e0;text-decoration: underline;">http://example.com/path/take_action?id=0123456789</a>
			</p>
		</td>
	</tr>
</table>

<p style="orphans: 3;widows: 3;margin: 0 0 10px; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;">Thank you,</p>
<h3 style="line-height: 1.1; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 500; font-size: 24px; color: black; box-sizing: border-box;">CallidusCloud</h3>
<p style="orphans: 3;widows: 3;margin: 0 0 10px;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;">4140 Dublin Boulevard, Suite 400<br>
	Dublin, CA  94568<br>
	+1 (925) 251 2200<br>
	<a href="mailto:info@calliduscloud.com" style="background-color: transparent;color: #1ea9e0;text-decoration: underline;">info@calliduscloud.com</a>
</p>

</body>
</html>
/* All CSS must be contained in the HTML email template file. */
/* A number of styles are directly on HTML tags.  See the HTML tab for more. */

/* CLIENT-SPECIFIC STYLES */
#outlook a{padding:0;} /* Force Outlook to provide a "view in browser" message */
.ReadMsgBody{width:100%;} .ExternalClass{width:100%;} /* Force Hotmail to display emails at full width */
.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing */
body, table, td, a{-webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;} /* Prevent WebKit and Windows mobile changing default text sizes */
table, td{mso-table-lspace:0pt; mso-table-rspace:0pt;} /* Remove spacing between tables in Outlook 2007 and up */
img{-ms-interpolation-mode:bicubic;} /* Allow smoother rendering of resized image in Internet Explorer */

/* RESET STYLES */
body{margin:0; padding:0;}
img{border:0; height:auto; line-height:100%; outline:none; text-decoration:none;}
table{border-collapse:collapse !important;}
body{height:100% !important; margin:0; padding:0; width:100% !important;}

/* iOS BLUE LINKS */
.appleBody a {color:#68440a; text-decoration: none;}
.appleFooter a {color:#999999; text-decoration: none;}

/* MOBILE STYLES */
@media screen and (max-width: 525px) and (orientation: landscape) and (orientation: portrait) {

    /* ALLOWS FOR FLUID TABLES */
    table[class="wrapper"]{
        width:100% !important;
    }
    
    /* ADJUSTS LAYOUT OF LOGO IMAGE */
    td[class="logo"]{
        text-align: left;
        padding: 20px 0 20px 0 !important;
    }
    
    td[class="logo"] img{
        margin:0 auto!important;
    }
    
    /* USE THESE CLASSES TO HIDE CONTENT ON MOBILE */
    td[class="mobile-hide"]{
        display:none;
    }
    
    img[class="mobile-hide"]{
        display: none !important;
    }
    
    img[class="img-max"]{
        max-width: 100% !important;
        height:auto !important;
    }
    
    /* FULL-WIDTH TABLES */
    table[class="responsive-table"]{
        width:100%!important;
    }
    
    /* UTILITY CLASSES FOR ADJUSTING PADDING ON MOBILE */
    td[class="padding"]{
        padding: 10px 5% 15px 5% !important;
    }
    
    td[class="padding-copy"]{
        padding: 10px 5% 10px 5% !important;
        text-align: left !important;
    }
    
    td[class="padding-meta"]{
        padding: 30px 5% 0px 5% !important;
        text-align: center;
    }
    
    td[class="no-pad"]{
        padding: 0 0 20px 0 !important;
    }
    
    td[class="no-padding"]{
        padding: 0 !important;
    }
    
    td[class="section-padding"]{
        padding: 10px 15px 10px 15px !important;
    }

}

H1, H2, H3, H4, H5, H6 {
    color: black;
}

A, A:hover, A:active {
    color: #1ea9e0;
}

.cald_navbar {
    background: none;
    background-color: white;
    border: none;
    border-bottom: solid 5px #00A8E3;
    border-radius: 0px;
    height: 69px;
    color: #636466;
}

TABLE.cald_icon_div {
    width: 100% !important;
}

.cald_icon_div {
    text-align:center;
    margin-bottom:10px;
}

.pull-right.cald_icon_div {
    text-align: right;
}

.cald_header_section {
    text-align: center;
    vertical-align: middle;
    border: none !important;
    border-radius: none !important;
}

.cald_header_section_right {
    text-align: right;
    vertical-align: middle;
    padding: 20px;
}

.cald_header_nomenubar {
    background-color: rgb(190, 224, 238);
    margin: 5px 0;
    height: 5px;
    float: left;
    width: 100%;
}

Progress Indication

Progress indication needs to appear where the user is looking, or where the action is taking place, or if not logical or possible to appear where the user interaction took place, progress indication needs to get the user's attention from where it is displayed.

Usage

  • Progress indication that is less than page or window-level should not obscure other areas of the UI from being readable if possible, or else should allow the user to drag the progress indication aside to view other content.
  • Progress indication should not disable interactivity unless the disabled actions are not valid while the current operation is in progress.
  • If certain interactions are invalid while the current operation is taking place, then either the specific elements (if only a few) or the overall UI should be visually and obviously disabled in appearance. For specific individual components, they each should be disabled individually. Form inputs and their labels should be disabled together. If it's page/dialog/widget-level, e.g. an entire panel, tab, page of the UI to be disabled, then having a transparent gray overlay should be used to cover the background, rather than iterate through everything in the UI and disable each individually when an entire page or window needs disabling.
  • Progress should offer the ability to cancel the operation whenever possible. Cancelling should revert to the previous state the product was in. Avoid other methods of dialog dismissal, like a corner X, as it is unclear to a user if that will cancel the operation or merely hide the dialog - which will leave them with no way to tell an operation is still in progress.
  • Text-based human-readable information about what is happening and how long it will take is advisable as much as possible.
  • Use a progress bar when there is sufficient space and it's possible to show time or number of steps remaining.
  • If a number of individual components in the UI need to load around the same time, it would be preferable to treat that as page-level loading with only one progress indicator.
  • Indicators should be an appropriate size for the element that is loading. For example, if loading a page, there shouldn't be only a 16 pixel spinner in the top left corner. Likewise, if loading a simple small list box, the page shouldn't be disabled showing a progress dialog (unless it's invalid to interact with the page while that list is loading).

Timing

If the operation will take...

> 1 second
Show a progress indicator.
> 10 seconds
Show a progress indicator with a general message conveying what is taking place.
> 1 minute
Show a progress indicator with a series of specific messages conveying what is taking place.
> 3 minutes
Show a progress meter with a series of specific messages conveying the steps that are taking place and/or time remaining. The user should be able to cancel the operation.
> 5 minutes
The user should be warned in advance how long the operation will take and have the option to bail out beforehand, as well as cancel during the operation. During the operation, show a progress meter with a series of specific messages conveying the steps that are taking place and time remaining.

Types

There are 4 characteristics that intersect to create the different types: determinate vs. indeterminate (whether the duration is known or not known) and spinner vs. bar. The variations in border thickness are deliberate based on the context where it will be used. Refresh the page to see the examples run.

Loading Spinner

Indeterminate Loading Spinners and Usage (reload page to see in action)

Individual input/component loading when it's not required to block remainder of page interaction. An informative loading message is recommended, but optional if space doesn't permit.

Component or panel loading. For longer duration, and where progress messages are displayed with it.

Panel or tab loading where blocking the panel is necessary (but not the entire page) and a loading message is shown with it.

Page loading where entire page interaction is blocked.

Visual Spec in progress. TBD
<img src="img/Callidus_clouds.png" class="cald_spinner cald_spinner16">

<img src="img/Callidus_clouds.png" class="cald_spinner cald_spinner32">

<img src="img/Callidus_clouds.png" class="cald_spinner cald_spinner64">

<img src="img/Callidus_clouds.png" class="cald_spinner cald_spinner128">
@keyframes bordercolor {
    0% {
        border-top-color: transparent;
        border-right-color: transparent;
        border-bottom-color: transparent;
        border-left-color: transparent;
    }
    25% {
        border-top-color: transparent;
        border-right-color: #00A8E3;
        border-bottom-color: transparent;
        border-left-color: transparent;
    }
    50% {
        border-top-color: transparent;
        border-right-color: transparent;
        border-bottom-color: #9E57A2;
        border-left-color: transparent;
    }
    75% {
        border-top-color: transparent;
        border-right-color: transparent;
        border-bottom-color: transparent;
        border-left-color: #FDB823;
    }
    100% {
        border-top-color: #98C83C;
        border-right-color: transparent;
        border-bottom-color: transparent;
        border-left-color: transparent;
    }
}

.cald_spinner {
    border-radius: 50%;
    border-style: solid;
    border-width: 5px;
    border-color: #98C83C;
    padding: 10px;
    animation-name: bordercolor;
    /* These next two must be set dynamically to control duration */
    animation-duration: 4s;
    animation-iteration-count: 3;
    animation-direction: forward;
    animation-timing-function: linear;
    animation-delay: none;
}

.cald_spinner128 {
    height: 128px;
}

.cald_spinner64 {
    height: 64px;
    border-width: 7px;
}

.cald_spinner32 {
    height: 40px;
    padding: 4px;
    border-width: 5px;
}

.cald_spinner16 {
    height: 16px;
    padding: 8px;
    border-width: 7px;
}

.cald_spinner.cald_done {
    border-color: #98C83C;
    animation: none;
}

Mobile Page Load Bar

This is indeterminate (where duration, percentage or steps are not completely known) and used for page loading where some interaction is still allowed (e.g. launching the main hamburger menu.)

This example is animated. Reload page or switch tabs to replay.
 
App page
Visual Spec in progress. TBD
<header class="cald_header cald_mobile">
    <div class="cald_header">
        <div class="cald_logo" id="cald_logo"></div>
    </div>
</header>
<div class="cald_header_nomenubar cald_progress" style="padding: 0px;">
    <div class="cald_progress_line"> </div>
</div>
header.cald_header.cald_mobile {
    position: static;
    height: 32px;
}

div.cald_header {
    position: relative;
}

.cald_logo {
    background-color: transparent;
    background-image: url("/img/CallidusCloud_logo_product_dark.png");
    background-position: center;
    background-repeat: no-repeat;
    background-size: contain;
    height: 44px;
    width: 117px;
    display: inline-block;
    position: absolute;
    top: 50%;
    left: 50%;
    margin: 10px 10px 10px -58px;
}

.cald_mobile .cald_logo {
    height: 33px;
}

.cald_header_bar.cald_progress {
    margin-left: -15px;
}

/* Only pay attention to the colors here */
/* Keyframes were just to animate the mockup */
@keyframes nomenubar_progresscolor {
    0% {
        background-color: white;
        width: 0px;
    }
    99% {
        background-color: white;
        width: 99%;
    }
    100% {
        background-color: #bee0ee;
        width: 100%;
    }
}

.cald_header_nomenubar.cald_progress {
    background-color: #bee0ee;
    animation: nomenubar_progresscolor 12s ease-in; /* alternate */
    animation-fill-mode: forward;
}

/* Only pay attention to the colors here */
/* Keyframes were just to animate the mockup */
@keyframes background_progresscolor {
    from {
        background-color: #98C83C;
        width: 0px;
    }
    to {
        background-color: #98C83C;
        width: 100%;
    }
}

.cald_progress_line {
    font-size: 1pt;
    background-color: transparent;
    height: 5px;
    width: 0px;
    margin: 0px;
    animation: background_progresscolor 12s ease-in; /* alternate */
    animation-fill-mode: inherit;
}

Progress Meter

This is determinate, when the duration, percentage, or number of steps are known and messages can be presented.

This mockup is static, not animated.

Retrieving column names from database. Step 3 of 5.

 
 
60% complete

Visual Spec in progress. TBD
<div class="cald_progress_meter">
    <p>Retrieving column names from database.  Step 3 of 5.
    <div class="cald_progress_bar_partial">&nbsp;</div><div class="cald_progress_bar_incomplete">&nbsp;</div>60% complete
    </p>
</div>
.cald_progress_meter {
    padding: 20px; 
    border: solid 1px #bfbfbf;
}

.cald_progress_bar_partial {
    display: inline-block;
    min-height: 10px;
    /* Width must be updated dynamically relative to portion complete */
    min-width: 60%;
    background-color: #00A8E3;
    color: white;
    padding-left: 0.25em;
}

.cald_progress_bar_incomplete {
    display: inline-block;
    min-height: 10px;
    /* Width must be updated dynamically relative to portion remaining */
    min-width: 40%;
    background-color: #d9d9d9;
    text-align: right;
}

Component Level (in-page)

Spinner blocking or replacing the component space. Spinner would be replaced with loaded contents after a <1 second delay for the user to see the successful green state. Refresh the page to see the animation run.

This example is animated. Reload page or switch tabs to replay.
Visual Spec in progress. TBD
<!-- The span is for setting loading messages via CSS. -- 
  -- Can be handled other ways in implementation -->
<div class="form-control spinner_line" style="height:40px;">
    <span>
    	<img src="img/Callidus_clouds.png" class="cald_spinner cald_spinner16">
    </span>
</div>
@keyframes bordercolor {
    0% {
        border-top-color: transparent;
        border-right-color: transparent;
        border-bottom-color: transparent;
        border-left-color: transparent;
    }
    25% {
        border-top-color: transparent;
        border-right-color: #00A8E3;
        border-bottom-color: transparent;
        border-left-color: transparent;
    }
    50% {
        border-top-color: transparent;
        border-right-color: transparent;
        border-bottom-color: #9E57A2;
        border-left-color: transparent;
    }
    75% {
        border-top-color: transparent;
        border-right-color: transparent;
        border-bottom-color: transparent;
        border-left-color: #FDB823;
    }
    100% {
        border-top-color: #98C83C;
        border-right-color: transparent;
        border-bottom-color: transparent;
        border-left-color: transparent;
    }
}

.cald_spinner {
    border-radius: 50%;
    border-style: solid;
    border-width: 5px;
    border-color: #98C83C;
    padding: 10px;
    animation-name: bordercolor;
    /* The next two control time remaining */
    animation-duration: 4s;
    animation-iteration-count: 3;
    animation-direction: forward;
    animation-timing-function: linear;
    animation-delay: none;
}

@keyframes progress_message_line {
    from {
        content: " Component is loading...";
    }
    to {
        content: " Component is loading...";
    }
}

.spinner_line span:after {
    content: " Done.";
    color: #636466;
    animation-name: progress_message_line;
    /* The next two control time remaining */
    animation-duration: 4s;
    animation-iteration-count: 3;
}

Panel Level (in-page)

Transparent gray overlay with spinner or progress bar. Overlay popup would dismiss itself (the user should not have to take action to dismiss this type) to reveal the loaded page or panel after a <1 second delay for the user to see the successful green state.

This example stays on screen so you can see the end state. Refresh the page to see the animation run.


Visual Spec in progress. TBD
See Loading Spinner HTML tab.
See Loading Spinner CSS tab.

Page Level (progress dialog)

Transparent gray page overlay with progress dialog on top. Dialog title should say what is in progress. Dialog contents should have details of what actions/steps are currently in progress, and show count of steps completed vs steps total and/or time remaining for overall progress to complete. Avoid using an X in the corner to close the dialog as it is not clear if that will cancel the opration or not, and it leaves the user without a way to see whether an operation is still in progress to find out. Cancel is fine as that is explicit what it will do.

This is example is static, not animated.

This area represents an entire browser page in the background.

Operation ABC In Progress

Retrieving column names from database. Step 3 of 5.

 
 
60% complete

Visual Spec in progress. TBD
See Progress Meter HTML tab.
See Progress Meter CSS tab.

Multiple Dependent Progress Bars

When multiple processes will add up to a total, the total needs to be emphasized more than the constituent processes. Therefore, higher contrast is needed, namely the black font color of heading tags and the darker highlight colors for the main summary/total bar. Do not hide bars as they complete as that changes the layout and makes it difficult to visually track which items are still in progress.

Mockup demonstration of how multiple progress bars should work in all the states during operation (refresh the page to replay the animation)

Installing selected features

 
overall

Feature one
 

Feature two
 

Feature three
 

Visual Spec in progress. TBD
<h2 class="cald_header">Installing selected features</h2>
<!-- The empty spans are for inserting messages -->
<h5 id="cald_install_msg"><span></span></h5>
<div class="cald_progress_bar">
    <div class="cald_feature_total" id="cald_feature_totals"> </div>
</div>
<h6 id="cald_install_pct_total"><span></span> overall</h6>
<hr>
Feature one
<div class="cald_progress_bar">
    <div class="cald_feature" id="cald_feature1"> </div>
</div>
<small id="cald_install_pct1"><span></span></small>
<hr>
Feature two
<div class="cald_progress_bar">
    <div class="cald_feature" id="cald_feature2"> </div>
</div>
<small id="cald_install_pct2"><span></span></small>
<hr>
Feature three
<div class="cald_progress_bar">
    <div class="cald_feature" id="cald_feature3"> </div>
</div>
<small id="cald_install_pct3"><span></span></small>
<form action="javascript:void(0);" class="form-inline cald_dialog_buttonbar">
    <p><button class="btn btn-default cald_3D_button_default">Cancel</button></p>
</form>
h2.cald_header {
    background-color: #00A8E3;
    color: white;
    padding: 10px;
    font-size: 1em;
    margin: -10px -10px 10px -10px;
}

.cald_dialog_buttonbar {
    text-align: center;
    vertical-align: middle;
    width: 100%;
    padding: 20px;
    padding-bottom: 0px;
}

.cald_progress_bar {
    display: inline-block;
    min-height: 10px;
    background-color: #d9d9d9;
    min-width: 100%;
}

/* Only pay attention to the colors here */
/* Keyframes were just to animate the mockup */
@keyframes cald_progress_bar_total {
    0% {
        /* Total in-progress color */
        background-color: #00A8E3;
        min-width: 0%;
    }
    99% {
        background-color: #00A8E3;
        min-width: 99%;
    }
    100% {
        /* Total complete color */
        background-color: #98c83c;
        min-width: 100%;
    }
}

/* Only pay attention to the colors here */
/* Keyframes were just to animate the mockup */
@keyframes cald_progress_bar {
    0% {
        /* Feature in-progress color */
        background-color: #72c9e9;
        min-width: 0%;
    }
    99% {
        background-color: #72c9e9;
        min-width: 99%;
    }
    100% {
        /* Feature complete color */
        background-color: #bde573;
        min-width: 100%;
    }
}

.cald_feature_total {
    display: inline-block;
    min-height: 10px;
    min-width: 100%;
    /* Default incomplete bar color */
    background-color: #d9d9d9;
    padding-left: 0.25em;
}

.cald_feature {
    display: inline-block;
    min-height: 10px;
    min-width: 100%;
    /* Default incomplete bar color */
    background-color: #d9d9d9;
    padding-left: 0.25em;
}

Navigation

Keystrokes in use for interaction other than typing text should follow well-known OS and browser conventions. Keystrokes and special macros should not disrupt or disable browser or OS operations. Tabbing order for elements of the UI should follow the task of the user primarily, visual position on the page secondarily, and fall back to the logical order in the markup.

Breadcrumbs

Breadcrumbs follow navigation structure of the application, not the history of the user. The leaf of the breadcrumb should be the current page and should not be interactive. The breadcrumb is secondary navigation and not a replacement for page headings or titles.

Normal usage

Top Level Page Second Level Page Current Page


Used as page heading

Top Page Second Level Current Page

Visual Spec in progress. TBD
<p>
    <a href="">Top Level Page</a>
    <span class="icon-arrow-right17"></span>
    <a href="">Second Level Page</a>
    <span class="icon-arrow-right17"></span>
    <strong>Current Page</strong>
</p>

<h2>
    <a href="">Top Page</a>
    <span class="icon-arrow-right17 cald_breadcrumb_heading_separator"></span>
    <a href="">Second Level</a>
    <span class="icon-arrow-right17 cald_breadcrumb_heading_separator"></span>
    <strong>Current Page</strong>
</h2>
.cald_breadcrumb_heading_separator {
    color: #636466;
    font-size: smaller;
}

Tabs

Traditional tabs should be avoided. Other ways of handling mutually exclusive / random access content exist. However this section exists to accomodate products that still have tabs in use that cannot be changed in the near term.

This control shows what tabs should look like and the behavior when switching.
Visual Spec in progress. TBD
<ul class="nav nav-tabs">
    <li role="presentation" class="cald_tab active"><a href="#">Selected</a></li>
    <li role="presentation" class="cald_tab"><a href="#">Tab</a></li>
    <li role="presentation" class="cald_tab"><a href="#">Tab</a></li>
</ul>
.cald_tab a {
    color: #636466;
    text-decoration: none;
    background-color: #ececec;
    border: 1px solid #ddd !important;
    border-radius: 5px 5px 0px 0px !important;
}

.cald_tab.active > a {
    background-color: white !important;
    border-bottom-color: transparent !important;
}

Alternate Tabs

More than one row of tabs is unacceptable. When the need for multi-layer navigation is needed, alternate methods of tab-like navigation should be used.

Visual Spec in progress. TBD
<ul class="nav cald_tab_alt">
    <li role="presentation" class="active"><a href="#">Selected</a></li>
    <li class="nav-divider cald_nav_divider"></li>
    <li role="presentation" class=""><a href="#">Tab</a></li>
    <li class="nav-divider cald_nav_divider"></li>
    <li role="presentation" class=""><a href="#">Tab</a></li>
</ul>
.cald_nav_divider {
    display: inline-block;
    height:40px !important;
    width:1px !important;
    margin: -15px 8px !important;
    border-right: solid 1px #bfbfbf !important;
}

.cald_tab_alt li {
    display: inline-block;
}

.cald_tab_alt li a:hover {
    background-color: #f9f9f9;
    background: none;
    text-decoration: underline;
}

.cald_tab_alt>li[class~="active"]>a, .cald_tab_alt>li[class~="active"]>a:hover {
    background-color: white;
    text-decoration: none;
    color: black; 
    font-weight: bold;
}

Expand / Collapse

Summary in progress - TBD

Page Sections

In progress - TBD

Tree Sections

In progress - TBD

Carousels

In progress - TBD

Design Patterns

This section covers complex UI patterns composed of multiple UI components; patterns that have been identified as needed for reuse across one or more Callidus products. These patterns are not a mandate that all products conform when these elements co-exist in a UI, but rather a recommendation of a way to handle these combinations of UI components.

Pattern: List Page > Details Page (separate pages)

This pattern is strictly showing how the heading itself becomes breadcrumb back navigation between a list page and it's subsequent details page, and the lack of colored heading section. Please see other pattern areas for button arrangement and grid pagination, etc.

This example is interactive. Click a row to see the result.

List Page

|
Heading Heading Heading
Click for details Data cell Data cell
Click for details Data cell Data cell
Click for details Data cell Data cell
Click for details Data cell Data cell
Click for details Data cell Data cell

List Page Details Page

Content content. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla at nisi et urna rutrum pretium. Quisque ac magna fermentum, mattis urna vitae, vehicula augue. Quisque pharetra ex sed neque finibus gravida. In hac habitasse platea dictumst. Nulla facilisi. Phasellus ut dui non libero ornare commodo...

Visual Spec in progress. TBD
<!-- LIST PAGE -->
<h3>List Page</h3>

<!-- DETAILS PAGE -->
<h3>
    <a href="javascript:void(0);">List Page</a>
    <span class="icon-arrow-right17" class="cald_breadcrumb_heading_separator"></span>
    <strong>Details Page</strong>
</h3>
.cald_breadcrumb_heading_separator {
	color: #636466 !important;
	font-size: smaller !important;
}

Pattern: List Panel / Details Panel (same page)

This pattern is showing how the list item selected becomes like a heading when clicked to show details. Please see other pattern areas for button arrangement and grid pagination, etc.

This example is interactive. Click a row to see the result.

List Panel

|
Heading Heading Heading
Click for details 1 Data cell Data cell
Click for details 2 Data cell Data cell
Click for details 3 Data cell Data cell
Click for details 4 Data cell Data cell
Click for details 5 Data cell Data cell
Click for details 6 Data cell Data cell
Click for details 7 Data cell Data cell

Details Panel

Visual Spec in progress. TBD
<!-- LIST PAGE -->
<h3>List Page</h3>

<!-- DETAILS PAGE -->
<h3>
    <a href="javascript:void(0);">List Page</a>
    <span class="icon-arrow-right17" class="cald_breadcrumb_heading_separator"></span>
    <strong>Details Page</strong>
</h3>
.cald_breadcrumb_heading_separator {
	color: #636466 !important;
	font-size: smaller !important;
}

Help

Ideally, the UI shouldn't need help to complete tasks. The UI should be intuitive for the task with interactive elements located where users expect them to be and named using terminology they recognize.

If there is something that needs help documentation, the first step would be to get with real end users and investigate why they are having difficulty understanding and using the UI, then redesign the UI match user's expectations, as much as possible.

For anything beyond that, the UI should be as self-documenting as possible. This means using intuitive labels for elements, providing examples of valid input values, providing contextual help via tooltips or other temporal method that gives additional information about how to use the UI.

The UI should also use a progressive disclosure model for providing help so that the UI does not become cluttered with help before it's really needed.

Any help that exists should provide valuable information that the user would not otherwise be able to know.

Help Menu

As found in the top right corner of the brand header bar, the "Documentation" link would lead to documentation for the product. In the future, should be documentation for the entire suite (for the products the current customer/login has purchased). "Community" should link to the online Callidus Community. "About" should link to a product-specific about screen.

Help
Documentation
Community
About <Product>
Visual Spec in progress. TBD
<div style="text-transform: uppercase;">Help <span class="caret"></span></div>
<div class="cald_header_helpmenu">
    <div class="cald_header_submenuitem">Documentation</div>
    <div class="cald_header_submenuitem">Community</div>
    <div class="cald_header_submenuitem">About &lt;Product&gt;</div>
</div>
.cald_header_helpmenu {
	background-color: white;
	display:inline-block; 
	border: none; 
	color: #636466;
	box-shadow: 3px 5px 12px 0px #BBB;
	margin-left: 0px;
}

.cald_header_submenuitem {
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
}

.cald_header_submenuitem_hover {
	background-color: #72c9e9;
	color: white;
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
	position: relative;
}

.cald_header_submenuitem_selected {
	background-color: #bee0ee;
	height: 40px;
	margin: 0px;
	padding: 10px 20px;
	border: 0px;
	border-radius: 0px;
	text-align: left;
	vertical-align: middle;
	position: relative;
}

Contextual Help

Contextual help is brief assistance located directly adjecent to elements of the UI that need explanation. This can manifest as either a hover tooltip or with an obvious help icon that the user clicks or touches to popup additional information. Popups should only be used to provide additional information not available anywhere else. Do not simply repeat or restate information in popups for the sake of consistency. This teaches users that the popups are not useful and users will avoid using them.

Labels, Examples, Descriptions and Explanations

Labels should use clear, concise, intuitive terminology. Where necessary/useful, provide an example input value showing the required format. Hover tooltips should only be used to provide additional information not available anywhere else. Do not simply repeat the label name in a hover tooltip for the sake of consistency - this teaches users that the tooltips aren't useful and they will stop reading them.

Hover to see a good usage of tooltips providing additional information.

Visual Spec in progress. TBD
<form action="javascript:void(0);" class="form-group">
    <!-- Wrap the control with the label, put the tooltip on the label, and it will display for both -->
    <label for="servername" title="Enter a fully-qualified URL, including the protocol, e.g. http or https.">Web server host name:<br>
        <input id="servername" placeholder="http://www.example.com/" size="60" class="form-control">
    </label>
</form>

Step-By-Step Instruction

The entry point for step-by-step guidance should be located where users are looking/interacting at the time they will need it. It should be obvious to find for new users, but not so prominent it becomes a distraction to experienced users. Ideal would be prominent upon first use with an obvious option for the user to dismiss the feature, with instructions for how to find it if they decide they need it later.

Login Screen

License and Domain information may not be used by all products. "Create account" may need to be renamed and linked to other promotional content for some products. All products should maintain this layout, however. This is one case where validation should not highlight the particular field in error as it helps hackers focus in on which part to hack. Reserve the top line for only the company logo and any notification messages. Keep the product name and username input label lined up on the line below the company logo.

Visual Spec in progress. TBD
<div class="container-fluid cald_login_panel cald_login_wrapper">
    <div class="row">
        <div class="col-lg-5 col-md-5 col-sm-5 col-xs-12">

            <div class="cald_login_logo"></div>
            <br clear="all"><br>

            <form action="javascript:void(0);">
                <p class="alert alert-danger cald_notification_box"><span class="icon-minus-circle2" aria-hidden="true"></span><span class="sr-only">Error:</span>The username or password were incorrect.
                </p>
                <p class="form-group">
                    <label for="email_address">Email</label><br>
                    <input class="form-control" id="email_address" placeholder="username@example.com">
                </p>
                <p class="form-group">
                    <label for="password">Password</label><br>
                    <input class="form-control" id="password" type="password" placeholder="" title="> 6 characters, at least 1 number, 1 uppercase and 1 lowercase letter">
                </p>
                <div class="cald_form_controls">
                    <p class="form-group">
                        <button class="btn btn-primary cald_3D_button_primary" onClick="this.blur();return false;">Login</button>
                    </p>
                </div>
            </form>
            <div class="pull-left"><a href="" onClick="this.blur();return false;">Create Account</a></div>
            <div class="pull-right"><a href="forgot_password.html" onClick="this.blur();return false;">Forgot Password</a></div>
        </div>
        <div class="col-lg-7 col-md-7 col-sm-7 col-xs-12">

            <div class="cald_advertisement">
                <img src="img/C3-Promo-Blog-Tile-300x250.jpg" class="cald_l2m_img">
                <p class="cald_advertisement_disclaimer">Advertisement</p>
            </div>
            
        </div>
    </div>
</div>
.cald_login_wrapper {
    position:relative;
    width: 100% !important;
    border: solid 1px white;
    background-color: white;
}

.cald_login_panel {
    padding: 30px 20px 30px 20px;
    color: #636466;
}

.cald_login_logo {
    display: block;
    background-image: url("../img/CallidusCloud_logo_product_dark.png");
    background-size: 80%;
    background-repeat: no-repeat;
    background-position: center center;
    margin: 0 auto;
    height: 91px;
    width: 185px;
}

.cald_login_wrapper .cald_login_logo {
    float: left;
    margin-left: -20px;
}

.cald_l2m_img {
    text-align: right;
    width: 100%;
    border:none;
    margin-top:20px;
}

.cald_l2m_div {
    min-width: 368px;
    width: 100%;
    max-width: 66%;
    text-align: right !important;
}

.cald_advertisement {
    /* This gradient/background color needs to change based on the image used */
    background: linear-gradient( #091b49 20%, #3f63a1 30%, #3f63a1 60%, #091b49 100% );
    background-repeat: no-repeat;
    border: solid 1px #bfbfbf;
    height: 100%;
}

.cald_advertisement_disclaimer {
    width: 100%;
    text-align: center;
    position: absolute;
    transform: translate(-50%, -100%);
    top: 100%;
    left: 50%;
}

.cald_notification_box {
    padding: 10px;
    margin: 5px;
    border-radius: 0px;
}

About Screen

Product Name

Version #.# Build ####


Visual Spec in progress. TBD
<div style="padding: 20px;">
    <img src="img/CallidusCloud_logo_product_dark.png" height="47">
    <h1 class="cald_about_productname">Product Name</h1>
    <h3 class="cald_about_version">Version #.# <small>Build ####</small></h3>
    <hr>
    <p class="cald_about_copyright">License information (optional, used for license/credit info for 3rd party integrated content)</p>
    <p class="cald_about_copyright">©2015 Callidus Software Inc. All Rights Reserved.</p>
</div>
.cald_about_productname {
    font-size: 2.0em;
}

.cald_about_version {
    font-size: 1.5em;
}

.cald_about_copyright {
    font-size: smaller;
}

Mobile

Summary description

Launch Screens

These are the generic CallidusCloud launch screens that can be used for any mobile offering.

iOS

Apple iOS guidelines specify having launch screens that appear like the actual app but without any text, giving the appearance the app is loading faster than it is. Until all those screens can be generated per product, these are the generic CallidusCloud launch screens that can be used for any mobile offering.

Error:DO NOT MODIFY, CHANGE THE FILE FORMAT OR RESIZE THESE IMAGES. USE AS IS.

iPhone 4s 640 x 960 (@2x) portrait
iPhone 5 640 x 1136 (@2x) portrait
iPad and iPad mini 1536 x 2048 (@2x) portrait
2048 x 1536 (@2x) landscape
iPad 2 and iPad mini (non-retina) 768 x 1024 (@1x) portrait
1024 x 768 (@1x) landscape
iPad Pro 2048 x 2732 (@2x) portrait
2732 x 2048 (@2x) landscape
iPhone 6 750 x 1334 (@2x) portrait
1334 x 750 (@2x) landscape
iPhone 6 Plus 1242 x 2208 (@3x) portrait
2208 x 1242 (@3x) landscape
Download the full set from Google Drive (185kb).

Future

Here is a comparison of what the difference will be when proper per-product splash screens can be created, using Enablement as an example.

Proper Apple-recommended Launch Screens

Menus

The hamburger menu should always appear on the top left and be reserved for the top-level main menu of the application. It doesn't need to be shown all the time, but it should be available anytime a user typically might need to switch tasks that require navigation through the top-level main menu. For example, the hamburger menu may be subsumed by back navigation when the user is temporarily accessing a deep, leaf-level form page within a task. The hamburger menu should slide in with the menu, establishing a direct connection between it and the menu that slides out. Touching the icon when the menu is open would slide the menu closed. It shouldn't require a drag gesture, though a drag gesture should be treated like a touch or click causing the menu to open and close so that drag effectively will work.

For contextual overflow menus, that should be handled with the vertical three-dot menu and appear in the upper right.

Examples

Top level has the main, hamburger navigation.


Secondary or leaf level has back navigation that subsumes the main menu. Contextual overflow menu is handled by the three vertical dot menu on the right. This is different from the main hamburger menu. Contextual overflow would be menu items needed for the current page only.


Hamburger icon should slide over with the menu to establish a direct, concrete attachment to the menu. Otherwise it could appear to some users that there is still another hamburger menu that can be opened. If page content slides over, then a swipe gesture should also be supported. If the menu overlays the page then a swipe gesture to open the menu should not be used.

Hamburger menu should always be top left for right-to-left locales

Hamburger menu moves with the menu, analogous to a doorknob on a door

Mobile doesn't afford sufficient space to indent hierarchies. Therefore, successive levels should slightly darken the background to distinguish levels down to the leaves. Ideally, there should be no more than one sub level displayed in this manner, but as an absolute maximum, this guideline will support hierarchies up to three. Greater than three levels should be avoided (regardless of platform and menu system type, e.g. mobile, desktop, etc.). If the depth of the heirarchy is greater than three or user-controlled and dynamic to n++, then the top menu item should employ a carousel model of heirarchy navigation instead of the one seen here.

Menu level one

Menu level two

Menu level three

Co-branding And Integration

Most customers use products from a variety of vendors mixed together in a solution that is skinned with their own corporate identity and styles. CallidusCloud products should allow a reasonable level of co-branding without losing the portion of the layout and design of our applications that provides usability and intelligibility.

Callidus Default

Example of default styles.

Preferrable co-brand

Mainly color changes and some border style adjustments. Won't break the layout or interaction

Pushing the limits

Includes font face changes. This has the potential to break the layout and cause interaction problems.

Changes

v2.0 Finalized.
v1.7.2 Breadcrumbs updated to show heading variant.
v1.7.1 Error icon changed.
v1.7 Added header guidance when products are embedded in other products.
v1.6.2 Buttons styles dropped flat color with '2.0', but examples across the guidelines needed to be updated to conform. Also addition of header guidance when products are embedded has been started. (In progress, not complete.)
v1.6.1 Added a no data notification section.
v1.6 Added a patterns section and restructured the document in a couple places.
v1.5.1 Updated email template incorporating changes necessary by Ops team to work across various supported email clients.
v1.5 Significant re-write and restructuring of the document. Now fully responsive. HTML/CSS code examples added for all sections. Visual Spec sections TBD. Expand/Collapse navigation section TBD.
v1.4.7 Added co-branding section to the design style section.
v1.4.6 Added email notification template to the notifications > email section.
v1.4.5.1 Added detail of future direction for iOS launch screens to the mobile > launch screens section.
v1.4.5 Significant restructuring and reordering of the document.
v1.4.1 Updated progress indication section. Still in progress.
v1.4 Added iOS launch screens to the mobile section.
v1.3.3 Added guidance around heirarchies to the menu sections of the mobile section.
v1.3.2 Updates to the menu sections of the mobile section.
v1.3.1 Added an example of the difference between form inputs on mobile vs desktop type platform in the forms section.
v1.3 Added a mobile section.
v1.2.5 New page background color in the colors section.
v1.2 Find utility and more guidance on icon usage.
v1.1 Common login updated.
v1.0 Finalized.
v0.9.5 Fixed a defect in the button styles section.
v0.9 Updated Navigation section with breadcrumbs and tabs. Added Expand / Collapse section. Updated the Header Bar variations section with a Tertiary Section Bar.
v0.8 Added login screen section and updated menu section based on feedback from product teams.
v0.7 Updated menu section based on feedback from product teams.
v0.6 Added iconography section. Added information about header help menu system to both header bar and help sections.
v0.5 Added visual spec and compact style grid to grids, css for notifications, additional information for fonts, section headings and progress. Changed subsection background color.
v0.4 Added visual spec for default header bar and menus.
v0.3 Updated fonts section, updated 'how to use' section, filled in the dialogs section, updated header bars section for embedded products, additional menu information, updated notifications, and reformatted all the CSS sections.
v0.2 Added 'how to use' section, required fields, header variations, additional menu information
v0.1 Initial draft