Auth line iconAuth filled icon Asset 5 contracts icon lrgcontracts icon icon-override icon-media Created with Sketch. Revenue line iconRevenue filled icon Subscriber line iconSubscriber filled icon target segment - empty state Created with Sketch. target segment - nav Created with Sketch. toggle-off toggle-on Config_outlines

Invision UI v.19.6.0-0

Getting Started

  • Running Invision UI
  • UI Component Anatomy
  • Authoring SCSS
  • Authoring Presentational Behavior

Component Foundations

  • SCSS Authoring
    • Mixins & Variables
    • Stateful Classes
  • State Guidance
    • Empty/Zero State
    • Loading State
  • Utilities
    • Align
    • Display
    • Flexbox
    • Font Size
    • Layout
    • Offset
    • Position
    • Overflow
    • Size
    • Spacing
    • Text
  • Layout
    • Arrange [Deprectated]
    • Divided Columns
    • Embed Video
    • Full and Center
    • Fill [Deprectated]
    • Grid
    • Media Blocks
    • Panels
    • Vertical Layouts
  • Media Queries
  • Angular Behaviors
    • App Theme Directive
    • Auto Focus Input
    • Filters
    • Popup (modal dialog) Manager
    • Tether (tooltip/dropdown) Manager
    • Resize Sensor
    • Watchers

UI Component Library

  • Content & Containment
    • Active Translation
    • Auto Fit Text
    • Address
    • Basic & Input Table
    • Brand Logo/Slogan
    • Call to Action - Empty State
    • Carousel
    • Cart
    • Choice
    • Collapsible Container
    • Copyright Footer
    • Coupon Redeemer
    • Content
    • Date Relative Display
    • Definition Lists
    • Delimited List
    • Details
    • Expiration Date Display
    • Feature Toggle
    • Form Section Heading
    • Header
    • Heading
    • Heading With Annotation
    • Icons
    • Interaction Details
    • Labeled Balance
    • Link
    • Main Container
    • Metadata Card
    • Metadata List Item
    • Offering QuickView
    • Payment Instrument
    • Preference Dialog
    • Pricing Plan Decoration
    • Product Availability
    • Product Details
    • Product Image
    • Quick Info Panel
    • Remark
    • Renewal Column
    • Richlist Filterbar
    • Richlist Wrapper
    • Scrollable Horizontal List
    • Search Card
    • Search Panel
    • Section
    • Selectable Option
    • Smart Truncate
    • Status Grid
    • Tooltip
  • Data Visualizations
    • Bill Runs
    • Comparison Table
    • Datatable
    • Progress Tracker
    • Schedules
    • Query Builder
  • Dialogs
    • Confirmation Dialog
    • Dialog
    • Rich List Dialog
    • Wait Dialog
  • Forms and Filters
    • Additional Properties
    • Autocomplete
    • 3 Field Date Input
    • Checkbox
    • Credit Card
    • Bulk Action Bar
    • Buttons
    • Confirmation Button
    • Date Picker
    • E-Check
    • Entity Specification
    • External Bill
    • External Gift Card
    • Focus Group
    • Forms
    • Filter Bar
    • Filter Dropdowns
    • Gift Card
    • Grouped Check Filters
    • Inputs
    • Input Select Combo
    • Monetary Input
    • Multi Dropdown Selector
    • Multiple Numeric Input
    • Monetary Range Input
    • Password Unmask Button
    • Select
    • Select Button Or Stepper
    • Select Or Text Input
    • Stepper
    • Tag Dropdown
  • Navigation & Flow
    • Back Banner
    • Back Component
    • Breadcrumbs
    • Details Pager
    • Expandable Section
    • Infinite Scroll
    • Open New Window
    • Pager
    • Fancy Richlist
    • Standard Navigator
    • Status Indicator
    • Step Progress Bar
    • Step Progress Indicator
    • Tab Card
    • Tab Panel
    • Tier Navigator
    • Wizard
  • Notifications
    • Loading Indicator
    • Toast Notifications
  • Deprecated
    • Content Area

Showcase

  • General
    • Simplelist
    • Richlist
    • Primary (side) Navigator
  • Customer Care
    • Case Activity List
    • Customer Care Navigator Component
    • Dashboard
    • Decisions
  • Reporting
    • Content Visualization

Unit Testing

  • Actions
  • Components
  • Selectors
  • Reducers

End-to-end Testing

Statistics

Dashboard

In this section

Variants
  • Customer Care Customer Dashboard

Customer Care Customer Dashboard

Showcase of responsive tab panel in the `c-content-meta` container

Do not use the markup below as copy-paste source for a standard dashboard. This example is meant to demonstrate responsive tab panels. See the comments in the markup for contrast to the standard tab panel component. Most notable inclusions:
  • `c-content-main--responsiveMeta`
  • `is-open` attribute specified on `inv-tab-panel`
  • `c-tabContent` with `is-open` `ng-class`
  • The parent controller's `on-tab-selected` function should expose and modify a new property for content openness. For Instance:
        if (tab.id === selectedTab.id) {
            $scope.tabPanelShouldOpen = tab.active ? !$scope.tabPanelShouldOpen : true;
        }
        tab.active = tab.id === selectedTab.id;
    
Account Overview
:
ACC400020020
Account Balance
Total Balance
$0.00
Active Subscriptions
HBO Boost Subscription - HBO Boost - $15.00 Live Subscription
HBO Boost - $15.00 Live Subscription
Reminder Date
2/27/17 2:49 PM
Fulfillment Date
2/28/17 2:49 PM
Contract End Date
N/A
Full Details
Payment History
Renewal Amount
$15.00
Renews Live Linear Monthly Subscription Charge
Automatically On 2/28/17
HBO Boost Subscription - HBO Boost - $15.00 Live Subscription
HBO Boost - $15.00 Live Subscription
Renews Live Linear Monthly Subscription Charge
Automatically On 2/28/17
Subscription Bundle - Sub Plan A
Sub Plan A
Renews SubTestA
Automatically On 7/20/17
Baseball QH Subscription Bundle - HD QH Subscription Bundle
HD QH Subscription Bundle
Renews Quarter Hourly
Automatically On 7/20/17
Subscription 11 - 333053 Subscription
333053 Subscription
Renews Hourly
Automatically On 8/16/17
Stacking coupon for 3+6 quarter hour - Disney redeems both coupon codes (3+6) Quarter hour
Disney redeems both coupon codes (3+6) Quarter hour
Renews Quarter Hourly
Automatically On 8/15/17
View All 6 Subscriptions
Empty
username
jonathanrahemer@gmail.com
email
jonathanrahemer@gmail.com
username
jonathanrahemer@gmail.com
email
jonathanrahemer@gmail.com
username
jonathanrahemer@gmail.com
email
jonathanrahemer@gmail.com
username
jonathanrahemer@gmail.com
email
jonathanrahemer@gmail.com
username
jonathanrahemer@gmail.com
email
jonathanrahemer@gmail.com
username
jonathanrahemer@gmail.com
email
jonathanrahemer@gmail.com
username
jonathanrahemer@gmail.com
email
jonathanrahemer@gmail.com
username
jonathanrahemer@gmail.com
email
jonathanrahemer@gmail.com
HTML
<div class="u-pv+">
    Do not use the markup below as copy-paste source for a standard dashboard. This example is meant to demonstrate responsive tab panels.
    See the comments in the markup for contrast to the standard tab panel component.

    Most notable inclusions:
    <ul>
        <li>`c-content-main--responsiveMeta`</li>
        <li>`is-open` attribute specified on `inv-tab-panel`</li>
        <li>`c-tabContent` with `is-open` `ng-class`</li>
        <li>The parent controller's `on-tab-selected` function should expose and modify a new property for content openness. For Instance:</li>
    </ul>
    <pre class="prettyprint">
        if (tab.id === selectedTab.id) {
            $scope.tabPanelShouldOpen = tab.active ? !$scope.tabPanelShouldOpen : true;
        }
        tab.active = tab.id === selectedTab.id;
    </pre>
</div>
<div style="height: 600px;" ng-controller="dashboardExampleController">
    <div class="t-content c-content">
        <inv-app-theme app-id="appId"></inv-app-theme>
        <div class="c-content-container u-sizeFullHeight">
            <div class="c-content-headingContainer">
                <div class="c-heading">
                    <div class="c-heading-titleArea">
                        <div class="c-heading-label">Account Overview</div>
                        <div class="c-heading-label u-flex u-flexBaseline">
                            <span>:</span>
                            <div class="c-careAccountSwitcher">
                                <div class="c-careAccountSwitcher-label">
                                    <span>ACC400020020</span>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="c-content-main c-content-main--responsiveMeta">
                <div class="c-content-innerMain">
                    <div class="c-content-innerContainer c-content-innerContainer--flush">
                        <div class="u-p++">
                            <div class="c-customerDashboard-widgetRow">
                                <account-balance-widget class="c-customerDashboard-primaryWidget"
                                    most-recent-invoice="CustomerDashboard.state.mostRecentInvoice">
                                    <div class="c-expandableSection c-dashboardWidget c-accountBalance l-vertical is-expanded">
                                        <div class="c-expandableSection-header l-vertical-noShrink">
                                            <inv-icon class="c-expandableSection-logo" glyph="'account-balance'"></inv-icon>
                                            <div class="c-expandableSection-heading">Account Balance</div>
                                        </div>
                                        <div class="c-expandableSection-content l-vertical-grow">
                                            <div class="c-accountBalance-detailsContainer">
                                                <div class="u-flex u-flexColumn u-flexSpaced">
                                                    <div class="c-labeledBalance">
                                                        <div class="c-labeledBalance-label">Total Balance</div>
                                                        <div class="c-labeledBalance-balance">$0.00</div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </account-balance-widget>
                            </div>
                        </div>
                        <div class="u-p++">
                            <div class="c-expandableSection c-dashboardWidget c-loadingIndicator-containment l-vertical is-expanded">
                            <div class="c-expandableSection-header l-vertical-noShrink">
                                <div class="c-expandableSection-heading">Active Subscriptions</div>
                            </div>
                                <div class="c-expandableSection-content">
                                    <div class="u-flex">
                                        <div class="u-flexItemGrow u-pr">
                                            <div>
                                                <div class="c-dashboardWidget-label">HBO Boost Subscription - HBO Boost - $15.00 Live Subscription</div>
                                                <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt">
                                                    <span class="c-dashboardWidget-labelMeta">HBO Boost - $15.00 Live Subscription</span>
                                                </div>
                                            </div>
                                            <div class="u-mt++">
                                                <div class="c-definitions u-sizeFullWidth">
                                                    <div class="c-definition">
                                                        <div class="c-definition-term" >Reminder Date</div>
                                                        <div class="c-definition-value" >2/27/17 2:49 PM</div>
                                                    </div>
                                                    <div class="c-definition">
                                                        <div class="c-definition-term" >Fulfillment Date</div>
                                                        <div class="c-definition-value" >2/28/17 2:49 PM</div>
                                                    </div>
                                                    <div class="c-definition">
                                                        <div class="c-definition-term" >Contract End Date</div>
                                                        <div class="c-definition-value" >N/A</div>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="u-mt++">
                                                <div class="u-flex">
                                                    <div class="u-flex ng-scope" >
                                                        <a class="c-link u-mr+"  >Full Details</a>
                                                        <div class="c-divider u-mr+ ng-scope" ng-if="!$last"></div>
                                                    </div>
                                                    <div class="u-flex ng-scope" >
                                                        <a class="c-link u-mr+"  >Payment History</a>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="c-renewalColumn u-flexItemNoShrink u-size3of12">
                                            <div class="c-renewalColumn-label" >Renewal Amount</div>
                                            <div class="c-renewalColumn-amount" auto-fit-text=""  style="font-size: 50px;">$15.00</div>
                                            <div>
                                                <span  class="ng-binding">Renews</span>
                                                <span  class="ng-binding">Live Linear Monthly Subscription Charge</span>
                                            </div>
                                            <div class="c-renewalColumn-date ng-scope"  style="">
                                                <span ng-bind="$ctrl.getSubscriptionRenewalText()" class="ng-binding">Automatically On</span>
                                                <span  class="ng-binding">2/28/17</span>
                                            </div>
                                        </div>
                                    </div>
                                    <div>
                                        <div class="c-divider c-divider--horizontal u-mt++ u-mb+"></div>
                                        <div class="c-scrollableHorizontalList c-scrollableHorizontalList--interactive c-scrollableHorizontalList--text">
                                            <div class="c-scrollableHorizontalList-track u-sizeFullHeight">
                                                <div class="c-scrollableHorizontalList-list c-dashboardWidget-list u-sizeFullHeight">
                                                    <div class="c-scrollableHorizontalList-listItem u-sizeFullHeight u-size1of3 ng-scope is-active" ng-class="{'is-active': subscription.id === $ctrl.state.selectedSubscription.Id}"   style="">
                                                        <div class="u-pv+">
                                                            <div class="c-dashboardWidget-label" >HBO Boost Subscription - HBO Boost - $15.00 Live Subscription</div>
                                                            <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt" >HBO Boost - $15.00 Live Subscription</div>
                                                        </div>
                                                        <div class="u-pv+">
                                                            <div class="c-dashboardWidget-label">
                                                                <span  class="ng-binding">Renews</span>
                                                                <span  class="ng-binding">Live Linear Monthly Subscription Charge</span>
                                                            </div>
                                                            <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt">
                                                                <span  class="ng-binding">Automatically On</span>
                                                                <span  class="ng-binding">2/28/17</span>
                                                            </div>
                                                        </div>
                                                    </div><div class="c-scrollableHorizontalList-listItem u-sizeFullHeight u-size1of3 ng-scope" ng-class="{'is-active': subscription.id === $ctrl.state.selectedSubscription.Id}"  >
                                                        <div class="u-pv+">
                                                            <div class="c-dashboardWidget-label" >Subscription Bundle - Sub Plan A</div>
                                                            <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt" >Sub Plan A</div>
                                                        </div>
                                                        <div class="u-pv+">
                                                            <div class="c-dashboardWidget-label">
                                                                <span  class="ng-binding">Renews</span>
                                                                <span  class="ng-binding">SubTestA</span>
                                                            </div>
                                                            <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt">
                                                                <span  class="ng-binding">Automatically On</span>
                                                                <span  class="ng-binding">7/20/17</span>
                                                            </div>
                                                        </div>
                                                    </div><div class="c-scrollableHorizontalList-listItem u-sizeFullHeight u-size1of3 ng-scope" ng-class="{'is-active': subscription.id === $ctrl.state.selectedSubscription.Id}"  >
                                                        <div class="u-pv+">
                                                            <div class="c-dashboardWidget-label" >Baseball QH Subscription Bundle - HD QH Subscription Bundle</div>
                                                            <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt" >HD QH Subscription Bundle</div>
                                                        </div>
                                                        <div class="u-pv+">
                                                            <div class="c-dashboardWidget-label">
                                                                <span  class="ng-binding">Renews</span>
                                                                <span  class="ng-binding">Quarter Hourly</span>
                                                            </div>
                                                            <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt">
                                                                <span  class="ng-binding">Automatically On</span>
                                                                <span  class="ng-binding">7/20/17</span>
                                                            </div>
                                                        </div>
                                                    </div><div class="c-scrollableHorizontalList-listItem u-sizeFullHeight u-size1of3 ng-scope" ng-class="{'is-active': subscription.id === $ctrl.state.selectedSubscription.Id}"  >
                                                        <div class="u-pv+">
                                                            <div class="c-dashboardWidget-label" >Subscription 11 - 333053 Subscription</div>
                                                            <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt" >333053 Subscription</div>
                                                        </div>
                                                        <div class="u-pv+">
                                                            <div class="c-dashboardWidget-label">
                                                                <span  class="ng-binding">Renews</span>
                                                                <span  class="ng-binding">Hourly</span>
                                                            </div>
                                                            <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt">
                                                                <span  class="ng-binding">Automatically On</span>
                                                                <span  class="ng-binding">8/16/17</span>
                                                            </div>
                                                        </div>
                                                    </div><div class="c-scrollableHorizontalList-listItem u-sizeFullHeight u-size1of3 ng-scope" ng-class="{'is-active': subscription.id === $ctrl.state.selectedSubscription.Id}"  >
                                                        <div class="u-pv+">
                                                            <div class="c-dashboardWidget-label" >Stacking coupon for 3+6 quarter hour - Disney redeems both coupon codes (3+6) Quarter hour</div>
                                                            <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt" >Disney redeems both coupon codes (3+6) Quarter hour</div>
                                                        </div>
                                                        <div class="u-pv+">
                                                            <div class="c-dashboardWidget-label">
                                                                <span  class="ng-binding">Renews</span>
                                                                <span  class="ng-binding">Quarter Hourly</span>
                                                            </div>
                                                            <div class="c-dashboardWidget-label c-dashboardWidget-label--meta u-mt">
                                                                <span  class="ng-binding">Automatically On</span>
                                                                <span  class="ng-binding">8/15/17</span>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="u-mt++">
                                            <a class="c-link">View All 6 Subscriptions</a>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="c-content-meta c-content-meta--thin">
                    <div class="c-content-innerContainer c-content-innerContainer--flush l-vertical">
                        <!-- inv-tab-panel w/ `is-open` specified -->
                        <inv-tab-panel
                            tabs="tabs"
                            on-tab-selected="tabSelected"
                            bottom-highlight="true"
                            is-open="tabPanelShouldOpen">
                        </inv-tab-panel>
                        <!-- c-tabContent w/ `is-open` ng-class -->
                        <div class="l-vertical-scrollParent c-tabContent" ng-class="{'is-open': tabPanelShouldOpen}">
                            <div ng-show="tabs[0].active" class="l-vertical-scrollParent" style="">
                                <div class="l-vertical-growAndScroll u-sizeFull">
                                    <div class="u-mt++ u-textCenter">
                                        Empty
                                    </div>
                                </div>
                            </div>
                            <div ng-show="tabs[1].active" class="l-vertical-scrollParent">
                                <div class="l-vertical-growAndScroll u-sizeFull u-p">
                                    <!-- Long list to showcase internal scrolling -->
                                    <div class="c-definitions c-definitions--long">
                                        <div class="c-definition">
                                            <div class="c-definition-term">username</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                        <div class="c-definition">
                                            <div class="c-definition-term">email</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                    </div>
                                    <div class="c-definitions c-definitions--long">
                                        <div class="c-definition">
                                            <div class="c-definition-term">username</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                        <div class="c-definition">
                                            <div class="c-definition-term">email</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                    </div>
                                    <div class="c-definitions c-definitions--long">
                                        <div class="c-definition">
                                            <div class="c-definition-term">username</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                        <div class="c-definition">
                                            <div class="c-definition-term">email</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                    </div>
                                    <div class="c-definitions c-definitions--long">
                                        <div class="c-definition">
                                            <div class="c-definition-term">username</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                        <div class="c-definition">
                                            <div class="c-definition-term">email</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                    </div>
                                    <div class="c-definitions c-definitions--long">
                                        <div class="c-definition">
                                            <div class="c-definition-term">username</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                        <div class="c-definition">
                                            <div class="c-definition-term">email</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                    </div>
                                    <div class="c-definitions c-definitions--long">
                                        <div class="c-definition">
                                            <div class="c-definition-term">username</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                        <div class="c-definition">
                                            <div class="c-definition-term">email</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                    </div>
                                    <div class="c-definitions c-definitions--long">
                                        <div class="c-definition">
                                            <div class="c-definition-term">username</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                        <div class="c-definition">
                                            <div class="c-definition-term">email</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                    </div>
                                    <div class="c-definitions c-definitions--long">
                                        <div class="c-definition">
                                            <div class="c-definition-term">username</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                        <div class="c-definition">
                                            <div class="c-definition-term">email</div>
                                            <div class="c-definition-value">jonathanrahemer@gmail.com</div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>