Components

Each component explained in detail.

If you read the Structure documentation up until this point you will know that you can easily integrate components just by copy pasting them inside your page-content.

All components, unless specifically mentioned must be placed inside the page-content. Whenever a component requires a part of it to be placed outside the page-content, we will add a warning so you will know this requires a bit of attention. Not placing them in the correct place can lead to components not working properly.

TIP: Copy and Paste Components from the Sample Files included.

To use components as easy as possible, each component is written in a separate page, and added in it's own card.

We strongly recommend you take copy and paste each component from the .html file you want into your pages, and read this documentation for your desired component to understand how to customize it even more.

We will explain each component and how to use it, but you will see them even better while using the samples provided.

Missing Components in Documentation?

There are some components we didn't add here, for example, the typography page. These are elements that are simply copy and paste and really don't need any extra explanations. However, if you do not understand something, regardless how small it is, please don't hesitate to contact us. We are always here to assist!

Main Card Style

Unless you are using a special card design from the one in the pack, most elements are inserted into cards.
These cards are made to create the nice, rounded and shadow effect, and also to create the margins around the elements inside the card.

 
1
2
3
4
5
6
<div class="card card-style">
    <div class="content UTILITY_SPACING">
        <h1>Hello.</h1>
        <p>I am a card.</p>
    <div>
</div>
 
 
This is the default card structure.
Line 1 defines the div as a card. Adding card-style will create the rounded borders and shadows and also leave a margin between it and the edges
Line 2 is the content. This will create a margin inside the card itself, to keep things

Notice that we have a UTILITY_SPACING space left in the content. This can be used to add utilities as mentioned in the structure documentation for adjusting the space between the content and the card. For example, let's say you want to have no margin bottom for your content, then you would simply add mb-0 instead of UTILITY_SPACING. You can use any spacing property here as explained by us in the Structure Utility Classes Chapter ( click to view ) or as explained by Bootstrap Spacing Utility chapter.

There are more card styles, but we will get to those in the following chapters. We used this intro so we can explain the basic element you will most often use.

Accordions

Built using the Bootstrap Collapse System - Read more on Bootstrap Collapse Documentation

We will explain each accordion we have in our component-accordions.html page in part, but please check the page as well and use the component by copy pasting it from there and using this documentation as a guideline.

Accordion Classic
 
01
02
03
04
05
06
07
08
09
10
11
12
<div class="accordion" id="accordion-1">
    <div>
        <button class="btn accordion-btn" data-toggle="collapse" data-target="#collapse1">
            <i class="fa fa-heart color-red2-dark mr-2"></i>
            Accordion Title 1
            <i class="fa fa-plus font-10 accordion-icon"></i>
        </button>
        <div id="collapse1" class="collapse" data-parent="#accordion-1">
              <!-- add your content here -->
        </div>
    </div>
</div>
 
 
Line 1 defines this div as the accordion, and the ID is used to target elements, so one closes when the other opens.
Line 2 to Line 11 is an accordion element. Duplicate these to create a new accordion item
Line 3 is the accordion button that you will tap to deploy. Please note that this has the data-toggle="collapse" which is requied by javascript to define this element as a collapsible element. The data-target="#collapse1" must be identical to the ID of the div that will be collapsed or opened, in our case on line 8.
Line 4 is the FontAwesome 5 icon you wish to use
Line 5 is the Accordion Button Text
Line 6 is the Acccordion button right icon
Line 7 closes the button of the accordion
Line 8,9,10 is the accordion content that will show when tapping the button. This must have the ID identical to the button data-target and the data-parent must be identical to the one in line 1 so the accordion will know to close this button if you tap another one.
Line 12 Closes the accordion

To create more accordion buttons simply duplicate lines 2 to 11, and replace #collapse1 on line 3 and line 8 with a unique name, for example #collapse2 and collapse2.
Accordion Colors
 
01
02
03
04
05
06
07
08
09
10
11
12
<div class="accordion" id="accordion-1">
    <div class="card card-style shadow-0 bg-highlight">
        <button class="btn accordion-btn" data-toggle="collapse" data-target="#collapse1">
            <i class="fa fa-heart color-red2-dark mr-2"></i>
            Accordion Title 1
            <i class="fa fa-plus font-10 accordion-icon"></i>
        </button>
        <div id="collapse1" class="collapse bg-theme" data-parent="#accordion-1">
              <!-- add your content here -->
        </div>
    </div>
</div>
 
 
The color accordion works on the exact principle as the classic one with the following exceptions
The accordion button on line 2 is now wrapped in a card with a background color attached, and the accordion content on line 8 has the class bg-theme, to keep it on the background of the page.
Accordion Cards

This card works on the same principle as the classic card, but, the button is now a Background Card, as explained in the cards chapter to follow.

Action Sheets & Modals

Custom built for beautiful effects and interactivity.

The Action Sheet box must be placed outside the page-content

The action sheets function on the Menu principle described in the Menu Structure in the Structure Documentation ( click ) These are in essence simple bottom, top or modal placed menus that get triggered by any button on the screen.

You can place any content you want inside action sheets, give them effects, and place them at the top, bottom or make them modal. Please check the Menu Structure to understand how to use these. After you understand how to trigger them, just copy and paste or build any component inside them, treating them as a individual entity.

Ads

Built and designed using better ad standards.

Ads can be placed inside the page content if the are not fixed or timed. For example, the most popular ads on mobile devices are the 300x50 and 300x250 banners. These can be created by adding the following code inside the page-content whenever you need them

Ad 300x50 - in Content
 
1
2
3
<div class="ad-300x50">
    <!-- put your ad code here -->
</div>


Ad 300x250 - in Contnet
 
1
2
3
<div class="ad-300x250">
    <!-- put your ad code here -->
</div>

These are classic boxes that are not fixed, and can be added in between the content area.

Sticky/Fixed 300x50 Ads

The following DIV must be placed outside the page-content

 
1
2
3
<div class="ad-300x50 ad-300x50-fixed">
    <!-- put your ad code here -->
</div>

This ad will stay fixed above the footer bar.

Show on Scroll Ads

The following DIV must be placed outside the page-content

 
1
2
3
4
5
6
<div class="scroll-ad">
    <img src="img.jpg" class="shadow-l">
    <h1 class="text-uppercase font-900 font-18 color-white">Title</h1>
    <em class="font-12">Flexibile, fast and fully featured. <br> Pure mobile awesome!</em>
    <a href="#">Button</a>
</div>

This add will appear when you are scrolling, but hide at the top and bottom of the page. This can be found inside component-fixed-ads.html

Timed Ads

The code below can be placed anywhere, but the Action Modal for the ad must be placed outside the page content.

 
1
data-menu="ad-timed-1" data-timed-ad="5"

The ad time box itself is simply a modal menu, that is triggered by the above code. The data-timed-ad will represent the timeout until the close button is visible. Please check the component-ad-timed.html to see the modal windows for these ads. Simply copy paste them and replace the content inside with your own.

Automatically triggering timed ads.

You can also trigger a timed ad automatically, by adding the following parameter to the code above

 
1
data-menu="ad-timed-1" data-timed-ad="5" data-auto-show-ad="10"

The data auto-show-ad is represented in seconds and will automatically show the ad in 10 seconds. To add this to the page without a button being visible, simply add an empty a href="#" with this data and don't add any color to it. Keep it somewhere on the page.

Back to Top

A simple and useful component

Back to Top badge must be outside the page-content

To use the Back to Top components, simply open component-back-to-top, and take the HTML code you wish for the badge you want and copy it outside the page-content. The code will handle the rest and will hide and show when it's needed.

Breadcrumbs

Navigation depth and returning.

This feature works using the Bootstrap default Breadcrumb component added inside the card. This feature has been requrested by many of our customers in the past. We must warn, that based on Mobile UX standards, your flow should never be so deep that it requires a breadcrumb. Use this component only where it's necessary.

Buttons and Icons

The default Bootstrap Buttons will work perfectly, this is just an enhanced style of the Bootstrap System

The buttons seen in Bootstrap's Documentation are great, but we wanted to give them a more mobile personallity and extend their design to make them look even better. With this being said, you can use any button from Bootstrap, or use the ones found in component-buttons.html

 
1
<a href="#" class="btn UTILITY_CLASSES_HERE">Button</a>
Replace UTLITY_CLASSES_HERE with your utility

Our button class is identical to that of Bootstrap, but, with a few utility classes added, we can extend the beauty of these buttons to limitless power. Add any of the following utility / secondary classes to the buttons you want. You can use multiple utility classes combined.

Control Sizes
  • btn-xs
  • btn-s
  • btn-sm
  • btn-m
  • btn-l
  • btn-xl
  • btn-xxl

Placement
  • btn-center-s
  • btn-center-m
  • btn-center-l
  • btn-full

Color and Background - View available Colors
  • bg-yourColor
  • color-yourColor

Font Size, Shadows, Text Transform - View available Utility Classes

Instant Example
Let's say you want to create a medium sized button, that is full width with rounded corners and a large shadow, that uses the background of your page and has a white bolded and uppercased text.
 
1
<a href="#" class="btn btn-m rounded-sm shadow-xl bg-highlight color-white font-900 text-uppercase">Button</a>
As you can see , the code is super simple and intuitive, simply adding the utility you want to give it a new style.

3D Buttons
To use 3D buttons, you have to use 2 bg-colors as a utility class colors. One dark color for the bg parameter and one light color for the border. Also, be sure to add the btn-3d class:
 
1
<a href="#" class="btn btn-3d btn-m bg-red2-dark border-red2-light">Button</a>
 
 

Icons

Icons are pretty much based in the same concept as buttons, the only difference is that icons don't support centering by using an icon class. You can center icons by adding them inside a paragraph and giving that paragraph the class "text-center".
Beside this, the icons are built in the same way. Let's take an example:

 
1
<a href="#" class="icon icon-xs rounded-xl bg-facebook"><i class="fab fa-facebook"></i></a>

Add the class icon, followed by a sizing class, then the background you want. Inside the icon, just place a font-awesome icon

Control Sizes
  • icon-xs
  • icon-s
  • icon-sm
  • icon-m
  • icon-l
  • icon-xl
  • icon-xxl

Cards

The most flexible Cards in the World.

Our card/caption system has been called by our customers as simply the best solution for creating incredibly powerful cards, while at the same time giving you incredible flexibility. The classic Bootstrap code for cards still applies if you wish to use their designs.
What we did, is take their code, and slightly enhance it to make it even better than it already is, by adding options for custom backgrounds, images, lazy loading, rounded borders, shadows, and much, much more.

Using cards, you can create any style of caption you want, in less than 5 minutes. These are incredibly powerful, and we'll explain each part.

Pages built using cards
  • Logins & Registers
  • Splash and Walkthroughs
  • Event Cards
  • About Us Page
  • ... and more

There are 2 types of cards. The classic "Expanding Card", that expands depending on the content inside, and the "Height Control" card where you can use extra flexibility in their content.



Expanding Card

The expanding card, is the main card style we use for our entire card system. This can support simple styles. Let's explain.

 
1
2
3
4
5
6
<div class="card card-style UTILITY_STYLING">
    <div class="content UTILITY_SPACING">
        <h1>Hello.</h1>
        <p>I am a card.</p>
    <div>
</div>
 
 
Line - 1 has the class card and card style required for the rounded borders and margins from the side of the screen. You also have the option to add utility styling classes. Here are all utility stylings available. Line - 2 is the content class which sets a space between the card and the margins. If you want your card to be full width, don't use this and also remove the card-style class, However, if you want to use the content and need to modify the UTILITY_SPACING, distance between the content and the inside of the card, you can use the margins & paddings in the Utility Documentation

Using the exact system described here is how we created the component-cards-gradient.html and component-cards-content.html. You can check these pages for live examples to better understand and see the live code for these elements.

Height Control Cards.

These are the cards which we used to create the awesome sliders, events pages and more. These have a few extra parameters, but offer incredible flexibility in creating immersive and beautiful elements.

 
1
2
3
4
<div class="card UTILITY_STYLING" data-card-height="VALUE">
      <!--- Card types go here-->
      <div class="card-overlay bg-VALUE opacity-VALUE">
</div>

This is the basic structure of a card with height control. Let's explain how it works.

Line - 1 has the class card and card style, which we explained at the very top of this documentation, but you also have the option to add utility styling classes. Here are all utility styilings avaiable.
  • bg-COLOR - available colors in Utility Colors
  • bg-gradient-COLOR - available colors in Utility Colors
  • shadow-VALUE ( value = 0, s, sm, m, l, xl ) in Utility Shadows
  • rounded-VALUE ( value = 0, s, sm, m, l, xl ) in Utility Rounded
  • Spacings - margins & paddings using the values in the Utility Documentation
  • bg-NUMBER ( NUMBER can be between 1 and 30. These images can be found and replaced with your own by using CTRL+F / CMD+F in style.css or if you're using SCSS directly in zDemo.scss

Line 1 also has the option of data-card-height. This value can be expressed in pixels, for example, data-card-height="300" or if you want the card to be the full size of the screen, use data-card-height="cover"
Line 2 is where the card types will be added, will be explained below.
Line 3 is the overlay of your card, meaning the background color that will be over the image, but under the text. In the "Expanding Card", this color was added in the first line, but here, the first line is the background image, and we use the color to place over the image. Replace bg-VALUE with the color you want from Available Color List and the opacity-VALUE with an opacity you want from the Available Opacity List to make the background image more or less visible.
Line 4 closes the card itself.


Card Types
 
01
02
03
04
05
06
07
08
09
10
11
<div class="card-center">
    I will appear in the center of the Caption
</div>
  
<div class="card-top mt-3 ml-3">
    I will appear in the top part, pushed from the left and top by 15 pixels
</div>
  
<div class="card-bottom mb-3 ml-3">
    I will appear in the bottom part, pushed from the left and bottom by 15 pixels
</div>

The card types are added inside the Height Control Cards, in line 2. When using cards with a fixed height, you can use these cards to place content inside that card, whever you want. You can use as many elements you want, and move them around using the Spacing Utilities.

To see perfect examples of how these cards can be used, please check the component-cards-captions.html, where you will have live examples of multiple variations and also the component-cards-infinite.html to see an example where the background image is used is an infinite repeating image.

Preloading Images in Cards

To preload an image in a card, in the starting div of the card, you will have to add this structure

 
1
<div class="card preload-img" data-src="image.png" data-card-height="VALUE">
 
 

In this scenario, you can still use utility styles in your card, but you can no longer use the classes for bg-NUMBER for images. Everything else in the above code stays the same as described before.

Which is better? Expanding or Fixed Height

Here is a list that allows you to better understand which card is best suited for your needs.

Use case

Basic Use ( simple page elements )

Full Screen Elements

Background Image/Infinite

Background Color (gradient/simple)

Content Position - top/center/bottom

Cover Sliders & Walkthroughs

Expanding Card

Fixed Height Card

If you want to have full control over your background image, color, opacity, and the position of your text inside the card, then the fixed height card will work perfectly for you.

If you want to use simple text, or elements added inside a card, without caring about their placement, and just want them to flow with the page, then the Expanding classic card is perfect for you.

Scroll Over Cards

Content scrolling over cards.

These cards allow your content to scroll over a card, giving the effect of depth. To use this, simply follow the structure mentioned bellow.

 
1
2
3
4
<div class="card card-fixed mb-n5" data-card-height="450">
     <!-- scroll over card content-->
</div>
<div class="card card-clear" data-card-height="450"></div>
 
 

The code above will be placed above the page-content class. Inside line 2 you can place the content you want to scroll over. Notice that both line 1 and line 4 have the data-height attribute set to 450px. This will be the size of the div that you scroll over. You can increase or decrease as you need it.
That's all there is to it! Adding this to any page above the page content will create an element at the top that the other content scrolls over. You can also add a drag line inside your next card as follows

 
1
<div class="drag-line"></div>
 
 

Adding this in the page content will create a line that indicates the page should be dragged/swiped up.

Carousels

Slide anything.

Our page uses OwlCarousel 2.2.1 ( please do not update to the latest version. It brings only bugs and issues ). We've improved the carousel Styles, and JavaScript plugin codes to make it faster, more reliable and overall a better experience includinging in PWA mode. You can view the full documentation for OwlCarousel here using this link.
Please do not update to a newer version. We've made sure that this version is optimized and works without bugs and issues and is a futureproof solution.

However, let's explain the basic structure of a carousel, so we can detail a few elements.

 
1
2
3
<div class="SLIDER_TYPE owl-carousel DOTS_OPTIONS">
    <!--Add your cards here -->
</div>  
 
 
The above code is the default used to create any slider we use. Here are the parameters we can use to setup different sliders with ease.

SLIDER_TYPE
You can use single-slider to generate a slider that will have only 1 slide per view, or double-slider which will generate a slider that will have to slides per view. In the both cases, in our example, we used Fixed Height Cards to create the beautiful sliders you see throuhgout our page. These allow control over where the text is added and also support the Utility Classes for shadows, rounded borders, background colors, gradients and everything you can attach to a card.
You can also use cover-slider if you want to create a full screen slider. This must be combined with cards that have the data-card-height="cover"

DOTS_OPTIONS
This area will allow you to use navigation dots for your slider. You can replace this with owl-no-dots to remove the dots, or owl-dots-under to show the dots under the slider or owl-dots-over to show the dots above the slider. You can also add the class owl-has-controls to show left and right arrows.

<!-- Add your cards here -->
This is the main area of your carousel. Regardless if you use a double-slider, single-slider or cover slider, each individual slide must be in it's own separate div. This means for example you can't start writing a heading, a paragraph and a button and expect the slider to know this is a slide. These must be wrapped in individual divs. In this area, the cards are the most useful component you can use. We recommend using Fixed Height Cards as these will give you the best control over the slider size and over each individual slide text element and image.

Please refer to the component-carousels.html page for more, and let us know if you have any issues, we'll gladly help out.

Charts and Graphs

Powered by charts.js - the best chart plugin system.

Charts.js offers the absolute best chart system in the world. You can see the JavaScript required to generate these in the custom.js file by searching (CTRL+F Windows or CMD +F Mac) for charts.
The codes there can be adapted for your use, and a full documentation on how to create your own charts and create simply insanely powereful solutions can be found on

Charts.JS - https://www.chartjs.org/docs/latest/ - Official Documentation

Chips

Small pieces of information

Chips are great for showing a tiny button that can house a small piece of information with an icon or an image. Check the component-chips.html page. These elements are self explanatory, and only require you to copy and paste them.

You can deploy menus from chips by using the data-menu attribute, or anyother snackbar or toast or collapsible as long as you follow the trigger structure mentioned in each chapter.

Collapse

Built using the Bootstrap Collapse System - Read more on Bootstrap Collapse Documentation

Collapsible elements are designed to house lists of links. These are super useful when you have a lot of listed information available for a single subject. In our example, inside component-collapse.html, we simply created a list group, and added the logic of Bootstrap 4.4 collapse. You can do the same by following the next logic

 
1
2
<a data-toggle="collapse" href="#collapse-1"><!-- Collapse Trigger is Here --></a>       
<div class="collapse" id="collapse-1"><!-- I will appear when you tap the trigger--></div>                               

Any element can be made collapsible, as long as you have the data-toggle="collapse" on the trigger, and the class collapse on what will be shown when pressing the trigger and make sure your href="UNIQUE_NAME" on the trigger is identical to the id="UNIQUE_NAME" on the element that will be shown when pressing the trigger.

For more advanced uses, please check the Bootstrap Collapse Documentation

Columns

Built using the Bootstrap Columns System - Read more on Bootstrap Columns Documentation

Our entire column system is based entirely on the Bootstrap system. Remember, our products are Mobile Templates, so we highly recommend that you don't exceed 4 columns, since Mobile screens start from about 340px, and having more than 4 columns can lead to text being broken.

This system is also applied for Gallery thumbnails, profile galleries. You can view demos of the columns inside the component-columns.html

Read more on Bootstrap Columns Documentation

Device Detection

Serve content based on Android, iOS or none of these devices.

To show different content for different operating systems the process is incredibly simple. All you have to do is add the class show-android to show for Android devices, or show-ios to show on iOS devices. You can also add the class show-no-device to show only for devices that aren't Android or iOS

Disqus and Facebook

Integrating Comment Systems

If you visit the component-disqus-comments.html or component-facebook-comments.html you will find that these systems are integrated by the embed codes provided by Facebook or Diqus.

How to Embed Facebook Comments - https://developers.facebook.com/docs/plugins/embedded-comments/
How to Embed Disqus Comments - https://blog.disqus.com/how-to-embed-disqus-comments-on-your-website

Dividers

Separating Content Elements.

Dividers serve the purpose of leaving a bit of space between your content elements. These are very simple to use and integrate in your page. Dividers can use the ultility classes for background colors by attaching the class bg-VALUE, and you can find the colors available in the Utility Colors Chapter

Dividers are very self explanatory little pieces of code you can find in the component-dividers.html page. If you use a divider and wish it to be full width simply use the divider bg-VLAUE class. If you want your divider to have the same left and right margin as your content, simply add divider-margins as a utility class.

Embeds and Embedly

Embed any content in your site.

There are two main methods to embed content in our product. One and the most classic known is by copying the embed HTML code.

 
1
2
3
<div class="responsive-iframe">
    <iframe src='https://www.youtube.com/embed/c9MnSeYYtYY' frameborder='0' allowfullscreen></iframe>
</div>

The classic embed code above will automatically make the iframe responsive on Mobile Devices. Simply copy your iframe inside the div, and remove the width and height parameters that the iframe embed comes with.

Enter Embedly - Embed anything!

The component-embedly.html uses the most advanced embed system in the world at the moment available to HTML sites. Embedly generates an embed code for most websites you throw at it. You can simply visit https://embed.ly/code to generate an embed code and then copy it in the page.

File Upload - Web API

Upload and decode images using Web API's .

The file upload API allows you to upload images and decript their value, when they were taken, modified, size and file name. This is only a front-end element that can be found inside custom.js by searching (CTRL+F windows / CMD+F mac) for "upload-file" to find the JS behind it. You can use your own code logic to programatically adapt the JS for your needs.

By default, this component is found in component-file-upload.html, and you can use only the file-data div to use only the upload file input or use the upload-file-data under this as well to get the list information about what the image contains once the user uploads it.

You can learn more about the File Web API here - https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications

Geo Location - Web API

Get device approximate location.

The GeoLocation available to websites uses WebAPI, which triangulates based on WiFi and Cellular towers. This does not give full access to the internal device GPS like a native application would, meaning, the location outputed will not be 100% accurate. To get the device location, you will simply have to add get-location class to a button, and add a empty div or paragraph with the class location-coordinates

To output the location on a map, simply embed a responsive map, with any location you want and give it the class location-map.

Once the user taps the get-location button, they will be prompted to approve this ( which is mandatory and cannot be removed ). Once they approve this, the coordinates will be tracked and outputed to the location-coordinates element. If you use a map as well, our code will automatically add these coordinates to the map.

Inputs

Built using the Bootstrap Input System - Read more on Bootstrap Input Documentation.

Beside the classic inputs offered by Bootstrap, we created a few styles to complement the existing design found in our product. These are easy to use and you can simply copy paste them from the input-components.html. However, there are a few things to note.

 
1
2
3
4
5
<div class="input-style input-style-2 input-required">
    <span class="color-highlight">Email</span>
    <em>(required)</em>
    <input class="form-control" type="email" placeholder="">
</div>        

Take the following input style for example. This will show the span over the input text until the user starts typing. When the user starts typing, the span will move up and show the interior of the field.
Both input-style-1 and input-style-2 can have the span activated by default if you want to use a placeholder, by adding span class="input-style-1-active" to the span.

How do I use these inputs?

Simply open component-inputs.html and copy and paste them in the form you want. The same applies to the checkboxes and radio buttons included.

How are these validated?

We use regular expressions (RegEX) to validate the fields. With this being said, in case you require a more extensive plugin for validation, you can include any jQuery plugin you want by following the How do I add my own JavaScript code developer note.

Images

Preloading and styling your img

The image tag supports LazyLoad preloading to make it show after the other more important parts of the page are loaded. This is used to improve page speed and is recommended to be used wherever possible.

 
1
<img class="img-fluid preload-img" src="images/empty.png" data-src="location/image.png" alt="image">
 
 
This should be the standard structure when you are preloading an image.
Class: img-fluid - is to be used when you want your image to maintain aspect ratio and expand to the full size of the container it's placed in.
Class: preload-img - is the class you should add to tell the code that this image will be preloaded.

Attribute: src="images/empty" - will be loaded by default when your page loads, this should be a very, very small image.
Attribute: data-src="image.png" - will be the actual image that will be loaded once your page finishes loading important elements.

You can style your images further by using the Utility Classes to make your images round, and more.

Link Lists / Groups

Built using the Bootstrap List Groups System - Read more on Bootstrap List Groups Documentation.

List groups from Bootstrap can be used as shown in the documentation example link above. However, to keep the design of our product more in theme with its style, you can use the examples below. These use the same class architecture as bootstrap, but offer more design features, and are also compatible with switches.

Creating a List Group / Link List

A link list is a list of items that include a single line of text or a secondary description line with an icon to the left and right side. These are super simple to use and support the utility classes for colors and also support badges and switches.

 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<div class="list-group list-custom-SIZE_VALUE">
    <a href="#">
        <i class="fa font-14 fa-cog color-brown1-dark"></i>
        <span>Ultra Mobile</span>
        <strong>Only use this line for large</strong>
        <i class="fa fa-angle-right"></i>
    </a>    
    <a href="#">
        <i class="fa font-14 fa-bars rounded-xl shadow-xl bg-blue2-dark"></i>
        <span>Azures Mobile</span>
        <strong>Only use this line for large</strong>
        <span class="badge bg-red2-dark font-10">$25</span>
        <i class="fa fa-angle-right"></i>
    </a>       
    <a href="#">
        <i class="fa font-14 fa-check rounded-sm shadow-m bg-green1-dark"></i>
        <span>Apptastic</span>
        <strong>Only use this line for large</strong>
        <span class="badge bg-green1-dark">FRESH</span>
        <i class="fa fa-angle-right"></i>
    </a>       
    <a data-trigger-switch="switch-1" class="border-0" href="#">
        <i class="fa font-14 fa-star shadow-s bg-yellow1-dark"></i>
        <span>Kolor Mobile</span>
        <strong>Only use this line for large</strong>
        <div class="custom-control scale-switch ios-switch">
            <input type="checkbox" class="ios-input" id="switch-1">
            <label class="custom-control-label" for="switch-1"></label>
        </div>
        <i class="fa fa-angle-right"></i>
    </a>            
</div>
 
 

The above code will generate a list group, let's dive in the code and explain it line by line.

Line 1 defines this as being a list group and also, defines its size. You can replace the SIZE_VALUE with small or large. If you select the size as being large, then, you can use lines 5, 11,18,25. Otherwise, delete these lines. These are the second line of text in the case of large lists, like we use in our demo in the component list.

Lines 2 to 7 generate a list, with a colored icon. - the icon is part of the font-awesome group, and uses the color-VALUE found in the Utility Colors chapter. The last icon in this case is a simple arrow to the right side. This icon must be kept in all styles.

Lines 8 to 14 and 15 to 21 The same principle as the first group applies here, with the exception of the icon, which now has utility classes for rounded borders and the badge. The badge is a smple span class with a background color and a font size. This can be used to showcase a price, the fact that it's new, hot or other useful tiny messages

Lines 22 to 31 Works on the same principle as the previous ones, with an exception that we have inserted a switch in it. You can learn all about switches in the Switches chapter. The switch will be triggerable by the list as well by using the "data-trigger="unique-number" that will corespond to the switch input id.

For a better understanding of the list groups, simply check the component-link-lists.html, where all of these are exemplified. We also use these to list the pages and the components, so you can view live use cases for them as well.

Notifications & Alerts.

Alerts using the Bootstrap Alerts System - Read more on Bootstrap Alerts Documentation.
Notification boxes using the Bootstrap Toast System - Read more on Bootstrap Toasts Documentation

Classic Alerts

Using the default alerts of Boostrap means you can use any of the examples shown in the component-notifications.html, which include a span for an icon that can have any font awesome icon included in the pack. Also, you can view more examples of alerts on https://getbootstrap.com/docs/4.4/components/alerts/

Dropdown Notifications

The notification that dropdown from the top must be placed outside the page-content

Each notification that comes from the top of the page is placed outside the page content of the component-notifications.html page. These are designed to mimic the design of their mobile counterparts. Let's explain the general code of each these.

General Explanation

This will just explain the general logic of the notification system. Please check after the page-content class is closed in component-notifications.html to view more examples. Each notification includes simple elements inside you can easily modify using the Utility Classes to suit your needs.

 
1
2
3
4
5
6
7
<div id="notification-1"
    data-dismiss="notification-1"
    data-delay="3000"
    data-autohide="true"
    class="notification NOTIFICATION_TYPE bg-dark1-dark">
        <!-- check the component-notifications.html page, after the page-content closes to see more-->
</div> 

Line 1- defines the ID of the notification. This will be used in case you want to trigger the notification from a button on the page. You can trigger it by adding data-toast="notification-1" .Be sure this is always a unique number. This is also used to dismiss the notification from a button, or in our case, if the user taps it.
Line 2- is the data-dissmiss attribute which shares the same unique ID as line 1. This is used if you want to dismiss the notitifcation by tapping it.
Line 3- is the delay. this is how long the notification will be visible on screen before Line 4, if set to true, will hide it back.
Line 5- is the class used for the notification and the background color you wish to use.

What notification types can I use?
You can replace the class NOTIFICATION_TYPE with any of the following styles
  • notification-android
  • notification-ios
  • notification-material
You can also remove this class completely and style your notification however you wish using the Utility Classes. The best way to understand these notifications is simply to copy paste them, and adapt the content to your needs.
Developer Notes
You can use programatic JS deployment for the dropdown notifications by checking the Toast JavaScript Behavior of Boostrap.

Offline Detection.

Automatic process of detecting when you are online/offline

The offline detection system is automatic, and shows a small red or green text depending if you're online or not. These messages can be edited from scripts/pwa.js by searching for (CTRL+F windows or CMD+F mac) for "Offline Alerts"

Preloaders.

Show a loader before your page loads.

The preloader is automatically added to each page using the AJAX transition system and hidden when the page load is completed.

 
1
<div id="preloader"><div class="spinner-border color-highlight" role="status"></div></div>
 
 
The following code represents the preloader. Inside we have have the spinner-border. You can replace the color of the preloader by replacing color-highlight with any of the colors available in the Utility Colors.

Unlike our competitors who use a preloader just for the sake of having an image to hide their site loading and sometimes this actually shows before the page is loaded, our preloader is added to the window.load event and inside a special function that detects when your page has actually finished downloading and removes the preloader only then.

Developer Note: Preloader isn't disapearing

Possible Cause 1 - If your page shows an infinite preloader loop, you should inspect the console in your browser. This means the JavaScript is not running correctly and the functions that hide the preloader are not firing.

Possible Cause 2 - Preloaders can also not appear if you test in incompatible browsers that don't support CSS3. For example, internet explorer, but in this case we recomemnd using the item for it's intented purpose, as browsers that don't support CSS3 will cause sever problems with any modern code.

QR Generator.

Generate automatic QR Codes based on current link, or manual generation

We are using an API to instantly generate QR codes, so you don't need complicated PHP api's to generate scripts. This can generate ANY qr code by simply using the following structure. Simply copy and paste the code above and replace the ENTER_YOUR_FULL_URL_HERE with your address. Once you've done this save and render the page, the QR will automatically be displayed.
 
1
<img class="generate-qr-auto" src="">
 
 
The code above will automatically generate a QR code for the address on which the code is added to.

Sharing

Automatic Link Social Sharing

The automatic social sharing feature works great for your website when used in classic website mode. However, if you plan on using the page as a PWA, we still don't have access to API's to pick up the link of where your PWA is saved and share that link directly.

You can share the page where these buttons will be placed automatically by adding the following classes to the buttons you want to trigger sharing.
  • shareToFacebook
  • shareToTwitter
  • shareToLinkedIn
  • shareToPinterest
  • shareToWhatsApp
  • shareToMail
If you want to use or share a pre-defined URL, simply open custom.js and search (CTRL+F win or CMD+F mac) for
 
1
var share_link = window.location.href;
 
 
Now, we must replace the default page link with the page you want to use. Replace the above code with the following/
 
1
 
 

Search

Understanding the Search Component

Our page uses an actual search system built in front end. If you integrate this with PHP and pre-populate it with data you will have a live, functional search system that can be conencted to a back-end. Of course, in the limit of normal use, in case of stronger needs you will require a custom AJAX solution. But let's dive in our search system.
How does it work?

The search page, in our example, uses a input field for typing your search query, and a result list that will automatically appear if the word matches. Please use the structure for the input fields and the search results box exactly as shown in the item. You can use Utility Classes to change the design, and you can replace the "found" elements with whatever design you wish as long as you keep them wrapped in the div following the code below.

 
1
2
3
<div data-filter-item data-filter-name="all products Apptastic mobile"  class="search-result-list">
    <!-- your search result -->
</div>  
 
 

Shown above is a search result. Inside this, you can add any component/element you want and it will be found if the user searches for any of the words inserted in the data-filter-name="your keywords here". Be sure the keywords are written in lowercase letters and separated with a space.

Sidebars

The most advanced Sidebar System on any Mobile Template

The Action Sheet box must be placed outside the page-content

Our sidebars are built to run smoothly, powered by CSS3 transitions, and automatic screen placement.
Unlike other frameworks, including Bootstrap, our code allows you to use any number of sidebars you want, with multiple effects and sizes. These are also not limited to the content inside, so for example, if you want, you can even add a slider inside.

A good example of the power of our sidebar system is the Instant Article page. Which is built entirely using the sidebar system described below.

To begin with, the Sidebars work on the same menu structure explained in the Menu Structure in the first documentation. They are defined as menu-box-right and menu-box-left but support different effects. Let's get into detail.
How to trigger a menu from a button/element
Any menu can be triggered by adding the data-menu="menu-UNIQUE-ID" to any element you want to use as a trigger.
How to programatically show/hide a menu
Menus can be triggered programatically by adding their ID in the following function in custom.js after line 88.
 
1
2
$('#menu-UNIQUE-ID').showMenu();
$('#menu-UNIQUE-ID').hideMenu();
Menu Structure
First, please check the component-sidebars.html to view these in action. Please note that your menu code must be placed outside the page-content.
 
1
2
3
4
5
6
<div id="MENU_UNIQUE_NAME"
class="menu MENU_BOX_POSITION"
data-menu-width="VALUE_IN_PX"
data-menu-effect="MENU_EFFECT">
<!-- Add what you want in your sidebar here -->
</div>
 
 
Line 1 - is the unique name you have to give to your menu. This will be used to trigger the menu using the data-menu="unique-id" or via programatic use.
Line 2 - is the class that defines this as being a menu, and also, the position. Replace MENU_BOX_POSITION with menu-box-left or menu-box-right.
Line 3 - is the width you want for your sidebar. This value is set in pixels or in the case of full screen sidebars, 100%.
Line 4 - is the menu effect. You can replace MENU_EFFECT with menu-parallax or menu-push or menu-over. Please note that these effects do not apply in the case of 100% size of the sidebar.

That's it! Now you have a sidebar menu! Add any content you want inside it!
How do I close the sidebar when it's opened?

Inside your sidebar, add any button that has the class close-menu. That button will close any menu or use the programatic use explained above.

Can I open a sidebar, from a sidebar?

Yes! Inside your sidebar, add a button with the data-menu="your-menu-id" and that menu will be triggered.

Snackbars

Built using the Bootstrap Toast System - Read more on Bootstrap Toast Documentation

The Snackbars box must be placed outside the page-content

Snackbars are in essence larger toasts, so, to avoid adding extra JavaScript and writing extended functions for these, we created the snacbkars using the toasts system offered by Boostrap. This makes it easy for them to be used in Programatic Use and also keep the file size low, as the framework is already heavy on it's own

How do I trigger a snackbar?

Simply add data-toast="unique-snackbar-id" to any button you want to use to trigger the snackbar from.

How do I programatically trigger snackbars?

Please check the Programatic Use explained by Bootstrap. Their system will work for Snackbars.

Snackbar Structure
 
1
<div id="UNIQUE_ID" class="snackbar-toast UTILITY_COLORS" data-delay="3000" data-autohide="true"><i class="fa fa-check mr-3"></i>your text</div>

The code above will generate a snackbar. Please be sure this code is placed outside the page-content.
The code must have a unique-id that you will use to trigger the snackbar via programatic use or via the data-toast="unique-id" system. The data-delay is represented in miliseconds and in the code above, means it will automatically disapear after 3 seconds.

Tabs

Custom built for maximum flexibility

As Bootstrap doesn't offer an actual tab system, we built a very simple and efficient one, where we used code as simple to use as possible. Let's explain.

 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<div class="content">
    <div class="tab-controls tabs-round tab-animated tabs-small"
         data-tab-items="2"
         data-tab-active="bg-highlight color-white">
        <a href="#" data-tab="tab-UNIQUE-NUMBER-1">Tab 1</a>
        <a href="#" data-tab-active data-tab="tab-UNIQUE-NUMBER-2">Tab 2</a>
    </div>
    <div class="clearfix mb-3"></div>
    <div class="tab-content" id="tab-UNIQUE-NUMBER-1">
        <!-- Tab 1 Content -->
    </div>
    <div class="tab-content" id="tab-UNIQUE-NUMBER-2">
        <!-- Tab 2 Content -->
    </div>
</div>
 
 

Line 1 - Is the content class, but this can be any div. It's important to keep the each set of tabs inside a independet div.
Line 2 - Is the div that will hold the tab controls. You can use tabs-round to make the tabs with rounded corner tab-animated to enable tabs animation. tabs-small or tabs-large to change their size.
Line 3 - is the number of tabs you will have in the button area. This is used to calculate their position using JS. In our example, we use 2 tabs.
Line 4 - is the color and background of the tab when selected. You can use the color utility classes here to define your selected style
Line 5 - is an actual tab button. Here you must define the data-tab="UNIQUE-NUMBER" which will be the same for the tab-content box it will show
Line 6 - is the second tab button. Notice this has the attribute data-tab-active. This tab will be activated by default when the page loads.
Line 7 - closes the box that holds the tab buttons
Line 8 - clears the floatation between tabs, and also adds a margin between the tab content and the tab buttons. You can use the Utility Classes to change this
Line 9 to 11 and Line 12 to 14 - are the tab content boxes. These are connected to their individual buttons using the unique name used in line 5 and 6.

And that's about it for tabs. You can create however many tabs you want, as long as you give them a unique identifier and mention the number of tabs you have in the data-tab-items in line 3. You can also use icons inside of tab titles if you need to.

Toasts

Built using the Bootstrap Toast System - Read more on Bootstrap Toast Documentation

The Toast box itself must be placed outside the page-content

The default Bootstrap toasts can be used and triggered manually or programatically using our item by following the instructions mentioned on Bootstrap Toast Documentation.

 
1
2
3
4
5
6
<div id="toast-1" class="toast toast-tiny toast-top bg-blue2-dark"
    data-delay="3000"
    data-autohide="true">
        <i class="fa fa-check mr-3"></i>
        All Good!
</div>
 
 

Line 1 - contains the ID of the toast, this will be used to trigger it. Just use data-toast="unique-toast-id" on an element you wish to trigger the toast.
Line 1 - also contains the classes. The class toast is used to identify this for Bootstrap's JS. The toast-tiny is the class we use for styling.
Line 1 - also contains the toast-top or toast-bottom depending where you want your toast to show from and the last element is the background color you want which you can select from the Utility Colors
Line 2 and 3 - is the delay for the toast and the fact that this toast will auto hide. The time is expressed in miliseconds.
Line 4 - is the icon for your toast
Line 5 - is the text for your toast
Line 6 - is the ending of the toast.

Create as many toasts as you need just be sure the ID is unique for each.

How do I programatically trigger toasts?
Please check the Programatic Use explained by Bootstrap. Their system will work for Snackbars.

Toggles / Switches

Built using the Bootstrap Toggle Switches - Read more on Toggle Switches Documentation

Toggle switches are input elements which can be used to toggle content or to switch a state in the input. These are affected by the checked attribute just like a checkbox for example.

First of all, let's show you the main switches availabe. We use iOS and Android Styled Switches. Let's explain their structure, and then we can get to more complicated use cases for them.

 
01
02
03
04
05
06
07
08
09
10
11
<div class="d-flex">
    <div class="pt-1">
        <h5 data-activate="toggle-id-1">Title</h5>
    </div>
    <div class="ml-auto">
        <div class="custom-control BRAND-switch">
            <input type="checkbox" class="BRAND-input" id="toggle-id-1">
            <label class="custom-control-label" for="toggle-id-1"></label>
        </div>
    </div>
</div>
 
 
Firstly, the toggles we used in this example are aligned using flexboxes, which you can learn more about and how to compose following the official Boostrap documentation.
Line 1 - creates the flexbox that will contain our element. Line 2 to 4 - is the left side of the column. This will contain the title. Because bootstrap by default doesn't allow clicking any text to automatically enable a switich or toggle, we created the data-activate="toggle-UNIQUE-ID". When you click/tap the title, it will automatically activate the switch. This is because, switches are designed to feel mobile, and in mobile operating systems, in most cases, where there is a switch, tapping the entire like will also activate the switch.
Line 5 to 10 -contains the right side and the actual switch itself. Lines 6 to 9 - are the switch itself. This must contain all clases presented in this example, but must have a unique ID and unique FOR value that will be the same as the one used in line 3. When you tap the switch or the title, the switch will automatically activate or de-activate. To set this as active by default, simply add attribute checked at the end of line 7.
Line 11 - will close the entire flex system.

Notice that the title is connected to the switch using the data-activate="toggle-id-1" | id="toggle-id-1" | for="toggle-id-1". You can create infinite number of toggles and connect them to a separate button on the screen that will activate them, as long as the above properties match eachother.

To create an Android type switch or an iOS type switch, simply replace the BRAND-switch | BRAND-input on line 6 and line 7 with ios-switch | ios-input or android-switch | android-input

How Do I toggle content using this system?

To toggle content using switches, simply add any div with the following property

 
1
2
3
<div data-switch="toggle-id-1" class="switch-is-checked">
    <!-- your content here-->
</div>

The data-switch must corespond to the data-activate unique ID, and the class switch-is-checked or switch-is-unchecked can be added in case you want to start your page with the content visible and the switch active by default.

Programatic Use

To modify the checked value of a switch, you must use the .prop() jQuery function as mentioned here.

Vibrate

Using Native WebAPI Protocols

To begin with, we must mention that iOS does not allow access to their Taptic / Vibration API. Vibrations will only work for Android devices, and only on buttons, not as a programatic gesture. This is restricted on certain devices. If you own an Android device, chances are you saw with previous operating systems sites where the phone would start vibrating like crazy for no reason.

This is why the vibration API will only work on a gesture pre-made by the user, and cannot be programatically enabled.

To make any button or element the user taps on vibrate, all you have to do is add the attribute data-vibrate="5". The 5 represents 5 miliseconds. By default, mobile devices send vibrations of 5 to 125ms in length. For the best possible user experience it is recomemnded not to send vibrations longer than this, so the user feels like your app is native to his experience, rather than something new and intrusive.

Ending Words

Thank you for being a awesome customer

If you read the documentation thus far, you're probably a master of our components and can copy paste them to create the perfect interface for you. However, if you get stuck, please know, we are always here to help!


A few tips that we must give. In the component documentation, we have included referrences to the Bootstrap documentation whenever extra features are available. Don't be afraid to experiment with them and read more about these features on Bootstrap's site. You can furhter enhance the already existing components we have. This will also be good if you are a devloper and know or want to know JS behavior and how to increase the programatic power of our item.

Don't forget! Always write your Custom Javascript as mentioned in the Developer Notes Section to be sure you avoid issues with code and always place your code in the correct place. Our item will cause you no stress if these small things are followed.

Help! I got stuck! I don't know how to edit something!

If there is anything you don't find here, or you require clarifications for any element we have here, please open a support ticket on our forums. We will gladly help you out.

Our support times are blazing fast and we are patient with any question you may have. No question is small and no question is stupid. If you feel you don't understand something, please let us know!

It's an immense pleasure for us to know our customers know and master our products and can place their imagination in our product to make it their own!

So, please, if there is anything we may help you with from our product features, or pages, let us know!

We're always available for you on https://www.enableds.com ( the support page )

Structure Documentation
Pages Documentation
PS: Thank you for being an absolutely awesome customer! We love all our customers and will always provide the fastest support and always listen to your feedback, so don't be afraid to send us a ticket. We're here to listen and improve the features to bring you the absolute best!