IVORY is a CSS framework, specially created for web applications and committed to improve the experience of users. It gives you all the basic integrants to build your pages faster and easier.
The project IVORY was started in July 2012, as a side project by a Software Engineer named Lakshmikanth Vallampati. The initial idea of the project IVORY is to create the CSS library for forms.
The first version of IVORY Forms released.
The IVORY Forms enhanced by adding more components like grid-system(non-responsive), tooltips, tabs, accordion and toggle switch. IVORY Forms turned into IVORY Framework.
The responsiveness added to v2. IVORY source code published in GitHub for the first time.
IVORY reached new milestone.
Satyasai Vallampati joined in IVORY core team. The IVORY Framework is revamped with new design system and advanced grid system. Version 4 released.
Run the below command to install via npm
npm i ivoryui-ivory
Import the following files to your project
node_modules/ivoryui-ivory/ivory-icons.css
node_modules/ivoryui-ivory/ivory.min.css
<link rel="stylesheet" href="https://unpkg.com/ivoryui-ivory/ivory.min.css" />
<link rel="stylesheet" href="https://unpkg.com/ivoryui-ivory/ivory-icons.css" />
IVORY color system is combination of 12 primary colors and a neutral color. Each color has a adequate purpose. The color system designed in a way to help create a theme that is harmonious, ensures accessible text, and distinguishes UI elements and surfaces from one another.
Each color in IVORY's color system has 10 variants (both dark & light variants). Each variant can then be applied to your UI in different ways.
Neutral color is widely used in the interface as surface color, background, borders, dividers, heading, text and etc. The neutral color palette is balanced with readability, aesthetics and usability. The neutral color palette of IVORY, as shown on the right:
IVORY uses the Montserrat Font Family designed by Julieta Ulanovsky, to greatly enhance the user experience and elegance of the interface. IVORY use Montserrat as the base font and then also provides a set of fallback font libraries to maintain readability for screens on different platforms and browsers.
font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif;
Montserrat font family has 10 differnt font-weights from 100 to 900. For good readability, IVORY prefers to use light(300), regular(400), medium(500), semi-bold(600), bold(700) font weights.
IVORY type system has 11 styles.
Style | Font Weight | Font Size | Line Height |
---|---|---|---|
Heading1 |
500 | 32px | 44px |
Heading2 |
500 | 28px | 40px |
Heading3 |
500 | 24px | 36px |
Heading4 |
500 | 20px | 32px |
Heading5 |
600 | 18px | 30px |
Heading6 |
500 | 16px | 28px |
Heading6 Bold |
600 | 16px | 28px |
Body Text |
400 | 14px | 28px |
P Bold |
500 | 14px | 20px |
Small | 500 | 12px | 24px |
Small Bold | 600 | 12px | 24px |
Small Label | 400 | 12px | 24px |
IVORY provides a consistent and unique icon set that were friendly and approachable.
To use IVORY icons, first make sure ivory-icons.css file loading in your page. Every icon listed below has unique name, add the same name to the class of the element with ivory-icon- prefix.
Note: Currently IVORY icon library has 71 icons and more will be added.
IVORY has success, info, warning and error alert types.
<div class="ivory-alert success">
Success Text
<div>
<div class="ivory-alert info">
Info Text
</div>
<div class="ivory-alert warning">
Warning Text
</div>
<div class="ivory-alert error">
Error Text
</div>
A relevant icon will make information clearer and more friendly.
<div class="ivory-icon-alert success">
<i class="alert-icon ivory-icon-check-circle"></i>
Success Text
<div>
<div class="ivory-alert info">
<i class="alert-icon ivory-icon-info"></i>
Info Text
</div>
<div class="ivory-alert warning">
<i class="alert-icon ivory-icon-warning"></i>
Warning Text
</div>
<div class="ivory-alert error">
<i class="alert-icon ivory-icon-attention"></i>
Error Text
</div>
<div class="ivory-alert success">
<i class="alert-icon ivory-icon-check-circle"></i>
Success Text
<span class="alert-action">
<i class="ivory-icon-times"></i>
</span>
<div>
<div class="ivory-alert info">
<i class="alert-icon ivory-icon-info"></i>
Info Text
<span class="alert-action">
<i class="ivory-icon-times"></i>
</span>
</div>
<div class="ivory-alert warning">
<i class="alert-icon ivory-icon-warning"></i>
Warning Text
<span class="alert-action">
<i class="ivory-icon-times"></i>
</span>
</div>
<div class="ivory-alert error">
<i class="alert-icon ivory-icon-attention"></i>
Error Text
<span class="alert-action">
<i class="ivory-icon-times"></i>
</span>
</div>
Badge is a status descriptor for UI elements. Badge normally appears in proximity to notifications with eye-catching appeal.
5 5 5 5
<span class="ivory-badge">5</span>
<span class="ivory-badge success">5</span>
<span class="ivory-badge warning">5</span>
<span class="ivory-badge error">5</span>
<span class="ivory-badge-group">
<sup class="ivory-badge error">9</sup>
</span>
<span class="ivory-badge-group">
...
<sup class="ivory-badge red dot"></sup>
</span>
<div class="ivory-checkbox">
<input type="checkbox" id="check1" />
<label for="check1">Checkbox<label>
<div>
<div class="ivory-checkbox">
<input type="checkbox" id="check2" checked />
<label for="check2">Checked Checkbox</label>
</div>
The checkbox can be disabled by disabled attribute on the checkbox input.
<div class="ivory-checkbox">
<input type="checkbox" id="check3" disabled />
<label for="check3">Disabled Checkbox<label>
<div>
<div class="ivory-checkbox">
<input type="checkbox" id="check4" disabled checked />
<label for="check4">Checkbox disabled & checked</label>
</div>
In IVORY standard form, the label and the form element will be arranged one after one in a row manner.
In horizontal form, label & form element are aligned side-by-side.
IVORY provides a 12-column mobile first grid system built with flexbox and is fully responsive.
The below examples will give you an idea of how to build Flexbox grid structure using IVORY.
<div class="row">
<div class="col-1">One</div>
<div class="col-11">Eleven</div>
</div>
<div class="row">
<div class="col-2">Two</div>
<div class="col-10">Ten</div>
</div>
<div class="row">
<div class="col-3">Three</div>
<div class="col-9">Nine</div>
</div>
<div class="row">
<div class="col-4">Four</div>
<div class="col-8">Eight</div>
</div>
<div class="row">
<div class="col-5">Five</div>
<div class="col-7">Seven</div>
</div>
<div class="row">
<div class="col-6">Six</div>
<div class="col-6">Six</div>
</div>
IVORY grid has the gutter width of 30px i.e. 15px on each side of a column. IVORY also provides the gutter less grid system. To avail the gutter less grid layout, add .no-gutter class to the row container.
You no need do much, to create the equal width columns. It's became more simpler with IVORY. In a row just create the divs with .col class. How many divs you create, those number of equal width columns will be created.
<div class="row">
<div class="col">One</div>
<div class="col">Two</div>
<div class="col">Three</div>
<div class="col">Four</div>
<div class="col">Five</div>
</div>
The breakpoints of responsive grid as below:
Extra small devices (portrait phones, less than 576px)
No media query since this is the default
Small devices (landscape phones, 576px and up)
@media (min-width: 576px) { ... }
Medium devices (tablets, 768px and up)
@media (min-width: 768px) { ... }
Large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }
IVORY follows the native input element for the input field, which should be having the class .ivory-input
IVORY provides 2 types of lists; native HTML lists & styled lists.
The HTML suuports 3 types of lists by default: Unordered, Ordered and Description list. Just add .ivory-list to your <ul> or <ol> or <dl>.
For Unordered List you can use the addon classes like: .disc, .circle, .square to display the respective list styles. Here is an example:
<ul class="ivory-list disc">
<li>Amsterdam</li>
<li>Manali</li>
<li>Monaco</li>
<li>Milano</li>
<li>Auckland</li>
<li>Florance</li>
</ul>
For Ordered List you can use the addon classes like: .decimal, .lower-alpha, .upper-roman to display the respective list styles. Here is an example:
<ol class="ivory-list decimal">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
</ol>
Here is an example for description list:
<dl class="ivory-list">
<dt>Coffee</dt>
<dd>Black Coffee</dd>
<dd>Cappuccino</dd>
<dd>Espresso</dd>
<dd>Flat White</dd>
<dd>Macchiato</dd>
<dt>Tea</dt>
<dd>Green Tea</dd>
<dd>Lemon Tea</dd>
<dd>Fermented Tea</dd>
<dd>Herbal Tea</dd>
</dl>
Styled lists will be used for various documentation purposes.
To incorporate the IVORY progress bar use .ivory-progress class on top of the HTML native progress element. IVORY provides the progress bar in two variants.
Regular variant
<progress class="ivory-progress" value="30" max="100"> 30% </progress>
Small variant
<progress class="ivory-progress progress-sm" value="30" max="100"> 30% </progress>
<div class="ivory-radio">
<input type="radio" id="radio1" name="myradio1" />
<label for="radio1">Radio Option 1<label>
<div>
<div class="ivory-radio">
<input type="radio" id="radio2" name="myradio1" checked />
<label for="radio2">Radio Option 2</label>
</div>
The radio can be disabled by the disabled attribute on the radio input
<div class="ivory-radio">
<input type="radio" id="radio3" name="myradio2" disabled />
<label for="radio3">Radio Option 1<label>
<div>
<div class="ivory-radio">
<input type="radio" id="radio4" name="myradio2" disabled />
<label for="radio4">Radio Option 2</label>
</div>
Tabler radio buttons are useful in various scenarios, especially in e-commerce applications.
Select Size
Select Color
<div class="ivory-tabler">
<div class="tabler-item">
<input type="radio" class="tabler-input" id="t1" name="my-tabler" value="Black" />
<label class="tabler-button" for="t1">Black</label>
</div>
...
</div>
A select box gives the provision to select one item from the list items.
Here is an example for sample dropdown
<div class="ivory-select">
<select placeholder="Select">
<option value="1">Maryland</option>
<option value="2">Chicago</option>
<option value="3">Hamilton</option>
</select>
</div>
A loading spinner is used for indicating a loading state of a page or section. It can be colored according to the applied colors on the current page.
IVORY provides the spinner in 5 sizes:
<div class="ivory-spinner-16"></div>
<div class="ivory-spinner-24"></div>
<div class="ivory-spinner-32"></div>
<div class="ivory-spinner-40"></div>
<div class="ivory-spinner-48"></div>
'More' button is very helpful is in expand/collapse and lazy loading use cases.
<div class="ivory-more">
<button class="ivory-btn-f btn-sm">
More
<i class="ivory-icon-angle-up"></i>
</button>
</div>
A table is used to display the collection of structured data in row column manner.
Firstname | Lastname | Age | City |
---|---|---|---|
John | Doe | 32 | Barcelona |
Jane | Doe | 28 | Milan |
Joe | Doe | 8 | Monaco |
Jim | Doe | 6 | Florance |
Jene | Doe | 3 | Rotterdam |
<table class="ivory-table">
<thead>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>City</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>Doe</td>
<td>32</td>
<td>Barcelona</td>
</tr>
...
</tbody>
</table>
Textarea is used to enter long text input.
Just to add the class ivory-textarea to native textarea.
Toggle Switch is an on/off control, built on top of the checkbox. It can be toggled by clicking.
<div class="ivory-toggle-switch">
<input type="checkbox" name="phone" value="phone" id="phone">
<label for="phone"></label>
</div>
A tooltip provides a short details about a specific text or element on the UI in a pop-over. The tip is shown on mouse enter, and is hidden on mouse leave. The Tooltip doesn't support complex text or operations.
IVORY tooltip supports 8 directions, defined by using one of the following classes with the .tooltip-content
class:
.top
.right
.bottom
.left
.top-left
.top-right
.bottom-right
.bottom-left
The size of the tooltip content box can be changed. IVORY provides 3 different sizes, with the following classes:
.tooltip-xs
.tooltip-md
.tooltip-lg
Here is an example for top tooltip. Hover me A tooltip provides a short description of a UI element. to preview.
Here is an example for bottom tooltip. Hover me A tooltip provides a short description of a UI element. to preview.
Here is an example for left tooltip. Hover me A tooltip provides a short description of a UI element. to preview.
Here is an example for right tooltip. Hover me A tooltip provides a short description of a UI element. to preview.
Here is an example for top-left tooltip. Hover me A tooltip provides a short description of a UI element. to preview.
Here is an example for top-right tooltip. Hover me A tooltip provides a short description of a UI element. to preview.
Here is an example for bottom-right tooltip. Hover me A tooltip provides a short description of a UI element. to preview.
Here is an example for bottom-left tooltip. Hover me A tooltip provides a short description of a UI element. to preview.
<p>
<a class="ivory-tooltip">Hover me
<span class="tooltip-content tooltip-xs top">Tooltip text</span>
</a>
</p>