Restyled Bootstrap alerts without any new functionality.
An error message is information displayed when an unexpected condition occurs, usually on a computer or other device. On modern operating systems with graphical user interfaces, error messages are often displayed using dialog boxes.
<div class="alert"> <button class="close fui-cross"></button> <h4>Alert title</h4> <p>Content inside...</p> </div>
Better alternative to a Footer that can fit few stacks of links. Organize columns using grids — they are so powerfull and responsive. No JS required. Go inspect the markup!
Yes, it looks awesome without limited width. Don't forget
to place container
inside.
<div class="bottom-menu"> <div class="container"> </div> </div>
We added two color schemes: light and inverse. To make it look dark add
bottom-menu-inverse
as an additional class.
<div class="bottom-menu bottom-menu-inverse"> </div>
To add social icons we reserved a special class
bottom-icons
.
Just put a list with icons somewhere inside
bottom-menu
and you're good to go:
<div class="bottom-menu"> <ul class="bottom-icons"> <li> <a href="#" class="fui-pinterest"></a> </li> </ul> </div>
We also added one more modifier bottom-menu-large
—
Use it when you have tons of links to add some space around.
<div class="bottom-menu bottom-menu-large"> </div>
Now try it out:
We restyled default Bootstrap breadcrumb and added one more — crisp textish look without any graphics.
<ul class="breadcrumb"> <li> <a href="#">Link</a> </li> </ul>
<div class="breadcrumb-text"> <h4 class="caption"> Shop </h4> <p> <a href="#">Home</a> <a href="#">Directory</a> <a href="#">Article</a> </p> </div>
Arrows are added through Less as a Flat UI Icons font glyph. You're free to change the delimiter inside breadcrumbs.less
:
> li { position: relative; text-shadow: none; &:after { color: @lightgray; /* vvv Here. All codes are in the icon-font.less */ content: "\e002"; display: inline-block; font-family: 'Flat-UI-Icons'; font-size: @base-font-size * .7; margin: -4px 9px 0 13px; vertical-align: middle; -webkit-font-smoothing: antialiased; } }
After restyling Bootstrap buttons we decided to add btn-hg
size that will be used for main call to actions on a page:
<button class="btn btn-hg btn-primary"> Boss Button </button>
In addition to that we added btn-embossed
to make button look more clickable. But still we prefer using them flat.
<button class="btn btn-embossed btn-primary"> Embossed Button </button>
In some cases buttons should become wider. Yes, we did that as well:
<button class="btn btn-default btn-wide"> Cancel </button>
One more new thing: btn-tip
. Use it when need to highlight a part of the button text:
<button class="btn btn-primary"> Save <span class="btn-tip">$300</span> </button>
Finally you can use social buttons out of box:
<button class="btn btn-social-pinterest"> <i class="fui-pinterest"></i> 500 </button>
As usual you can set different colors:
<button class="btn btn-default">Default</button> <button class="btn btn-primary">Primary</button> <button class="btn btn-info">Info</button> <button class="btn btn-danger">Danger</button> <button class="btn btn-success">Success</button> <button class="btn btn-warning">Warning</button> <button class="btn btn-inverse">Inverse</button>
Button groups, toolbar, disabled state also work as expected.
Restyled Bootstrap carousel without any new functionality.
<div id="myCarousel" class="carousel slide"> <ol class="carousel-indicators"> <li data-target="#myCarousel" data-slide-to="0" class="active"></li> <li data-target="#myCarousel" data-slide-to="1"></li> <li data-target="#myCarousel" data-slide-to="2"></li> </ol> <!-- Carousel items --> <div class="carousel-inner"> <div class="active item">…</div> <div class="item">…</div> <div class="item">…</div> </div> <!-- Carousel nav --> <a class="carousel-control left" href="#myCarousel" data-slide="prev">‹</a> <a class="carousel-control right" href="#myCarousel" data-slide="next">›</a> </div>
Using flat style checkbox requires JS plugin that creates all custom markup for us. Let's take a look:
<label class="checkbox" for="checkbox1"> <input type="checkbox" value="" id="checkbox1" data-toggle="checkbox"> Checkbox </label>
$(':checkbox').checkbox();
.checkbox('toggle')
toggles checkbox state from checked
to unchecked and back.
.checkbox('check')
sets checkbox state to checked.
.checkbox('uncheck')
sets checkbox state to unchecked.
$(':checkbox').checkbox('check');
.on('toggle')
Fired when checkbox state changed between
check ↔
uncheck.
.on('change')
Same as toggle.
$(':checkbox').on('toggle', function() { // Do something });
Firm radio also requires using JS plugin. We try making things easy so you won't have to spend huge amount of time playing around with custom components.
<label class="radio"> <input type="radio" name="group1" value="1" data-toggle="radio"> Radio is off </label> <label class="radio"> <input type="radio" name="group1" value="2" data-toggle="radio" checked> Radio is on </label>
$(':radio').radio();
.radio('check')
sets radio state to checked.
.radio('uncheck')
sets radio state to unchecked.
$(':radio').radio('check');
.on('toggle')
Fired when radio state changed between
check ↔
uncheck.
.on('change')
Same as toggle with just one difference — event sends for each radio which state was changed.
$(':radio').on('toggle', function() { // Do something });
Dialog is an alternative to alert
. It makes more sense to use dialogs when you want to inline a text, buttons and form elements into a one single row.
If you need to extend its functionality please do write your custom code to less/modules/dialog.less
and new changes will apear on each code recompile (through CodeKit or whatever tool you're using).
It is highly recommended to let dialog fill the whole page width so it catches more attention.
<div class="dialog"> <div class="container"> Dialog content </div> </div>
Now let's give it some colors:
<div class="dialog dialog-success"> <div class="container">Dialog content</div> </div> <div class="dialog dialog-danger"> <div class="container">Dialog content</div> </div> <div class="dialog dialog-warning"> <div class="container">Dialog content</div> </div> <div class="dialog dialog-info"> <div class="container">Dialog content</div> </div> <div class="dialog dialog-inverse"> <div class="container">Dialog content</div> </div>
Note: to use data-dismiss="alert" inside dialog you have to remove container
block so dialog
will be direct parent of the inside content where you set this attribute.
<div class="dialog"> <button class="btn" data-dismiss="alert"> Close </button> </div>
Same Bootstrap dropdown used as a part of the select
, btn-group
, nav-tabs
and eventually other components to present information as a menu.
Notice dropdown-arrow
which is needed when you want to add a small triangle that visually connects clickable element with a dropdown menu.
<!-- Default look --> <i class="dropdown-arrow"></i> <ul class="dropdown-menu"> <li> <a href="#">Item</a> </li> </ul> <!-- Inverse look --> <i class="dropdown-arrow dropdown-arrow-inverse"></i> <ul class="dropdown-menu dropdown-inverse"> <li> <a href="#">Item</a> </li> </ul>
For highlighting information we added 2 additional states for the dropdown-menu items: selected
and highlighted
:
<i class="dropdown-arrow"></i> <ul class="dropdown-menu"> <li class="selected"> <a href="#">Item</a> </li> <li class="highlighted"> <a href="#">Item</a> </li> </ul>
New component created to have one more navigation style with icons. It has 2 orientation modes: horizontal and vertical:
<div class="iconbar"> <ul> <li class="active"> <a href="#" class="fui-user"></a> </li> </ul> </div>
Of course you can choose one of the available additional colors:
<div class="iconbar iconbar-success"></div> <div class="iconbar iconbar-danger"></div> <div class="iconbar iconbar-warning"></div> <div class="iconbar iconbar-info"></div>
To mark icon as active just add active
class to a li
tag:
<div class="iconbar"> <ul> <li class="active"> <a href="#" class="fui-gear"></a> </li> </ul> </div>
To mark icon with unread indicator append iconbar-unread
this way:
<div class="iconbar"> <ul> <li> <a href="#" class="fui-gear"> <span class="iconbar-unread">1</span> </a> </li> </ul> </div>
Restyled Bootstrap input. Added flat style(to remove borders completely):
<!-- Default input --> <input type="text" placeholder="Enter something" class="form-control" /> <!-- Without borders --> <input type="text" placeholder="Enter something" class="form-control flat" />
And few sizes:
<input type="text" class="form-control input-hg" placeholder="Huge" /> <input type="text" class="form-control input-lg" placeholder="Large" /> <input type="text" class="form-control" placeholder="Default" /> <input type="text" class="form-control input-sm" placeholder="Small" />
With icon inside:
<div class="row"> <div class="col-lg-5"> <div class="form-group"> <input type="text" class="form-control" placeholder="With icon" /> <span class="input-icon fui-check-inverted"></span> </div> </div> </div>
With input append/prepend:
<!-- Prepend --> <div class="form-group"> <div class="input-group"> <span class="input-group-addon">@</span> <input type="text" class="form-control" placeholder="Prepend" /> </div> </div> <!-- Append --> <div class="form-group"> <div class="input-group"> <input type="text" class="form-control" placeholder="Append" /> <span class="input-group-addon">@</span> </div> </div>
Different color styles and disabled state work as expected:
Search form doesn't have any background color set to append/prepend:
Restyled jQuery UI Datepicker.
<div class="form-group"> <div class="input-group"> <span class="input-group-btn"> <button class="btn" type="button"><span class="fui-calendar"></span></button> </span> <input type="text" class="form-control" value="14 March, 2013" id="datepicker-01" /> </div> </div>
// jQuery UI Datepicker JS init var datepickerSelector = '#datepicker-01'; $(datepickerSelector).datepicker({ showOtherMonths: true, selectOtherMonths: true, dateFormat: "d MM, yy", yearRange: '-1:+1' }).prev('.btn').on('click', function (e) { e && e.preventDefault(); $(datepickerSelector).focus(); }); // Now let's align datepicker with the prepend button $(datepickerSelector).datepicker('widget').css({'margin-left': -$(datepickerSelector).prev('.btn').outerWidth()});
Based on Jasny's file input.
Inline file input:
<div class="form-group"> <div class="fileinput fileinput-new" data-provides="fileinput"> <div class="input-group"> <div class="form-control uneditable-input" data-trigger="fileinput"> <span class="fui-clip fileinput-exists"></span> <span class="fileinput-filename"></span> </div> <span class="input-group-btn btn-file"> <span class="btn btn-default fileinput-new" data-role="select-file">Select file</span> <span class="btn btn-default fileinput-exists" data-role="change"><span class="fui-gear"></span> Change</span> <input type="file" name="..."> <a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput"><span class="fui-trash"></span> Remove</a> </span> </div> </div> </div>
Button file input:
<div class="form-group"> <div class="fileinput fileinput-new" data-provides="fileinput"> <span class="btn btn-primary btn-embossed btn-file"> <span class="fileinput-new"><span class="fui-upload"></span> Attach File</span> <span class="fileinput-exists"><span class="fui-gear"></span> Change</span> <input type="file" name="..."> </span> <span class="fileinput-filename"></span> <a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">×</a> </div> </div>
Image upload:
<div class="form-group"> <div class="fileinput fileinput-new" data-provides="fileinput"> <div class="fileinput-preview thumbnail" data-trigger="fileinput" style="width: 200px; height: 150px;"></div> <div> <span class="btn btn-primary btn-embossed btn-file"> <span class="fileinput-new"><span class="fui-image"></span> Select image</span> <span class="fileinput-exists"><span class="fui-gear"></span> Change</span> <input type="file" name="..."> </span> <a href="#" class="btn btn-primary btn-embossed fileinput-exists" data-dismiss="fileinput"><span class="fui-trash"></span> Remove</a> </div> </div> </div>
<div class="form-group"> <div class="fileinput fileinput-new" data-provides="fileinput"> <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;"> <img data-src="holder.js/100%x100%" alt="..."> </div> <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"></div> <div> <span class="btn btn-primary btn-embossed btn-file"> <span class="fileinput-new"><span class="fui-image"></span> Select image</span> <span class="fileinput-exists"><span class="fui-gear"></span> Change</span> <input type="file" name="..."> </span> <a href="#" class="btn btn-primary btn-embossed fileinput-exists" data-dismiss="fileinput"><span class="fui-trash"></span> Remove</a> </div> </div> </div>
Restyled Bootstrap labels.
Default Primary Success Info Warning Danger<span class="label label-default">Default</span> <span class="label label-primary">Primary</span> <span class="label label-success">Success</span> <span class="label label-info">Info</span> <span class="label label-warning">Warning</span> <span class="label label-danger">Danger</span>
Restyled Bootstrap modal.
<div class="modal"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close fui-cross" data-dismiss="modal" aria-hidden="true"></button> <h4 class="modal-title">Modal header</h3> </div> <div class="modal-body"> <p>Modal content</p> </div> <div class="modal-footer"> <a href="#" class="btn">OK</a> </div> </div> </div> </div>
Restyled Bootstrap navs.
<ul class="nav nav-pills"> <li class="active"> <a href="#">Link</a> </li> <li> <a href="#">Link</a> </li> </ul>
I'm in Section 1.
Howdy, I'm in Section 2.
Howdy, I'm in Section 3.
<ul class="nav nav-tabs"> <li class="active"> <a href="#">Link</a> </li> <li> <a href="#">Link</a> </li> </ul>
<ul class="nav nav-list"> <li class="active"> <a href="#"> Link <span class="nav-counter">40</span> </a> </li> <li> <a href="#"> Link <span class="nav-counter">40</span> </a> </li> </ul> <!-- Vivid style --> <ul class="nav nav-list nav-list-vivid"> </ul>
Restyled Bootstrap navbar.
<nav class="navbar navbar-default" role="navigation"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-01"> <span class="sr-only">Toggle navigation</span> </button> <a class="navbar-brand" href="#"><span class="fui-flat"></span></a> </div> <div class="collapse navbar-collapse" id="navbar-collapse-01"> <ul class="nav navbar-nav"> <li class="active"><a href="#fakelink">Products</a></li> <li><a href="#fakelink">Features</a></li> </ul> <form class="navbar-form navbar-right" action="#" role="search"> <div class="form-group"> <div class="input-group"> <input class="form-control" id="navbarInput-01" type="search" placeholder="Search"> <span class="input-group-btn"> <button type="submit" class="btn"><span class="fui-search"></span></button> </span> </div> </div> </form> </div><!-- /.navbar-collapse --> </nav><!-- /navbar -->
Inverted navbar:
<nav class="navbar navbar-inverse" role="navigation"> <!-- Navbar content --> </nav>
Embossed navbar:
<nav class="navbar navbar-inverse navbar-embossed" role="navigation"> <!-- Navbar content --> </nav>
Large navbar:
<nav class="navbar navbar-default navbar-lg" role="navigation"> <!-- Navbar content --> </nav>
Inline forms:
<form role="search" class="navbar-form navbar-left"> <div class="form-group"> <input type="text" placeholder="Search" class="form-control"> </div> <button class="btn btn-default" type="submit">Submit</button> </form>
Buttons:
<!-- Default Navbar Button --> <button class="btn btn-default navbar-btn" type="button">Sign in</button> <!-- Small Navbar Button --> <button class="btn btn-default navbar-btn btn-sm" type="button">Sign in</button> <!-- Extra Small Navbar Button --> <button class="btn btn-default navbar-btn btn-xs" type="button">Sign in</button>
Text:
<p class="navbar-text">Signed in as Mark Otto</p>
Non-nav links:
<p class="navbar-text navbar-right">Signed in as <a class="navbar-link" href="#">Mark Otto</a></p>
New and Unread indicators:
<!-- ... --> <ul class="nav navbar-nav"> <li> <a href="#"> Menu item <!-- Indicator with number --> <span class="navbar-new">2</span> </a> </li> </ul> <!-- ... -->
<!-- ... --> <ul class="nav navbar-nav"> <li> <a href="#"> Menu item <!-- Indicator without number --> <span class="navbar-unread"></span> </a> </li> </ul> <!-- ... -->
Fixed to top:
<nav class="navbar navbar-default navbar-fixed-top" role="navigation"> <!-- Navbar content --> </nav>
Fixed to Bottom:
<nav class="navbar navbar-default navbar-fixed-bottom" role="navigation"> <!-- Navbar content --> </nav>
Static top:
<nav class="navbar navbar-default navbar-static-top" role="navigation"> <!-- Navbar content --> </nav>
Short pagination where links have a button look. Used for navigating to a next/prev item.
<ul class="pager"> <li class="previous"> <a href="#"> <span> <i class="fui-arrow-left"></i> All messages </span> </a> </li> <li class="next"> <a href="#"> <i class="fui-arrow-right"></i> </a> </li> </ul>
Bootstrap pagination restyling. Added additional dropdown navigation, minimalistic look and text-only look. Also few color schemes with alternative layout.
<div class="pagination"> <ul> <li class="previous"> <a href="#" class="fui-arrow-left"></a> </li> <!-- Make dropdown appear above pagination --> <li class="pagination-dropdown dropup"> <i class="dropdown-arrow"></i> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <i class="fui-triangle-up"></i> </a> <!-- Dropdown menu --> <ul class="dropdown-menu"> <li> <a href="#">10-20</a> </li> </ul> </li> <li class="next"> <a href="#" class="fui-arrow-right"></a> </li> </ul> </div>
Minimal look:
<div class="pagination pagination-minimal"> </div>
Text look:
<ul class="pagination-plain"> <li class="previous"> <a href="#">Previous</a> </li> <li> <a href="#">1</a> </li> <li class="next"> <a href="#">Newer</a> </li> </ul>
Various color schemes:
<div class="pagination pagination-success"> <a href="#" class="btn btn-success previous">Previous</a> <ul> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> </ul> <a href="#" class="btn btn-success next">Next</a> </div>
Restyled Bootstrap popover.
And here's some amazing content. It's very engaging.
Right?
And here's some amazing content. It's very engaging.
Right?
And here's some amazing content. It's very engaging.
Right?
And here's some amazing content. It's very engaging.
Right?
<!-- From the right of the target --> <div class="popover right"> <div class="arrow"></div> <h3 class="popover-title">Smooth Title</h3> <div class="popover-content"> Content goes here </div> </div> <!-- From the left of the target --> <div class="popover left"> </div> <!-- From the top of the target --> <div class="popover top"> </div> <!-- From the bottom of the target --> <div class="popover bottom"> </div>
Restyled Bootstrap progress.
<div class="progress"> <div class="progress-bar" style="width: 40%;"></div> <div class="progress-bar progress-bar-warning" style="width: 10%;"></div> <div class="progress-bar progress-bar-danger" style="width: 10%;"></div> <div class="progress-bar progress-bar-success" style="width: 10%;"></div> <div class="progress-bar progress-bar-info" style="width: 10%;"></div> </div>
Custom select due to inability of styling a system one. It is based on Selectpicker plug-in with a slightly modified source to meet Bootstrap naming convention.
Component inherits entire styling from button so you can use all its colors and sizes without any problems. Also we supported multiple select state as well as block mode where it takes all available space.
Grids are supported as well. For more technical details read original documentation.
You can write markup as you usually do without any difference:
<select> <option value="0">My Profile</option> <option value="1">My Friends</option> </select> <select multiple="multiple"> <option value="0">My Profile</option> <option value="1" selected>My Friends</option> <option value="2" selected>My Books</option> <option value="3">My CDs</option> </select>
And then transform all system selects into a custom ones with JS:
$("select").selectpicker({style: 'btn-hg btn-primary', menuStyle: 'dropdown-inverse'}); // style: select toggle class name (which is .btn) // menuStyle: dropdown class name // You can always select by any other attribute, not just tag name. // Also you can leave selectpicker arguments blank to apply defaults.
Custom switch can be used instead of checkbox. It has 2 styles: circle(default) and square. Drag is supported.
For more technical details read original documentation.
<!-- Default switch --> <input type="checkbox" checked data-toggle="switch" /> <!-- Square switch --> <div class="switch switch-square"> <input type="checkbox" checked data-toggle="switch" /> </div> <!-- Switch with customized icons --> <div class="switch switch-square" data-on-label="<i class='fui-check'></i>" data-off-label="<i class='fui-cross'></i>"> <input type="checkbox" /> </div>
Restyled Bootstrap tables. Added mobile support.
Rank | Name | Year | Rating |
---|---|---|---|
1 | The Shawshank Redemption | 1994 | 9.2 |
2 | The Godfather | 1972 | 9.2 |
<table class="table table-striped"> </table>
Rank | Name | Year |
---|---|---|
1 | The Shawshank Redemption | 1994 |
2 | The Godfather | 1972 |
3 | The Godfather: Part II | 1974 |
<table class="table table-striped table-hover"> </table>
Rank | Name | Year |
---|---|---|
1 | The Shawshank Redemption | 1994 |
2 | The Godfather | 1972 |
3 | The Godfather: Part II | 1974 |
<table class="table table-bordered"> </table>
Rank | Name | Year |
---|---|---|
1 | The Shawshank Redemption | 1994 |
2 | The Godfather | 1972 |
3 | The Godfather: Part II | 1974 |
4 | Batman | 2011 |
Used for entering multiple tags with ability to remove/add new and validating already existing ones. Available 2 color schemes: grey(default) and primary.
Based on Tags Input Plugin. For more technical details read official plug-in documentation.
Markup:
<input name="tagsinput" class="tagsinput tagsinput-primary" value="Clean,Fresh,Modern,Unique" /> <input name="tagsinput" class="tagsinput" value="School,Teacher,Colleague" />
JS:
$(".tagsinput").tagsInput();
Restyled Bootstrap tooltip. Added 1 new light look.
<p data-toggle="tooltip" title="Tooltip copy"></p>
<p data-toggle="tooltip" data-tooltip-style="light" title="Tooltip copy"></p>
Restyled jQuery UI slider. Added slider segments.
Markup:
<div id="slider" class="ui-slider"></div>
JS:
var $slider = $("#slider"); if ($slider.length > 0) { $slider.slider({ min: 1, max: 5, value: 3, orientation: "horizontal", range: "min" }).addSliderSegments($slider.slider("option").max); }
How addSliderSegments() work?
This is an extended jQuery method placed in the application.js
. It calculates how many segments to append by looking at a slider("option").max which shows a maximum slider value.
// Add segments to a slider $.fn.addSliderSegments = function (amount) { return this.each(function () { var segmentGap = 100 / (amount - 1) + "%" , segment = "<div class='ui-slider-segment' style='margin-left: " + segmentGap + ";'></div>"; $(this).prepend(segment.repeat(amount - 2)); }); };
Custom slider values
Markup:
<div id="slider3" class="ui-slider"> <span class="ui-slider-value first"></span> <span class="ui-slider-value last"></span> </div>
JS:
var $slider3 = $("#slider3") , slider3ValueMultiplier = 100 , slider3Options; if ($slider3.length > 0) { $slider3.slider({ min: 1, max: 5, values: [3, 4], orientation: "horizontal", range: true, slide: function(event, ui) { $slider3.find(".ui-slider-value:first") .text("$" + ui.values[0] * slider3ValueMultiplier) .end() .find(".ui-slider-value:last") .text("$" + ui.values[1] * slider3ValueMultiplier); } }); slider3Options = $slider3.slider("option"); $slider3.addSliderSegments(slider3Options.max) .find(".ui-slider-value:first") .text("$" + slider3Options.values[0] * slider3ValueMultiplier) .end() .find(".ui-slider-value:last") .text("$" + slider3Options.values[1] * slider3ValueMultiplier); }
Restyled jQuery UI spinner.
<div class="form-group"> <input type="text" id="spinner-01" value="0" class="spinner" /> </div>