JobTarget UI Theme

Version:

File Version:

How to use

What is jt-ui-theme?

jt-ui-theme is meant to replace Metronic and create a lighter layer of theming for our JobTarget projects.

The goal of this project is to allow for drop-in theming across all JobTarget apps (you should be able to simply add the stylesheet and follow the markup structure and your app will reflect the JobTarget brand).

jt-ui-theme relies heavily on Bootstrap 4. When in doubt, refer to the Bootstrap 4 Documentation for HTML snippets.

You can view the designs in Figma here https://www.figma.com/files/1024312224877226276/team/1024308968604884822/JobTarget-Design-Team?fuid=1042493409103375107

Pulling HTML snippets

You can View the Source Markup by hovering over the section and clicking this button:

jt-ui-theme is JavaScript agnostic. It expects you to use Markup and CSS from Bootstrap 4, but you can use any flavor of Bootstrap 4 JavaScript that you need...
For the most part, you will just use standard Bootstrap Markup and the library should work.
When using inside of a Client-side rendering framework, you can hookup plugins once they have mounted on the DOM.
Examples of Bootstrap JavaScript flavors include the following:

Versioning

You may notice that the version is but the files reference . This is because we use SemVer to version our theme. Path/Bugfix pushes will be available without updating the reference to the CSS and JS.

When a Minor or Major version is pushed out, developers should migrate to the latest version within 4 weeks.

Usage With React/Vue

Using these vanilla and jQuery components/plugins with React and Vue is quite easy. The best way to implement them is hook into the component lifecycle methods

    
        // React
        componentDidMount(){
            // instantiate jQuery or vanilla plugin
        }

        componentWillUnmount(){
            // destroy the instance
        }

        componentDidUpdate(){
            // refresh the instance if you need to
        }

        // Vue
        mounted(){
            // instantiate jQuery or vanilla plugin
        }

        beforeUnmount(){
            // destroy the instance
        }

        updated(){
            // refresh the instance if you need to
        }
    

Using the Navbar and Footer

The Shared Navbar and Footer are written as Web Components, compiled by StencilJS.

https://developer.mozilla.org/en-US/docs/Web/Web_Components

https://stenciljs.com/

In order to use these components, you must add them to the DOM as shown in the Starter Template

The x-x in the src attribute should be replaced with the Major and Minor version found on the UI Kit Repository in the master branch inside of the package.json file.

Here is the Gitlab repo master branch

Job Target Custom Components

By including the Job Target theme JavaScript, custom UI component JavaScript will be accessible via the JTComponents object attached to the window

            
                window.JTComponents; // Object containing component class definitions
            
        

You can check the exact version of the script by accessing the version property on window.JTComponents

The current list of JobTarget components includes

    Live Demos

    Theme Scripts and Styles

    Navbar Docs

    Theme CSS

    • Prod:
      https://uithemeplatform.jobtarget.com/jt.ui.theme.v1.0.bundle.min.css
    • UAT:
      https://uat-uithemeplatform.jobtarget.com/jt.ui.theme.v1.0.bundle.min.css
    • QA:
      https://qa-uithemeplatform.jobtarget.com/jt.ui.theme.v1.0.bundle.min.css

    Theme JS

    • Prod:
      https://uithemeplatform.jobtarget.com/jt.ui.theme.v1.0.bundle.min.js
    • UAT:
      https://uat-uithemeplatform.jobtarget.com/jt.ui.theme.v1.0.bundle.min.js
    • QA:
      https://qa-uithemeplatform.jobtarget.com/jt.ui.theme.v1.0.bundle.min.js
    • Prod:
      https://uikitplatform.jobtarget.com/js/jt-ui-kit-v-1-1/jt-ui-kit-v-1-1.js
    • UAT:
      https://uat-uikitplatform.jobtarget.com/js/jt-ui-kit-v-1-1/jt-ui-kit-v-1-1.js
    • QA:
      https://qa-uikitplatform.jobtarget.com/js/jt-ui-kit-v-1-1/jt-ui-kit-v-1-1.js

    Template Changelog

    1. Oct 5, 2021 - updated #jt-app HTML to remove mt-4 mb-4 classes and add my-1 class.
    2. Oct 7, 2021 - updated #jt-app-header HTML to add align-items-center class to the first col-sm-6 columns.
    3. Oct 7, 2021 - Swapped out multiple font-awesome link tags for one that pulls in all of font-awesome pro. This should remedy any issues where icons are not rendering.
    4. Nov 11, 2021 - Adds class px-2 to "More" button in #jt-app-header to make button square.

    Starter Template

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8" />
        <title>Metronic Navbar Test</title>
        <meta name="description" content="JT Navbar Test" />
        <meta
          name="viewport"
          content="width=device-width, initial-scale=1, shrink-to-fit=no"
        />
    
        <!-- Google Tag Manager -->
        <script>
          (function (w, d, s, l, i) {
            w[l] = w[l] || [];
            w[l].push({
              "gtm.start": new Date().getTime(),
              event: "gtm.js",
            });
            var f = d.getElementsByTagName(s)[0],
              j = d.createElement(s),
              dl = l != "dataLayer" ? "&l=" + l : "";
            j.async = true;
            j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
            f.parentNode.insertBefore(j, f);
          })(window, document, "script", "dataLayer", "GTM-P2L7PHQ");
        </script>
        <!-- End Google Tag Manager -->
    
        <!--fonts and icons -->
        <link
          rel="stylesheet"
          href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700"
        />
        <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.15.4/css/all.css" integrity="sha384-rqn26AG5Pj86AF4SO72RK5fyefcQ/x32DNQfChxWvbXIyXFePlEktwD18fEz+kQU" crossorigin="anonymous">
        <link rel="stylesheet" href="https://ui-theme.jobtarget.com/jt.ui.theme.vx.x.bundle.min.css">
    
        <!-- Any custom stylesheets you need -->
    
    
      </head>
    
      <body>
        <!-- Google Tag Manager (noscript) -->
        <noscript>
          <iframe
            src="https://www.googletagmanager.com/ns.html?id=GTM-P2L7PHQ"
            height="0"
            width="0"
            style="display: none; visibility: hidden"
          ></iframe>
        </noscript>
        <!-- End Google Tag Manager (noscript) -->
        <jt-navbar divisionflag="1"></jt-navbar>
    
        <!-- BEGIN: NEEDED HTML -->
        <div class="container my-1" id="jt-app">
          <div class="row">
            <div class="col-12">
              <!-- BEGIN: CARD --->
              <div class="card border-0 w-100" id="jt-app-card">
                <!-- BEGIN: CARD HEADING -->
                <div id="jt-app-header" class="card-header bg-transparent">
                  <div class="row">
                    <div class="col-sm-6 d-flex align-items-center">
                      <!-- BEGIN: YOUR APP TITLE -->
                      <div class="app__logo mr-3">
                        <!-- App Logo -->
                        <i class="fal fa-eye"></i>
                      </div>
    
                      <!-- App Title -->
                      <h2 class="mb-sm-0 h5">My JobTarget App</h2>
                      <!-- END: YOUR APP TITLE -->
                    </div>
                    <div class="col-sm-6 d-flex justify-content-sm-end align-items-center">
                      <!-- BEGIN: YOUR HEADING CTAs -->
                      <div class="float-right">
                        <button class="btn btn-primary">Primary</button>
                        <div class="dropdown d-inline">
                          <button
                            class="ml-2 px-2 btn btn-sm btn-light-primary text-primary"
                            id="dropdownMenuButton"
                            data-toggle="dropdown"
                            aria-haspopup="true"
                            aria-expanded="false"
                          >
                            <span class="sr-only">More</span>
                            <i
                              aria-hidden="true"
                              class="fal fa-ellipsis-v text-15"
                            ></i>
                          </button>
    
                          <div
                            class="dropdown-menu dropdown-menu-right"
                            aria-labelledby="dropdownMenuButton"
                          >
                            <a class="dropdown-item" href="#">Action</a>
                            <a class="dropdown-item" href="#">Another action</a>
                            <a class="dropdown-item" href="#"
                              >Something else here</a
                            >
                          </div>
                        </div>
                      </div>
                      <!-- END: YOUR HEADING CTAs -->
                    </div>
                  </div>
                </div>
                <!-- END: CARD HEADING -->
                <!-- BEGIN: CARD BODY -->
                <div class="card-body" id="jt-app-body">
                  <!-- BEGIN: YOUR CONTENT -->
                  <div class="row">
                    <div class="col-sm-6 border pb-3">Here is some cool stuff</div>
                    <div class="col-sm-6 border pb-3">Here is some cool stuff</div>
                    <div class="col-sm-7 border pb-3">Here is some cool stuff</div>
                    <div class="col-sm-5 border pb-3">Here is some cool stuff</div>
                    <div class="col-sm-3 border pb-3">Here is some cool stuff</div>
                    <div class="col-sm-3 border pb-3">Here is some cool stuff</div>
                    <div class="col-sm-4 border pb-3">Here is some cool stuff</div>
                    <div class="col-sm-5 border pb-3">Here is some cool stuff</div>
                  </div>
                  <!-- END: Your Content -->
                </div>
                <!-- END: CARD BODY -->
              </div>
              <!-- END: CARD-->
            </div>
          </div>
        </div>
        <!-- END: NEEDED HTML -->
    
        <jt-footer></jt-footer>
    
        <!-- These scripts are needed for the Navbar (If you are using the jQuery version of Bootstrap then you're all set to go)-->
        <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
        <script
          src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"
          integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns"
          crossorigin="anonymous"
        ></script>
        <!-- JT Components and custom JS for Bootstrap -->
        <script src="https://ui-theme.jobtarget.com/jt.ui.theme.vx.x.bundle.min.js"></script>
        <!-- StencilJS components for the header and footer -->
        <script src="https://ui-kit.jobtarget.com/js/jt-ui-kit/jt-ui-kit-v-x-x.js"></script>
        <!--Your custom scripts-->
      </body>
    </html>
    

    Tokens

    Bootstrap v4 has a large number of SASS variables which can be found at the following link:

    https://raw.githubusercontent.com/twbs/bootstrap/v4-dev/scss/_variables.scss

    These variables are overwritten by the JobTarget theme.

    Colors

    Bootstrap class names can be found here https://getbootstrap.com/docs/4.6/utilities/colors/

    Theme

    Theme colors have built-in utility CSS classes you can use throughout your HTML.

    Example Name SASS Var Hex RGBA Disabled Focus/Active/Hover CSS Classes
      Primary $primary #2f86dd rgba(47, 134, 221, 1) rgba(47, 134, 221, 0.65) #1e6dbb
    rgba(30, 109, 187, 1)

    *-primary

      Success $success #1bc5bd rgba(27, 197, 189, 1) rgba(27, 197, 189, 0.65) #16a39d
    rgba(22, 163, 157, 1)

    *-success

      Info $info #8950FC rgba(137, 80, 252, 1) rgba(137, 80, 252, 0.65) #671efb
    rgba(103, 30, 251, 1)

    *-info

      Warning $warning #ffa800 rgba(255, 168, 0, 1) rgba(255, 168, 0, 0.65) #d98f00
    rgba(217, 143, 0, 1)

    *-warning

      Danger $danger #f64e60 rgba(246, 78, 96, 1) rgba(246, 78, 96, 0.65) #f42a3f
    rgba(244, 42, 63, 1)

    *-danger

      Light $light #f8f9fa rgba(248, 249, 250, 1) n/a n/a

    *-light

      Dark $dark #181c32 rgba(24, 28, 50, 1) n/a n/a

    *-dark

      Light Success $light-success #c9f7f5 rgba(201, 247, 245, 1) n/a n/a

    *-light-success

      Light Danger $light-danger #ffe2e5 rgba(255, 226, 229, 1) n/a n/a

    *-light-danger

      Light Warning $light-warning #fff4de rgba(255, 244, 222, 1) n/a n/a

    *-light-warning

      Light Info $light-info #eee5ff rgba(238, 229, 255, 1) n/a n/a

    *-light-info

      Dark Fill $dark-fill #d1d3e0 rgba(209, 211, 224, 1) n/a n/a

    *-dark-fill

      Light Fill $light-fill #f3f6f9 rgba(243, 246, 249, 1) n/a n/a

    *-light-fill

      Dark Success $dark-success #0e6662 n/a n/a n/a

    *-dark-success

      Dark Primary $dark-primary #184673 n/a n/a n/a

    *-dark-primary

      Dark Warning $dark-warning #855700 n/a n/a n/a

    *-dark-warning

      Dark Info $dark-info #5c3d9d n/a n/a n/a

    *-dark-info

      Dark Danger $dark-danger #802932 n/a n/a n/a

    *-dark-danger

      Blue 90 $blue-90 #4392E0 rgba(67, 146, 224, 1) n/a n/a

    *-blue-90

      Blue 80 $blue-80 #599EE4 rgba(89, 158, 228, 1) n/a n/a

    *-blue-80

      Blue 70 $blue-70 #6DAAE7 rgba(109, 170, 231, 1) n/a n/a

    *-blue-70

      Blue 60 $blue-60 #8CB6EB rgba(140, 182, 235, 1) n/a n/a

    *-blue-60

      Blue 50 $blue-50 #97C2EE rgba(151, 194, 238, 1) n/a n/a

    *-blue-50

      Blue 40 $blue-40 #ACCFF1 rgba(172, 207, 241, 1) n/a n/a

    *-blue-40

      Blue 30 $blue-30 #C0DAF5 rgba(192, 218, 245, 1) n/a n/a

    *-blue-30

      Blue 20 $blue-20 #D5E7F8 rgba(213, 231, 248, 1) n/a n/a

    *-blue-20

      Blue 10 $blue-10 #EAF3FC rgba(234, 243, 252, 1) n/a n/a

    *-blue-10

    Utility/Content

    Example Name SASS var Hex RGBA Description
    Body Background $body-bg #f2f3f7 rgba(242, 243, 247, 1) The background color of the body element
    Body Text Color $body-color #3F4254 rgba(63, 66, 84, 1) The base font color for text
    Text Muted $text-muted #b5b5c3 rgba(181, 181, 195, 1) Font color for .text-muted CSS class as well as input field help text.
    Border Color $border-color #e4e6ef rgba(228, 230, 239, 1) Default border color for Bootstrap components
    Card Lines $card-border-color #ebedf3 rgba(235, 237, 243, 1) Border color for Bootstrap Cards

    Grays

    Example Name SASS var Hex RGBA Description
    Gray-100 $gray-100 #f8f9fa rgba(248, 249, 250, 1)

    *-gray-100

    Gray-200 $gray-200 #e9ecef rgba(233, 236, 239, 1)

    *-gray-200

    Gray-300 $gray-300 #dee2e6 rgba(222, 226, 230, 1)

    *-gray-300

    Gray-400 $gray-400 #ced4da rgba(206, 212, 218, 1)

    *-gray-400

    Gray-500 $gray-500 #adb5bd rgba(173, 181, 189, 1)

    *-gray-500

    Gray-600 $gray-600 #6c757d rgba(108, 117, 125, 1)

    *-gray-600

    Gray-700 $gray-700 #495057 rgba(73, 80, 87, 1)

    *-gray-700

    Gray-800 $gray-800 #343a40 rgba(52, 58, 64, 1)

    *-gray-800

    Gray-900 $gray-900 #212529 rgba(33, 37, 41, 1)

    *-gray-900

    .text-primary

    .text-success

    .text-info

    .text-warning

    .text-danger

    Custom Utilities

    These are custom utility classes that are added in addition to Bootstrap 4's utility classes

    Sizing Utilities

    Used as {prefix}-{breakpoint}-{value}

    Type Class prefix Breakpoints Value Usage
    Width Percentages .wp
    1. xs
    2. sm
    3. md
    4. lg
    5. xl
    0,5,10,15,20,25,30,33,35,40,45,50,55,60,65,66,70,75,80,85,90,95,100 % Setting widths by percentages relative to containing element
    Width by viewport .vw
    1. xs
    2. sm
    3. md
    4. lg
    5. xl
    1. 0
    2. 25
    3. 50
    4. 75
    5. 100
    Setting width by vw unit
    Height by viewport .vh
    1. xs
    2. sm
    3. md
    4. lg
    5. xl
    1. 0
    2. 25
    3. 50
    4. 75
    5. 100
    Setting height by vh units

    Position Utilities

    Used as {position}-{value}

    Position Prefix Values
    Top t 1,2,3,4,5,6 rem
    Right r 1,2,3,4,5,6 rem
    Bottom b 1,2,3,4,5,6 rem
    Left l 1,2,3,4,5,6 rem
    Top by Percent tp 0,5,10,15,20,25,30,33,35,40,45,50,55,60,65,66,70,75,80,85,90,95,100 %
    Right by Percent rp 0,5,10,15,20,25,30,33,35,40,45,50,55,60,65,66,70,75,80,85,90,95,100 %
    Bottom by Percent bp 0,5,10,15,20,25,30,33,35,40,45,50,55,60,65,66,70,75,80,85,90,95,100 %
    Left by Percent lp 0,5,10,15,20,25,30,33,35,40,45,50,55,60,65,66,70,75,80,85,90,95,100 %

    Text Utilities

    Used as text-{breakpoint}-{value}

    Font Size Breakpoint Prefix Values
    text xs, sm, md, lg, xl 0: 0rem, 25: 0.25rem, 5: 0.5rem, 75: 0.75rem, 100: 1rem, 125: 1.25rem, 150: 1.5rem, 175: 1.75rem, 200: 2rem, 225: 2.25rem, 250: 2.5rem, 275: 2.75rem, 300: 3rem, 325: 3.25rem, 350: 3.5rem, 375: 3.75rem, 400: 4rem, 425: 4.25rem, 450: 4.5rem, 475: 4.75rem, 500: 5rem, 525: 5.25rem, 550: 5.5rem, 575: 5.75rem, 600: 6rem,

    Color Utilities

    Class Description
    .hover-primary Changes the background color to the primary color on hover

    Themeable Aspects

    Theme Aspect Themeable
    BG Colors Yes
    Text Colors Yes
    Base Font Sizes Yes
    Font Yes
    Heading Sizes Contingent upon base font size
    Border Radius Yes
    Border Widths Yes
    Container Max Width Yes
    Buttons Yes
    Dropdown Padding Yes
    Popovers Yes
    Tooltips Yes
    Theme Aspect Themeable
    Hover/Active Colors No
    Icons No
    # of Columns No
    Modal sizes No
    Dropdown Width No
    Pagination No
    Navbar No
    Footer No
    Spinners No
    Progress Bars No
    Alerts No
    Tabs No
    Breadcrumbs No
    Badges No
    Label No
    Toasts No
    Blockquotes No
    Secondary Buttons
    Sizes
    Light Buttons
    Rounded
    Custom Buttons

    Font weight utilities

    • .font-weight-lighter
    • .font-weight-light
    • .font-weight-normal
    • .font-weight-semi-bold
    • .font-weight-bold
    • .font-weight-bolder

    Heading Utilities

    Heading 1 .h1

    Heading 2 .h2

    Heading 3 .h3

    Heading 4 .h4

    Heading 5 .h5
    Heading 6 .h6

    Misc Utilities

    The .lead class will make text stand out.

    You can use the mark tag to highlight text.

    This line of text is meant to be treated as deleted text.

    This line of text is meant to be treated as no longer accurate.

    This line of text is meant to be treated as an addition to the document.

    This line of text will render as underlined

    This line of text is meant to be treated as fine print.

    This line rendered as bold text.

    This line rendered as italicized text.

    An abbreviation of the word attribute is attr.

    Text Colors

    .text-muted

    .text-primary

    .text-warning

    .text-danger

    .text-success

    .text-info

    .text-dark-primary

    .text-dark-warning

    .text-dark-danger

    .text-dark-success

    .text-dark-info

    .text-light

    .text-body

    .text-subtitle

    .text-white

    .text-black-50

    .text-white-50

    .text-dark

    .text-dark-75

    .text-dark-50

    .text-dark-25

    Blockquotes

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

    Someone famous in Source Title

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

    Someone famous in Source Title

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

    Someone famous in Source Title

    Collapse

    Regular Collapse

    Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.

    Highlighted Collapse

    Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
    Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.

    Collapse with Icon

    Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
    Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.

    Highlighted Collapse

    Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.

    Accordion

    Some placeholder content for the first accordion panel. This panel is shown by default, thanks to the .show class.

    Some placeholder content for the second accordion panel. This panel is hidden by default.

    And lastly, the placeholder content for the third and final accordion panel. This panel is hidden by default.

    Some placeholder content for the first accordion panel. This panel is shown by default, thanks to the .show class.

    Some placeholder content for the second accordion panel. This panel is hidden by default.

    And lastly, the placeholder content for the third and final accordion panel. This panel is hidden by default.

    JT Custom Progress

    Extra Small Steps

    Some description of what we are seeing
    1. 1
      step
    2. 2
      Another step
    3. 3
      Some Step
    4. 4
      Some Step

    Small Steps

    Some description of what we are seeing
    1. 1
      step
    2. 2
      Another step
    3. 3
      Some Step
    4. 4
      Some Step

    Medium Steps

    Some description of what we are seeing
    1. 1
      step
    2. 2
      Another step
    3. 3
      Some Step
    4. 4
      Some Step

    Large Steps

    Some description of what we are seeing
    1. 1
      step
    2. 2
      Another step
    3. 3
      Some Step
    4. 4
      Some Step

    Checkout Steps

    Shows the progress of your checkout
    1. Choose a Budget
    2. Enter Job Details
    3. Checkout

    Instantiation

    new window.JTComponents.JTCustomProgress(root : {HTMLElement | DOMString})

    1. root - The containing div of the custom progress

    Markup

    The Custom Progress component relies on an underlying progress HTML element.

    For accessibility the containing div uses an aria tag to semantically connect the hidden progress bar to a hidden description.

    To shape the Steps use Bootstraps Border-radius utility classes found here https://getbootstrap.com/docs/4.6/utilities/borders/#border-radius

    This component relies on the following data- attributes

        
          data-jt-component="JTCustomProgress"  // denotes the root DOM node of the component
    
          data-jt-ref-array="JTCustomProgress.steps"  // maps to a Nodelist of the steps called $steps
    
          data-jt-ref="JtCustomProgress.progress"
        
      

    Methods

    • setProgressValue(number):void -- triggers rerender
    • calcActiveSteps():number -- returns the step number that the progress bar is active through
    • rerenderActiveSteps():void -- rerenders the steps determining whether or not they are active and applying the ".active" class
    • renderCurrentStep():void -- renders the current step with the ".current" class

    Events

    • change:jt:customprogress - fired from window when a the custom progress is rerendered

    JTOffcanvas

    Offcanvas can be customized via the Utility classes for height and width and the additional Bootstrap utils here https://getbootstrap.com/docs/4.6/utilities/sizing/

    Hey from LEFT
    Hey from RIGHT
    Hey from TOP
    Hey from BOTTOM

    Instantiation

    new window.JTComponents.JTOffCanvas(panel : {HTMLElement | DOMString}, trigger?: {NodeList | DOMString})

    1. panel - the section of HTML that will open and close
    2. trigger - optional -- the triggers that will open and close the panel

    Markup

    This components requires the following classes for styling:

    Element Purpose Markup
    Panel The section that will appear on and off the HTML page.

    The [direction] class can be:

    • left
    • right
    • top
    • bottom

    Additional classes for height and width can be added to customize the size of the panel.

    Custom job target classes for sizing can be found Here

    Bootstrap classes for sizing can be found here

    The [selector] can be any string that will uniquely identify the panel for instantiation.

    [padding] should be replaced with the appropriate padding needed for the pannel toggle. If the toggle button is right, you should add additional padding to the right to avoid content overlap

        
            <div class="JTOffcanvas__panel [direction]" data-jt-ref=[selector]>
                <div class="position-relative p-3 [padding]">
            
        
    
    Toggle The button inside of the panel that will trigger a close

    Additional utility classes can be used to position the button as needed

        
            <button class="btn btn-link close position-absolute p-4 [position]" data-jt-ref="JTOffcanvas.toggle">
                <i class="fal fa-times float-right text-2 text-muted"></i>
              </button>
    
            
        
    

    Methods

    • hide():void -- hides the panel
    • show():void -- shows the panel

    Events

    • hide:jt:offcanvas -- triggered when the panel is hidden
    • show:jt:offcanvas -- triggered when the panel is shown

    Spinners

    Regular

    Loading...

    Small

    Loading...

    Large

    Loading...

    X-Large

    Loading...
    Loading...

    Modals

    Bootstrap 4 Modal Documentation

    NOTE: When triggering the modal from an anchor tag, you must use data-target attributes in addition to href

    Pagination

    Regular Size

    Small Size

    Large Size

    Non-Table Pagination

    The JavaScript or links should be implemented with specific logic outside the scope of this theme.

    Showing X-Y of Z

    Tables

    Type Column heading Column heading Column heading
    Active Column content Column content Column content
    Default Column content Column content Column content
    Primary Column content Column content Column content
    Secondary Column content Column content Column content
    Success Column content Column content Column content
    Danger Column content Column content Column content
    Warning Column content Column content Column content
    Info Column content Column content Column content
    Light Column content Column content Column content
    Dark Column content Column content Column content

    DataTables

    This relies on the DataTables plugin found here

    https://datatables.net/

    For REACT please use this library

    react-data-table-component/

    Name Position Office Age Start date Salary Notes
    Tiger Nixon System Architect Edinburgh 61 2011/04/25 $320,800

    Click me

    • Hey there
    • Hey there
    • Hey there
    • Hey there
    • Hey there
    • Hey there
    • Hey there
    • Hey there
    • Hey there
    Garrett Winters Accountant Tokyo 63 2011/07/25 $170,750 Hey
    Ashton Cox Junior Technical Author San Francisco 66 2009/01/12 $86,000 Hey
    Cedric Kelly Senior Javascript Developer Edinburgh 22 2012/03/29 $433,060 Hey
    Airi Satou Accountant Tokyo 33 2008/11/28 $162,700 Hey
    Brielle Williamson Integration Specialist New York 61 2012/12/02 $372,000 Hey
    Herrod Chandler Sales Assistant San Francisco 59 2012/08/06 $137,500 Hey
    Rhona Davidson Integration Specialist Tokyo 55 2010/10/14 $327,900 Hey
    Colleen Hurst Javascript Developer San Francisco 39 2009/09/15 $205,500 Hey
    Sonya Frost Software Engineer Edinburgh 23 2008/12/13 $103,600 Hey
    Jena Gaines Office Manager London 30 2008/12/19 $90,560 Hey
    Quinn Flynn Support Lead Edinburgh 22 2013/03/03 $342,000 Hey
    Charde Marshall Regional Director San Francisco 36 2008/10/16 $470,600 Hey
    Haley Kennedy Senior Marketing Designer London 43 2012/12/18 $313,500 Hey
    Tatyana Fitzpatrick Regional Director London 19 2010/03/17 $385,750 Hey
    Michael Silva Marketing Designer London 66 2012/11/27 $198,500 Hey
    Paul Byrd Chief Financial Officer (CFO) New York 64 2010/06/09 $725,000 Hey
    Gloria Little Systems Administrator New York 59 2009/04/10 $237,500 Hey
    Bradley Greer Software Engineer London 41 2012/10/13 $132,000 Hey
    Dai Rios Personnel Lead Edinburgh 35 2012/09/26 $217,500 Hey
    Jenette Caldwell Development Lead New York 30 2011/09/03 $345,000 Hey
    Yuri Berry Chief Marketing Officer (CMO) New York 40 2009/06/25 $675,000 Hey
    Caesar Vance Pre-Sales Support New York 21 2011/12/12 $106,450 Hey
    Doris Wilder Sales Assistant Sydney 23 2010/09/20 $85,600 Hey
    Angelica Ramos Chief Executive Officer (CEO) London 47 2009/10/09 $1,200,000 Hey
    Gavin Joyce Developer Edinburgh 42 2010/12/22 $92,575 Hey
    Jennifer Chang Regional Director Singapore 28 2010/11/14 $357,650 Hey
    Brenden Wagner Software Engineer San Francisco 28 2011/06/07 $206,850 Hey
    Fiona Green Chief Operating Officer (COO) San Francisco 48 2010/03/11 $850,000 Hey
    Shou Itou Regional Marketing Tokyo 20 2011/08/14 $163,000 Hey
    Michelle House Integration Specialist Sydney 37 2011/06/02 $95,400 Hey
    Suki Burks Developer London 53 2009/10/22 $114,500 Hey
    Prescott Bartlett Technical Author London 27 2011/05/07 $145,000 Hey
    Gavin Cortez Team Leader San Francisco 22 2008/10/26 $235,500 Hey
    Martena Mccray Post-Sales support Edinburgh 46 2011/03/09 $324,050 Hey
    Unity Butler Marketing Designer San Francisco 47 2009/12/09 $85,675 Hey
    Howard Hatfield Office Manager San Francisco 51 2008/12/16 $164,500 Hey
    Hope Fuentes Secretary San Francisco 41 2010/02/12 $109,850 Hey
    Vivian Harrell Financial Controller San Francisco 62 2009/02/14 $452,500 Hey
    Timothy Mooney Office Manager London 37 2008/12/11 $136,200 Hey
    Jackson Bradshaw Director New York 65 2008/09/26 $645,750 Hey
    Olivia Liang Support Engineer Singapore 64 2011/02/03 $234,500 Hey
    Bruno Nash Software Engineer London 38 2011/05/03 $163,500 Hey
    Sakura Yamamoto Support Engineer Tokyo 37 2009/08/19 $139,575 Hey
    Thor Walton Developer New York 61 2013/08/11 $98,540 Hey
    Finn Camacho Support Engineer San Francisco 47 2009/07/07 $87,500 Hey
    Serge Baldwin Data Coordinator Singapore 64 2012/04/09 $138,575 Hey
    Zenaida Frank Software Engineer New York 63 2010/01/04 $125,250 Hey
    Zorita Serrano Software Engineer San Francisco 56 2012/06/01 $115,000 Hey
    Jennifer Acosta Junior Javascript Developer Edinburgh 43 2013/02/01 $75,650 Hey
    Cara Stevens Sales Assistant New York 46 2011/12/06 $145,600 Hey
    Hermione Butler Regional Director London 47 2011/03/21 $356,250 Hey
    Lael Greer Systems Administrator London 21 2009/02/27 $103,500 Hey
    Jonas Alexander Developer San Francisco 30 2010/07/14 $86,500 Hey
    Shad Decker Regional Director Edinburgh 51 2008/11/13 $183,000 Hey
    Michael Bruce Javascript Developer Singapore 29 2011/06/27 $183,000 Hey
    Donna Snider Customer Support New York 27 2011/01/25 $112,000 Hey
    Name Position Office Age Start date Salary

    Messages

    Popovers

    NOTE: to initiate Popovers you must use the following script after your HTML has been loaded into the DOM.

    
      $('[data-toggle="popover"]').popover();
    
    

    Trigger on Click

    Trigger on Hover & Focus

    Tooltips

    Toasts

    Alerts

    Here is a message.

    Here is a message.

    Here is a message.

    Here is a message.

    Here is a message.

    Here is a message.

    Here is a message.

    Here is a message.

    Circular Badges

    Circular Badges w/ Icons

    Badges

    Primary Secondary Success Danger Warning Info Light Dark
    Primary Secondary Success Danger Warning Info Light Dark

    Labels

    Regular

    Primary Danger Warning Success Info Dark

    Light

    Primary Danger Warning Success Info Dark

    Outline

    Primary Danger Warning Success Info Dark

    Sizes

    Small Regular Large

    Labels are made by using Utility Classes. You can mix and match the classes to create whatever combination you need.

    Ribbons

    Card title
    Card subtitle

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Card link Another link Ribbon
    Card title
    Card subtitle

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Card link Another link Ribbon
    Card title
    Card subtitle

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Card link Another link Ribbon
    Card title
    Card subtitle

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Card link Another link Ribbon

    Ribbons are made with Bootstrap Utility Classes. Their containing element should have the class position-relative

    JT Navbar


    NOTE: You must use data-target attributes in addition to href

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit.

    NOTE: You must use data-target attributes in addition to href

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit.

    Basic

    Arrows w/ Popovers

    To align text inside the arrows, use the Bootstrap flex utilities

    Text
    Text
    Text

    Deprecated Version (should migrate to newer progress bar)

    1. Some Step
    2. Some Step
    3. Some Step
    4. Some Step
    5. Some Step

    Contextual alternatives

    Multiple bars

    Striped

    Animated

    Hello, world!

    This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.


    It uses utility classes for typography and spacing to space content out within the larger container.

    Learn more

    List groups

    Cards

    Header

    Primary card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Secondary card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Success card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Danger card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Warning card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Info card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Light card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Dark card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Primary card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Secondary card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Success card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Danger card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Warning card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Info card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Light card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Header

    Dark card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Card header

    Special title treatment
    Support card subtitle
    Image cap

    Some quick example text to build on the card title and make up the bulk of the card's content.

    • Cras justo odio
    • Dapibus ac facilisis in
    • Vestibulum at eros

    Card title

    Card subtitle

    Some quick example text to build on the card title and make up the bulk of the card's content.

    Card link Another link

    High Charts

    Form Validation Example

    Front-end validation is handled by using Bootstrap conventions.

    The basic idea is this:

    1. Add HTML validation attributes to your form input fields
    2. Follow Bootstraps form structure Bootstrap Docs
    3. Turn off built-in browser messages for validation by applying the no-validate attribute to the form element.
    4. call [myformelement].checkValidity(); in your javascript
    5. Bootstraps styles, if your HTML is correct will handle displaying validation messages

    Validate All Fields

    This is legit!

    This is wrong

    This is legit!

    This is wrong

    Validate Some Fields

    This is legit!

    This is wrong

    This is legit!

    This is wrong