Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
:ruby@lorem = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minimveniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex eacommodo consequat. Duis aute irure dolor in reprehenderit in voluptate velitesse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecatcupidatat non proident, sunt in culpa qui officia deserunt mollit anim id estlaborum."%section.accordion-group(role="tablist")
%a.accordion-toggle(data-bindable="toggle"href="#accordion_single"role="tab") Single Accordion Element
%section.collapse#accordion_single(role="tabpanel")
%article.accordion-inner%p=@lorem%hr%ul.accordion(data-bindable="toggle-group"role="tablist")
-(1..3).eachdo|i|%li.accordion-group%a.accordion-toggle(href="#accordion_radio_#{i}"role="tab")
%span Accordion Radio #{i}%span ↓
%section.collapse(id="accordion_radio_#{i}"role="tabpanel")
%article.accordion-inner%p=@lorem%hr%ul.accordion(data-bindable="collapse"data-behavior="checkbox"role="tablist")
-(1..3).eachdo|i|%li.accordion-group%a.accordion-toggle(href="#accordion_check_#{i}"role="tab") Accordion Check #{i} with Collapse
%section.collapse(id="accordion_check_#{i}"role="tabpanel")
%article.accordion-inner%p=@lorem%hr%ul.accordion(data-bindable="collapse"data-behavior="checkbox"role="tablist")
-(1..3).eachdo|i|%li.accordion-group%a.accordion-toggle(href="#accordion_complex_#{i}"role="tab") Accordion Complicated #{i} with Collapse
%section.collapse(id="accordion_complex_#{i}"role="tabpanel")
%article.accordion-inner%ul%li%p=@lorem%li%p=@lorem
Style Settings
@importutensils/collapse@importutensils/accordion
To override the default settings, set the variable and it's value
within your config.sass file or before accordion.sass is loaded.
Variable
Default
Description
$accordion-border
$base-border
The border-color of the accordion component
$accordion-radii
$radii
The border-radius of the accordion component
Beacon
Triggers an event based on a passage of time via a setTimeout.
Options
Beacon accepts 2 arguments, a @dispatcher element and a @data
object. The @data object defaults to the following:
Attribute
Default
Description
index
0
The initial starting position
total
1
The number of times a beacon can dispatch it's events
duration
1000
The duration of the setTimeout
continuous
false
Whether to recursively create the setTimeout
Beacon will automatically dispose of internals and stop dispatching
events once the index value is equal to the total value.
API
#new
Create a new instance of Beacon, typically used via an instance.
Starts the beacon and dispatches a beacon:started event.
@beacon.start()
#pause
Pauses the beacon and dispatches a beacon:paused event.
@beacon.pause()
#stop
Stops the beacon, resets the index to it's initial value and dispatches a beacon:stopped event.
@beacon.stop()
#tick
Manually trigger the beacon:ticked event and increment the index
value. This is called after a beacon has been started and completed
it's timeout. If set to continuous this will be triggered until the
index is equal to the total.
@beacon.tick()
#finish
Sets the index to the total and fires a beacon:finished event.
This automatically gets called when on the last tick.
@beacon.finish()
#dispose
Clean up the beacon instance and remove the event triggers created on
the @dispatcher.
@beacon.dispose()
Once the index is equal to the total, a beacon:finished event
will be triggered. It's up to the instance that created the beacon to
either call dispose or reset the index.
All events triggered, pass a data object consisting of the index and
it's current value and the total number of ticks.
Bindable
Light weight dependency injection for client side components. Looks for
all DOM elements with a data-bindable attribute, stores references
within a registry and instantiates their respective classes.
Classes registering with Bindable are passed the existing element
converted to a $ object.
Usage
As a class making use of the Bindable registry:
#= require utensils/bindableclassutensils.MockClassconstructor: (@el) -># make some magic# register with Bindableutensils.Bindable.register'mocker',utensils.MockClass
As markup instantiating a class that is registered with Bindable:
%a.mock(data-bindable="mocker"href="#") Binded to MockClass
Bindable is created after the page has loaded (typically in a
bootstrap file)
Apply the .breadcrumb class to the ol or ul element to provide linkable
references to nested sections within the application. The links generate
a divider after their content. This is configurable from the
$breadcrumb-divider-content variable. The list should contain the
.nav class.
Pro Tip! Button groups and tool bars play great with the ToggleGroup behavior
Style Settings
@importutensils/button_group
To override the default settings, set the variable and it's value
within your config.sass file or before button_group.sass is loaded.
Variable
Default
Description
$button-group-offset
0.5em
The margin-left for a .button-group + .button-group
Button Modifiers
A set of modifier classes which can be added to any button, regardless
of their base class, to adjust various aspects around a button's display
type, sizing, or positioning.
The base class (in these cases .btn) adds all of the necessary
properties to render a button. The modifiers (.success, .important)
mainly override the color values for various states. To keep the output
as small as possible, just mixin or generate the states needed within the
project or application.
Auto Generation
To auto generate buttons into the style sheet, within config.sass add
the following:
$auto-generate-semigloss:btn,$base-status-list
This will create a base button with the class of .btn and
modifiers for each of the elements within the $base-status-list. By
default this is set to false so no buttons are created.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
:ruby@lorem = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minimveniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex eacommodo consequat. Duis aute irure dolor in reprehenderit in voluptate velitesse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecatcupidatat non proident, sunt in culpa qui officia deserunt mollit anim id estlaborum."%div(data-bindable="collapse"data-behavior="checkbox"role="tab")
%a.collapse-toggle(href="#collapse_height") Single Collapse
%section.collapse#collapse_height(role="tabpanel")
%article-(1..3).eachdo|i|%p=@lorem%div(data-bindable="collapse"data-behavior="checkbox"data-activate="true"role="tab")
%a.collapse-toggle(href="#collapse_auto"role="tab") Single Auto Shown
%section.collapse#collapse_auto(role="tabpanel")
%article%p=@lorem%hr%nav(role="navigation")
%ul#collapse_radio(data-bindable="collapse"data-activate="true"role="tablist")
-(1..3).eachdo|i|%li%a.collapse-toggle(href="#collapse_radio_#{i}"role="tab") Radio Collapse #{i} Span
%section.collapse(id="collapse_radio_#{i}"role="tabpanel")
%article%p=@lorem%ul#collapse_inner(data-bindable="collapse"role="tablist")
-(1..3).eachdo|x|%li%a.collapse-toggle(href="#collapse_inner_#{x}_#{i}"role="tab") Radio Collapse Inner #{x}_#{i} Span
%section.collapse(id="collapse_inner_#{x}_#{i}"role="tabpanel")
%article%p=@lorem%hr%nav(role="navigation")
%ul#collapse_checkbox(data-bindable="collapse"data-behavior="checkbox"data-activate="1"role="tablist")
-(1..3).eachdo|i|%li%a.collapse-toggle(href="#"data-target="#collapse_check_#{i}"role="tab") Checkbox Collapse #{i}%section.collapse(id="collapse_check_#{i}"role="tabpanel")
%article%p=@lorem%hr%nav(role="navigation")
%ul#collapse_external(data-bindable="collapse"data-behavior="checkbox"role="tablist")
-(1..3).eachdo|i|%li%a.collapse-toggle(href="#collapse_external_#{i}"role="tab") External Checkbox Collapse #{i}-(1..3).eachdo|i|%section.collapse(id="collapse_external_#{i}"role="tabpanel")
%article%p<
%strong Collapse External Pane #{i}%p=@lorem
Options
Attribute
Default
Description
namespace
collapse
The namespace to use for dispatching events
dimension
height
The property to collapse on
type
single
For multiple collapsible elements, pass group as the value
multiple-activate
undefined
Searches the .accordion-group or li for the activate attribute and auto activates that item
See Toggle or ToggleGroup for more options.
If type is set to single (the default), Collapse will instantiate an
instance of Toggle for managing the links state. If type is set to
group, the ToggleGroup behavior is used.
API
#= require utensils/collapse
data-bindable="collapse"
#new
Create a new instance of Collapse programatically, typically this
is instantiated through Bindable
Activate can take either an index, element or string as it's target
parameter if the type is set to group. Otherwise, no parameter is
required. Dispatches a collapse:activated event.
# activate on a non-group collapse@collapse.activate()# activate by index on a<EMAIL_ADDRESS>activate by element on a group@collapse_group.activate@group_el.find'li:nth-child(2)'
#deactivate
Deactivate can take either an index, element or string as it's target
parameter if the type is set to group. Otherwise, no parameter is
required. Dispatches a collapse:deactivated event.
# deactivate on a non-group collapse@collapse.deactivate()# deactivate by index on a<EMAIL_ADDRESS>deactivate by element on a group@collapse_group.deactivate@group_el.find'li:nth-child(2)'
#dispose
Cleans up any internal references
@collapse.dispose()@collapse_group.dispose()
When a panel (the target with .collapse) is activated or deactivated
it dispatches events around it's state.
Event
Description
collapse:show
The start event before the transition occurs and the element is hidden
collapse:shown
After the transition occurs and the element is showing
collapse:hide
The start event before the transition occurs and the element is showing
collapse:hidden
After the transition occurs and the element is hidden
To override the default settings, set the variable and it's value
within your config.sass file or before collapse.sass is loaded.
Variable
Default
Description
$collapse-duration
$speed
Duration to collapse or expand the element
$collapse-timing-function
$ease-in-out-quart
Timing equation to fade the element
Todo
Should be able to collapse around the width property
Container
The container class is used to contain elements of content within a page
or section. The container class injects the micro clearfix
to clear any floats from interior elements.
There are a few modifiers which can be applied to the default container
to affect how it displays contained elements.
Usage
Class
Usage
.container
The default container is a fluid width container with a max-width set to the $base-width variable.
.container.outer
Adding the .outer class to a container adds left and right padding, which creates breathing room in fluid layouts from the browser's edges.
.container.fluid
Adding the .fluid class to a container will remove the max-width setting and allow the container to fill the browser window.
.container.fixed
Adding the .fixed class to a container will render it using fixed width pixels with no responsive behavior.
Style Settings
@importutensils/container
To override the default settings, set the variable and it's value
within your config.sass file or before container.sass is loaded.
Variable
Default
Description
$container-padding-left
1%
Set the padding-left on the container.outer element
$container-padding-right
$container-padding-left
Set the padding-right on the container.outer element
Content Editable
Apply the attribute contenteditable="true" to a given element,
allows the user to change it's contents.
Edit Title
Edit Description
%h2(contenteditable="true") Edit Title
%p(contenteditable="true") Edit Description
Style Settings
@importutensils/content_editable
To override the default settings, set the variable and it's value
within your config.sass file or before content_editable.sass is loaded.
Variable
Default
Description
$editable-border-hover
$base-border-hover
The border-color while the region is hovered
$editable-focus-bgc
$focus-bgc
The background-color while the region is focused
$editable-focus-glow
$focus-glow
The glow while the region is focused
CSS Helper
Describe this.
Todo
Check with JG on this
Test
Document
Cursor Hand
The CursorHand .js/css combination provides a nice cross-browser way
to have a hand-grab cursor, a-la Google Maps' interface.
By default, CursorHand will add or remove a class on the
element when the cursor state needs to change. An optional html element
can be passed in to the CursorHand constructor, which would toggle the
class instead, in case of css scoping needs.
Hand
Hand Grab
%h5.hand Hand
%h5.handGrab Hand Grab
API
#= require utensils/cursor_hand
#new
Typically cursor hand is required via a class that needs it, i.e.
Carousel, Slider, TouchScroller, etc..
To override the default settings, set the variable and it's value
within your config.sass file or before cursor_hand.sass is loaded.
Variable
Default
Description
$cursor-open-hand-path
"cursor_hand/cursors/openhand.cur"
The default path to find the open hand cursor
$cursor-closed-hand-path
"cursor_hand/cursors/closedhand.cur"
The default path to find the closed hand cursor
Heads Up! These images are automatically included into the asset
pipeline through Utensils.
Todo
Test
Decal
Decals are used to POP information
in a block of text. They are typically used with inline elements. The
default color is equivalent to the $inverse status color.
It's recommended to pass a $decal-status-list of needed
modifiers to limit the output of generated classes.
DefaultImportantSuccessWarningDangerInfo
%span.decal Default
%span.decal.important Important
%span.decal.success Success
%span.decal.warning Warning
%span.decal.danger Danger
%span.decal.info Info
Style Settings
@importutensils/decal
To override the default settings, set the variable and it's value
within your config.sass file or before decal.sass is loaded.
Variable
Default
Description
$decal-bgc
$inverse
default
$decal-color
white
default
$decal-list
nil
The list of modifier classes to include
$decal-radii
$radii
The border-radius of a decal
Detect
Utility class of static variables describing various browser support for
properties, normalizing event names, and other useful detection.
API
#= require utensils/detect
#transition
Get the transition event name for the current browser for use in CSS transitions.
.notification.fade.in(role="alert")
%p Notification! This is the default notification
%a.close(href="#"data-bindable="dismiss") ×
.notification.fade.in#dismiss_href(role="alert")
%p Notifcation Href! This is the default notification
%a.close(href="#dismiss_href"data-bindable="dismiss") ×
.notification.fade.in#dismiss_target(role="alert")
%p Notifcation Target! With a delay
%a.close(href="#"data-target="#dismiss_target"data-bindable="dismiss"data-delay="2000") ×
.notification.fade.in#dismiss_nested(role="alert")
%p Notifcation Nested! This is the default notification
%p%a.close(href="#"data-bindable="dismiss") ×
%a#dismiss_alone(href="#"data-bindable="dismiss") Close Me
%section#dismiss_cya.fade.in%p<
This whole thing should fade out,
%a(href="#"data-bindable="dismiss"data-parents="#dismiss_cya") when you click this link
Options
Attribute
Default
Description
namespace
dismiss
The namespace to use for dispatching events
parents
.notification,.dismiss
The default classes to search for if an href or target is not defined
auto-dismiss
undefined
Pass the time in milliseconds and the element will automatically remove itself from the DOM.
See Triggerable for other options
Pro Tip! If the target element has the class in it will remove
this class first and wait for the transition to finish
API
#= require utensils/dismiss
data-bindable="dismiss"
#new
Create a new instance of Dismiss programmatically. Normally this is
handled through Bindable.
Drops are used for displaying a menu within a navigation or button group
system.
Drop's utilize a visuallyhidden and visuallyshown technique rather
than a display: none|block to allow screen readers to still discover
the inner content.
Where to position the drop menu in relation to the element: north, south, east, west
keyboard
true
Utilize some basic key commands for controlling the menu
Heads Up!Drop will override it's placement automatically through
Directional if it determines the requested position will render the
menu outside the viewport.
You Need This! The Drop link needs to have the class .drop-toggle to
help speed up lookups.
See Triggerable for other options
API
#= require utensils/drop
data-bindable="drop"
#new
Create a new instance of Drop programmatically. Normally this is
handled through Bindable.
To override the default settings, set the variable and it's value within
your config.sass file or before drop.sass is loaded.
Variable
Default
Description
$drop-menu-min-width
160px
The min-width of the menu
Other default styles are set up through either caret.sass or
menu.sass
Warning! Drop requires the menu component for styles.
Warning! The configuration file needs to define the $zindex-drop
value before this file is imported, this is done to keep managing
z-index mappings in one place.
Flash Message
A top level container to house notifications and messages targeted to
the user.
%section#demo_flash_message%nav.button-group(data-bindable="toggle-button-group"data-remove="top bottom middle top-left top-center top-right")
%button.btn.active(data-add="top") Default (Top)
%button.btn(data-add="top-left") Top Left
%button.btn(data-add="top-center") Top Center
%button.btn(data-add="top-right") Top Right
%button.btn(data-add="middle") Middle
%button.btn(data-add="bottom") Bottom
%nav.button-group(style="margin:2em 0 0;")
%button.btn(data-type="info") Add Default (Info)
%button.btn(data-type="important") Add Important
%button.btn(data-type="success") Add Success
%button.btn(data-type="warning") Add Warning
%button.btn(data-type="danger") Add Danger
Flash notifications enhance the .notification component by allowing
them to appear fixed above all other elements on the page. Wrap the
notifications within a #flash_messages.flash-messages container at the
root of the body.
Adding different positional classes to the .flash-messages container
will allow them to appear in different quadrants of the viewport.
Style Settings
There are no style settings to override for flash messaging.
Warning! The configuration file needs to define the
$zindex-flash-message value before this file is imported, this is done
to keep managing z-index mappings in one place.
Form Controls
Contains the style definitions for form control elements, form control
states, and basic structure for containers. Form controls are typically
paired with one of the form layout components.
Text based input controls
Represents the basic controls for creating forms. Contains support for all of the HTML5 types.
%form.docomo-cf(role="form")
%fieldset.docomo-split-pull%legend Common input controls
.control-group.controls%input(type="text"placeholder="text")
<EMAIL_ADDRESS>.control-group.controls%input(type="password"placeholder="password")
.control-group.controls%input(type="url"placeholder="www.example.com")
.control-group.controls%input(type="tel"placeholder="303-867-5309")
.control-group.controls%input(type="search"placeholder="search")
.control-group.controls%input(type="date"placeholder="date")
.control-group.controls%input(type="number"placeholder="number"max="10"min="0")
%fieldset.docomo-split-push%legend Less common input controls
.control-group.controls%input(type="datetime"placeholder="datetime")
.control-group.controls%input(type="datetime-local"placeholder="datetime-local")
.control-group.controls%input(type="time"placeholder="time")
.control-group.controls%input(type="month"placeholder="month")
.control-group.controls%input(type="week"placeholder="week")
.control-group.controls%input(type="range"placeholder="range"max="10"min="0"step=".5")
.control-group.controls%input(type="color"value="#ff00ff")
.control-group.controls%input(type="file"value="file")
.control-group%label.control-label Hidden Input Field
.controls%input(type="hidden"placeholder="hidden")
Search controls
Represents a search form control. These are set by adding the class
.search-query to any text input control element.
%form(role="search")
%fieldset%legend Search Elements
.control-group.controls%input.search-query(type="search"placeholder="search")
Warning!input[type="search"] renders the same as other text input
controls. These types of inputs require the .search-query class to be
added to the control.
Textarea controls
Represents a multi-line plain-text editing control.
%form(role="form")
%fieldset%legend Textarea Controls
.control-group.controls%textarea(placeholder="Enter the textarea..."rows="8")
Select controls
Represents a control that presents a menu of options.
%form(role="form")
%fieldset%legend Select Controls
.control-group.controls%select%optgroup(label="Colorado")
%option(selected="selected"value="denver") Denver
%option(value="boulder") Boulder
%optgroup(label="California")
%option(value="los angeles") Los Angeles
%option(value="san francisco") San Francisco
.control-group%label.control-label(for="fcsm_select") Multiple Select
.controls%select#fcsm_select(multiple)
%option(value="1") One
%option(selected="selected"value="2") Two
%option(value="3") Three
%option(value="4") Four
%option(value="5") Five
Radio & Checkbox controls
Radio and checkbox are for selecting options within a list. Radios are
used for selecting a single option, while checkbox is used for selecting
zero to many options.
%form(role="form")
%fieldset%legend Radio Controls
.control-group%label.control-label<
%h5 Radio
.controls%label.radio(for="fc_radio1-1")
%input#fc_radio1-1(type="radio"name="fc[radios1]"value="true"checked) Yes, to radio buttons
%label.radio(for="fc_radio1-2")
%input#fc_radio1-2(type="radio"name="fc[radios1]"value="false") No, to radio buttons
.control-group%label.control-label<
%h5 Radio Inline
.controls%label.radio-inline(for="fc_radio2-1")
%input#fc_radio2-1(type="radio"name="fc[radios2]"value="true"checked) Yes, to inline radios
%label.radio-inline(for="fc_radio2-2")
%input#fc_radio2-2(type="radio"name="fc[radios2]"value="false") No, to inline radios
%legend Checkbox Controls
.control-group%label.control-label<
%h5 Checkbox
.controls%label.checkbox(for="fc_check1-1")
%input#fc_check1-1(type="checkbox"value="0") Check your premises
%label.checkbox(for="fc_check1-2")
%input#fc_check1-2(type="checkbox"value="1"checked) Premises, checked.
.control-group%label.control-label<
%h5 Checkbox Inline
.controls%label.checkbox-inline(for="fc_check2-1")
%input#fc_check2-1(type="checkbox"value="0") Check your inline premises
%label.checkbox-inline(for="fc_check2-2")
%input#fc_check2-2(type="checkbox"value="1"checked) Premises inline, checked.
Description elements
Description elements describe or act as helpers around their controls.
%form(role="form")
%fieldset%legend I am Legend
.control-group%label.control-label(for="fcd_text1") Label*
.controls%input#fcd_text1(type="text"placeholder="text")
%p.hint-block The hint block for the control element
%hr.control-group%label.control-label(for="fcd_text2") Label*
.controls%input#fcd_text2(type="text"placeholder="text")
%p.hint-inline The inline hint for the control element
Usage
Element
Description
%legend
Represents a caption for the content of its parent fieldset
%label
Associated with a control by the for attribute or by placing the control element inside the %label
%abbr
Typically used within a %label element to denote a required control for the user
.hint-block
The block level element which appears below the control. It can describe actions needed for the user
.hint-inline
Allows the hint to appear directly to the right of the control element
Status Messages
Hints support modifiers based on the $form-status-list variable. These
take the form of .status-msg based on the status types passed in. These
are hidden by default, but are shown when the parent .control-group
has the status type class added. The following would show only the
.hint-inline.error-msg
.control-group.error%label.control-label(for="ex_text") Text:
.controls%input#ex_text(type="text"placeholder="Enter your name")
%p.hint-inline.error-msg That failed terribly
%p.hint-inline.success-msg Gold stars all around
Uneditable controls
A modifier on input or textarea fields that is uneditable by the
user.
%form(role="form")
%fieldset%legend Uneditable Controls
.control-group%label.control-label(for="fcu_text") Uneditable field!
.controls%input#fcu_text.uneditable-field(type="text"placeholder="text"value="Can't touch this!"disabled)
%p.hint-inline Hurry up!
.control-group%label.control-label(for="fcu_textarea") Uneditable field!
.controls%textarea#fcu_textarea.uneditable-field(placeholder="Enter the textarea..."rows="8"disabled) Can't touch this either
Warning! Make sure the field has the disabled attribute set.
Sizing helpers
By default all inputand textarea controls have a width value of
50%. The exceptions are inputs with the type of color, checkbox,
radio, and the button type inputs which have no width value
assigned. The select controls have a width value of 25%. The
legend element has a width value of 100%. These values can be
overridden in a configuration file.
There are a few helper classes which can be attached to individual
controls, but it's recommended to use these on a control's container.
Typically, these are applied on the fieldset or the .control-group.
It's even better practice to assign these values within a form layout.
Class
Size
field-xsmall
field-small
field-medium
field-large
field-xlarge
Alert! These classes set their width with !important to override
specificity. Use them only when you mean it.
Button controls
There are no specific style settings for input types of submit,
reset, button and image. Styles associated with button controls
need to be defined by either a class or by allowing a form layout to
create it's own definition.
Form Structure, Layout and States
Form structures typically consist of:
A top level form element
One or multiple fieldset elements
A legend for each fieldset describing the controls within it
A div.control-group containing a label and div.controls element
The child label of the .control-group describes the contents of
it's .controls sibling
The div.controls element hosting the control object, plus .hints
or other descriptive helpers
%section#demo_form.button-toolbar(style="margin-bottom:1em;")
%nav.button-group(data-bindable="toggle-button-group"data-remove="form-vertical form-horizontal form-stack")
%button.btn.active(data-add="") Default
%button.btn(data-add="form-horizontal") Horizontal
%button.btn(data-add="form-stack") Stack
%nav.button-group(data-bindable="toggle-button-group"data-remove="well fill")
%button.btn.active(data-add="") None
%button.btn(data-add="well") Well
%button.btn(data-add="well fill") Well Fill
%nav.button-group(data-bindable="toggle-button-group"data-remove="disabled error success")
%button.btn.active(data-add="") Normal
%button.btn(data-add="disabled") Disabled
%button.btn(data-add="success") Success
%button.btn(data-add="error") Error
%form(role="form")
%fieldset%legend Standard information
-# Text inputs.control-group%label.control-label(for="fcs_text") Text:*
.controls%input#fcs_text(type="text"placeholder="Enter your name")
%p.hint-inline.error-msg That failed terribly
%p.hint-inline.success-msg Gold stars all around
%p.hint-block First and last name
.control-group%label.control-label(for="fcs_email") Email:*
<EMAIL_ADDRESS>%p.hint-inline No AOL accounts!
%p.hint-inline.error-msg That failed terribly
%p.hint-inline.success-msg Gold stars all around
%p.hint-block We won't share it
.control-group.file-browser%label.control-label(for="fcs_file") File Browser:
.controls%input#fcs_file(type="file"value="file")
%p.hint-inline.error-msg That failed terribly
%p.hint-inline.success-msg Gold stars all around
.control-group%label.control-label(for="fcs_textarea") Textarea:
.controls.input-bg.hidden%textarea#fcs_textarea(placeholder="Enter the textarea..."rows="8")
%textarea#fcs_textarea2.no-stack(placeholder="Enter the textarea..."rows="8")
%p.hint-inline.error-msg That failed terribly
%p.hint-inline.success-msg Gold stars all around
-# Uneditable.control-group%label.control-label(for="fcs_uneditable") Uneditable field:
.controls%input#fcs_uneditable.uneditable-field(type="text"placeholder="text"value="Can't touch this!"disabled)
%p.hint-inline Hurry up!
%p.hint-inline.error-msg That failed terribly
%p.hint-inline.success-msg Gold stars all around
%fieldset%legend Make a choice
-# Radios.control-group.radio-buttons%label.control-label Radio:
.controls%label.radio(for="fcs_radio1-1")
%input#fcs_radio1-1(type="radio"name="fc[radios1]"value="true"checked) Yes, to radio buttons
%label.radio(for="fcs_radio1-2")
%input#fcs_radio1-2(type="radio"name="fc[radios1]"value="false") No, to radio buttons
.control-group.radio-buttons%label.control-label Radio Inline:
.controls%label.radio-inline(for="fcs_radio2-1")
%input#fcs_radio2-1(type="radio"name="fc[radios2]"value="true"checked) Yes, to inline radios
%label.radio-inline(for="fcs_radio2-2")
%input#fcs_radio2-2(type="radio"name="fc[radios2]"value="false") No, to inline radios
%p.hint-inline.error-msg That failed terribly
%p.hint-inline.success-msg Gold stars all around
-# Checks.control-group.check-boxes%label.control-label Checkbox:
.controls%label.checkbox(for="fcs_check1-1")
%input#fcs_check1-1(type="checkbox"value="0") Check your premises
%label.checkbox(for="fcs_check1-2")
%input#fcs_check1-2(type="checkbox"value="1"checked) Premises, checked.
.control-group.check-boxes%label.control-label Checkbox Inline:
.controls%label.checkbox-inline(for="fcs_check2-1")
%input#fcs_check2-1(type="checkbox"value="0") Check your inline premises
%label.checkbox-inline(for="fcs_check2-2")
%input#fcs_check2-2(type="checkbox"value="1"checked) Premises inline, checked.
%p.hint-inline.error-msg That failed terribly
%p.hint-inline.success-msg Gold stars all around
-# Selects.control-group.select%label.control-label(for="fcs_multiselect") Multiple Select:
.controls%select#fcs_multiselect(multiple)
%option(value="1") One
%option(selected="selected"value="2") Two
%option(value="3") Three
%option(value="4") Four
%option(value="5") Five
%p.hint-inline.error-msg That failed terribly
%p.hint-inline.success-msg Gold stars all around
.control-group.select%label.control-label(for="fcs_select") Select:
.controls%select%option(selected="selected"value="denver") Denver
%option(value="boulder") Boulder
%option(value="los angeles") Los Angeles
%option(value="san francisco") San Francisco
%p.hint-inline.error-msg That failed terribly
%p.hint-inline.success-msg Gold stars all around
.form-actions%input.btn.standard(type="submit"value="Submit")
%input.btn.standard(type="reset"value="Cancel")
Pro Tip! Add either .well or well.fill to the form element to contain it from other items on the page (requires well.sass).
Warning! Not all layouts may render in the demo if they aren't included in the project.
Style Settings
@importutensils/form_controls
To override the default settings, set the variable and it's value
within your config.sass file or before form_controls.sass is loaded.
Variable
Default
Description
$form-bgc
$base-bgc
The background-color of form controls
$form-border
$base-border
The border-color of form controls
$form-color
$base-color
The text color of form controls
$form-focus-bgc
$focus-bgc
The focus background-color of form controls
$form-focus-glow
$focus-glow
The focus glow of form controls
$form-inset-shadow
inset 0 1px 1px rgba(black, 0.1)
The inset shadow of form controls
$placeholder
#ccc
The text color of the placeholder
$placeholder-search
$placeholder
The text color of the placeholder for controls with the .search-query class
$legend-color
$form-color
The text color of legends
$hint-color
$base-color-active
The text color of hints
$uneditable-color
$form-color
The text color of .uneditable-fields
$uneditable-bgc
$form-focus-bgc
The text background-color of .uneditable-fields
$form-disabled-color
$disabled-color
The text text color of disabled controls
$form-disabled-bgc
$disabled-bgc
The text background-color of disabled controls
$legend-font-size
1.25em
The font-size of legends
$label-font-size
0.85em
The font-size of labels
$hint-font-size
0.85em
The font-size of hints
$form-input-padding
0.5em
The padding within control elements
$form-group-spacing
1em
The spacing between .control-groups
$form-legend-width
100%
The default width of legend elements
$form-input-width
50%
The default width of most input and textarea controls
$form-select-width
25%
The default width of select controls
$select-height
30px
The height of select menus
$form-radii
$radii
The radii to use for controls
$form-status-list
$success-list, $error-list
The list of modifier classes for form statuses messages
$form-actions-well-bgc
darken($base-bgc, 2%)
The background-color of .form-actions when form has a .well class
$form-actions-well-fill-bgc
darken($form-actions-well-bgc, 10%)
The background-color of .form-actions when form has a .well.fill class
Form Horizontal
An alternative to the default stacked form, floats control labels down
the left side of the form. The markup structure remains the same as the
default layout, it only requires the class .form-horizontal on the
form element.
Pro Tip! Check out the "Form Structure" section under "Form
Controls" for the demo and usage example.
To override the default settings, set the variable and it's value
within your config.sass file or before form_horizontal.sass is loaded.
Variable
Default
Description
$form-horiz-offset
$horiz-offset
The for .control-label, .controls and .form-actions containers
$form-horiz-offset-padding
$horiz-offset-padding
The padding between the .control-label and .controls containers
Alert! Requires the form_controls utensil.
Form Inline
Utilize the .form-inline class on the form element to create a simple
inline form. Supports control labels as well.
%form.form-inline.well.fill(role="form")
%input#fi_email(type="email"placeholder="email")
%input#fi_passw(type="password"placeholder="password")
%select%option(selected="selected"value="denver") Denver
%option(value="boulder") Boulder
%option(value="los angeles") Los Angeles
%option(value="san francisco") San Francisco
%label.checkbox-label%input(type="checkbox") Remember me
%input.btn.standard(type="submit"value="Go")
Utilize the .form-search class on the form element to create a simple
search form. Supports hints and control labels as well.
Any input fields of type "text" or "search" automatically receive the
properties of the .search-query class. Any input buttons used will
inherit the top and bottom padding of the input element.
Scales an image proportionally to the width of the browser window.
Passing data-fills-window="false" will constrain the height of the
image to the height of .full-bleed container.
To override the default settings, set the variable and it's value
within your config.sass file or before full_bleed.sass is loaded.
Variable
Default
Description
$full-bleed-height
auto
The height of the container
$full-bleed-zindex
-1
The z-index depth for the .full-bleed container
Icon Caret
Carets are used as icons and are typically wrapped in span elements.
Carets are similar to the +arrow mixin, where in the +arrow mixin is
used for :before and :after pseudo elements and carets are embedded
directly in the markup.
Select to spin the caret
%nav.demo(data-target="#test_caret"data-remove="north south east west")
%ul.nav.inline%li%span.caret.north%li%span.caret.south%li%span.caret.east%li%span.caret.west%li(style="margin-left: 5em;")
%span.caret.transall#test_caret%h5(style="margin-top:3em; margin-bottom:1em;") Select to spin the caret
%nav.modifier-demo.button-group(data-bindable="toggle-button-group")
%button.btn(data-add="north") North
%button.btn.active(data-add="south") South
%button.btn(data-add="east") East
%button.btn(data-add="west") West
Caret's are positioned to align with one another, most likely they will
need some sort of offset based on the component they are paired with.
Heads Up! The class .caret and .caret.south are scoped to the
same styles
Style Settings
@importutensils/icon_caret
To override the default settings, set the variable and it's value
within your config.sass file or before caret.sass is loaded.
Variable
Default
Description
$caret-size
6px
The border-width (size) of the caret
$caret-color
$link-color
The base border-color of the caret
$caret-color-hover
$link-hover
The base border-color of the caret when hovered
$caret-color-active
$link-active
The base border-color of the caret when active
Icon Close
Use the close icon to dismiss modals, notifications and other elements.
Pro Tip! In your markup use × for the content of the close icon
Style Settings
@importutensils/icon_close
To override the default settings, set the variable and it's value
within your config.sass file or before close.sass is loaded.
Variable
Default
Description
$close-size
$base-font-size + 6
The size of the font
$close-opacity
0.3
The opacity level in the static state
$close-opacity-active
0.5
The opacity level when hovered or active
$close-color
black
The default color of the .close element
$close-color-inverse
invert($close-color)
The default color of the .close.inverse element
$close-shadow
$small-drop-lite
The text shadow for the .close element
$close-shadow-inverse
$small-drop-dark
The text shadow for the .close.inverse element
Icon Paddle
Paddles are commonly used in carousel or simple paging navigations.
The paddle icons are setup as absolutely positioned and should reside in
an element that is positioned relatively.
Paddles should be extended by a component class for exact positioning
and styles.
An object that keeps track of an image's original size, it's container's
size, and gives you the ability to set different crop modes on the
image.
Todo
Document
Test
ImageUtil
A collection of image loading and resizing helper methods
Todo
Document
Test
Indicator
Indicators are used primarily in carousels for navigation elements for
cycling through slides.
Indicators are instantiated through a carousel component and inject the
instance of the carousel to respond to. All public activity should
still be handled via the carousel. Markup for a carousel is
automatically generated via JavaScript.
To override the default settings, set the variable and it's value
within your config.sass file or before indicator.sass is loaded.
Variable
Default
Description
$indication-bgc
$base-bgc
The background-color of a indication button
$indication-bgc-hover
$base-bgc-hover
The background-color of a indication button on hover
$indication-bgc-active
$base-bgc-active
The background-color of a indication button when active
$indication-border
$base-border
The border-color of a indication button
$indication-color-active
$base-color-active
The text color when a indication button is active
$indication-disabled-color
$disabled-color
The text color when a indication button is disabled
$indication-disabled-bgc
transparent
The background-color of a indication button when disabled
$indication-radii
$radii
The border-radius of the indicator buttons
Lib
The lib component contains Sass functions, mixins, and
placeholders to automate common re-usable chunks of CSS. They are
built and designed to work with bourbon.
@importutensils/lib
This will import all of utensil's functions, mixins, and
placeholders. This is the recommended import as it does not add any
selectors to the actual CSS output.
Functions
@importutensils/lib/functions
Conversions
Functions for calculations and conversion between pixels, ems, rems and
percentages.
Function
Params
Usage
to_em
$target-px, $context:$base-font_size
Converts target px value to em in context constraints of the $base-font-size
to_rem
$target-px, $context:$context-px
Converts target px value to rem in context constraints of the user's $base-font-size
to_percent
$target-px, $context:$base-width
Converts target px value to percentage in context constraints of the container's width
vertical_pixel
$target-px
Returns the vertical rhythm in pixels calculated from the $base-vertical setting
vertical_em
$target-px
Returns the vertical rhythm in em calculated from the $base-vertical setting
vertical_percent
$target-px
Returns the vertical rhythm in percent calculated from the $base-vertical setting
Important! When calculating vertical rhythm, always pass in what the
expected pixel value is for the element.
Warning! Define $context_px, $base_font_size, $base_width and
$base_vertical prior to the functions being called.
Mixins
@importutensils/lib/mixins
Arrows
Draws a directional arrow, typically used for the pseudo elements of
:before or :after. These are similar to carets, except they don't
require an extra element inside the DOM.
Mixin
Params
Usage
+arrow
none
The base setup for arrows
+arrow_north
$color:#000, $size:5px, $add_base:false
An arrow pointing up
+arrow_south
$color:#000, $size:5px, $add_base:false
An arrow pointing down
+arrow_east
$color:#000, $size:5px, $add_base:false
An arrow pointing right
+arrow_west
$color:#000, $size:5px, $add_base:false
An arrow pointing left
Heads Up! Arrows are typically positioned absolute by default so
the host should be relative and don't forget to add content: ""
Containers
Allows elements to take the shape of either a column or row within a
grid environment.
Mixin
Usage
+base-column
The base column settings, should be extended by all columns
+base-column-right
An alternate base column which floats elements to the right
+base-row
The base row settings, should be extended by all rows
Warning! The column mixins all utilize box-sizing: border-box which
is not fully supported in ie7
Heads Up! It is recommended to use the placeholder versions of
these instead within your project to cut down on the final CSS output.
Disable Tab Default
Disables the highlight color for tapping on touch webkit devices
.element+disable-tap-default
Fills Height
JG... describe this!
Float Fill
JG... describe this!
Font size
Sets a font-size using rems with a pixel fall back.
Arguments
Default
Usage
$target-px
none
The target font size in pixels
$context
$context-px
The context constraints of the user's base font size
Heads Up! Make sure not to include the px postfix when passing a size
h1+font-size(48)color:blue
Opacity
Provides cross browser opacity, values are between 0-1.
.element+opacity(0.5)
Selection
Inject vendor prefixes for coloring of text foreground and background when selected.
Mixin
Params
Usage
+selection
$bg:#0091ce, $fg:#fff
Set the color styles
+text-selection(blue,white)
Sticky footer
Mixins for sticking and unsticking a footer to the bottom of a page.
Mixin
Parameters
Usage
+sticky_footer
$footer-height
Creates a sticky footer based off a fixed height on the footer element
+unsticky_footer
none
Reverses the effect of the sticky_footer mixin, useful in media queries
Requires the markup to contain a .main, .content and .footer elements.
The base column settings, should be extended by all columns
%base-column-right
An alternate base column which floats elements to the right
%base-row
The base row settings, should be extended by all rows
%clearfix
The micro clearfix utilizing pseudo elements to clear floats
Heads Up!scaffold.sass automatically sets up a .cf class that
extends the %clearfix placeholder
Visibility
Placeholder
Usage
%hidden
Totally hidden from screen readers and browsers
%shown
Reverse the effects of hidden
%visuallyhidden
Only visually hidden, still available to screen readers
%visuallyshown
Reverse the settings applied by .visuallyhidden
%invisible
Hide visually and from screenreaders, but maintain layout
%ir
Wrapper around Bourbon's +hide-text mixin
Heads Up!scaffold.sass automatically sets up a .hidden,
.shown and .ir class that extends the %hidden, %shown, and %ir
placeholders.
MathUtil
A collection of utility math functions
Todo:
Import all MathUtil methods
Port specs from ModeSet.js
Document this
Media Grid
Media container provides a simple way for showcasing images, video
and other media items as static media or clickable links. Include
a .media-caption element when an area is needed to describe the figure.
The media grid contains basic settings for styling and structure,
but it will need some sort of grid setting or width defined on the li
tags. There are currently no margin settings included in the media
grid for this reason.
%ul.media-grid%li(style="width:25%")
%figure.media-item%img(src="http://placehold.it/260x180"width="260"height="180")
%figcaption.media-caption%h3 Media Item
%p This is some caption copy with the footer aligned to the left.
%footer.media-caption-footer%button.btn Action
%li(style="width:25%")
%a.media-item(href="#")
%img(src="http://placehold.it/260x180"width="260"height="180")
%li(style="width:25%")
%figure.media-item%a.media-item(href="#")
%img(src="http://placehold.it/260x180"width="260"height="180")
%figcaption.media-caption%h3 Media Item
%p This is some caption copy with the footer aligned to the right.
%footer.media-caption-footer.media-caption-right%button.btn Action
%li(style="width:25%")
%figure.media-item%img(src="http://placehold.it/260x180"width="260"height="180")
Pro Tip! Add media-caption-right on the media-caption-footer to
align buttons to the right
Style Settings
@importutensils/media_grid
To override the default settings, set the variable and it's value
within your config.sass file or before media_grid.sass is loaded.
Variable
Default
Description
$media-border
$base-border
The border-color of the .media-item
$media-border-hover
$base-border-hover
The border-color of the .media-item when a link is hovered
$media-radii
$radii
The border-radius of the .media-item
Menu
The menu component is a simple list of navigation elements, which are
typically used within the Drop component.
To override the default settings, set the variable and it's value
within your config.sass file or before mirror.sass is loaded.
Variable
Default
Description
$mirror-direction
below
The direction for the mirror (above, below, left, right)
$mirror-distance
2px
The distance to pull the mirror from the object
$mirror-from-color
transparent
The starting color in the gradient
$mirror-color-stop
0.75, transparent
The position and color for the stop
$mirror-to-color
rgba(black, 0.2)
The final color in the gradient
Todo
Make this a cross browser supported style
This might be better as a mixin/placeholder
Modal
Base styles and behaviors for displaying elements within a modal window.
Modals automatically create a backdrop which blocks user interaction
from other elements while the modal is shown. Modals can be disengaged
by including buttons with the data-dismiss="modal" attribute, clicking
on the backdrop or triggering the escape key.
Styles are not included for the contents of a modal (rather just the
modal and backdrop itself). This is better suited for other components
or custom layouts within the application.
Modal Notification
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat.
:ruby@lorem = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minimveniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex eacommodo consequat."%button.btn(data-bindable="modal"href="#modal_href"data-keyboard="true") Launch Modal
.modal.fade#modal_href.notification.success.fade.in(role="alert")
%header.notify-header%h4.notify-heading Modal Notification
%section.notify-content%p=@lorem%footer.notify-footer%button.btn.success(type="button") Action
%button.btn.danger(type="button"data-dismiss="modal") Cancel
%a.close(href="#"data-dismiss="modal") ×
Options
Attribute
Default
Description
namespace
modal
The namespace to use for dispatching events
keyboard
true
Whether to allow the escape key to close the modal
activate
undefined
Allows the modal to activate on load
href
none
DOM element id for the contents of the Modal
See Triggerable for other options
Referencing DOM elements
The modal trigger element needs to reference an element within the DOM
via an id. The target element can live either as the href or
target attribute. By default, any elements with the .modal class are
set to display:none.
API
#= require utensils/modal
data-bindable="modal"
#new
Create a new instance of Modal programmatically. Normally this is
handled through Bindable.
To override the default settings, set the variable and it's value
within your config.sass file or before modal.sass is loaded.
Variable
Default
Description
$modal-bgc
$base-bgc
The background-color of the .modal-backdrop
$modal-opacity-in
0.8
The opacity value of the .modal-backdrop
$modal-width
($base-width - 200) * 1px
The width of the modal
$modal-height
round($modal-width * (9 / 16))
The max-height of the modal
$modal-offset-top
round($modal-height * 0.5)
The margin-top of the modal
$modal-offset-left
round($modal-width * 0.5)
The margin-left of the modal
Modal sizing is setup in a 16:9 ratio and centered within the browser
based of the $base-width of the site. Specific media queries should be
setup to handle various sizing based on the device's viewport.
Warning! The configuration file needs to define the $zindex-modal
and $zindex-modal-backdrop values before this file is imported, this
is done to keep managing z-index mappings in one place.
Navbar
Contains the basic structure for creating application or page level
navigation systems. A combination of styles and layout for supporting
various components with navigation, search forms and drop downs.
This should appear right after compass, bourbon or the polyfills load, but before any
specific styles are imported. This module operates on top level elements
and inserts them directly into your style sheet.
Utilizes the
normalize-rails
gem and a few other optimizations.
@importutensils/normalize
Notification
UI pattern for displaying messaging information in a notification.
Add the Dismiss behavior for allowing the notification to be closed.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat.
Yikes! This doesn't have a header and the footer is on the right! Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat.
:ruby@lorem = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minimveniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex eacommodo consequat.".notification.fade.in(role="alert")
%p Default! This is the default notification
%a.close(href="#"data-bindable="dismiss") ×
.notification.important.fade.in#notification_important(role="alert")
%p Important! This is the important notification
%a.close(href="#"data-bindable="dismiss"data-target="#notification_important") ×
.notification.success.fade.in#notification_success(role="alert")
%p Success! This is the success notification
%a.close(href="#notification_success"data-bindable="dismiss") ×
.notification.warning.fade.in(role="alert")
%p Warning! This is the warning notification
%a.close(href="#"data-bindable="dismiss") ×
.notification.danger.fade.in(role="alert")
%p Danger! This is the danger notification
%a.close(href="#"data-bindable="dismiss") ×
.notification.success.fade.in(role="alert")
%header.notify-header%h4.notify-heading Block Notification
<EMAIL_ADDRESS>Action
%button.btn.danger(data-bindable="dismiss") Cancel
%a.close(href="#"data-bindable="dismiss") ×
.notification.danger.fade.in(role="alert")
%section.notify-content%p Yikes! This doesn't have a header and the footer is on the right!<EMAIL_ADDRESS>Action
%button.btn.danger(data-bindable="dismiss") Cancel
%a.close(href="#"data-bindable="dismiss") ×
Block Notifications
Block notifications are similar to the base notification, in fact
nothing needs to change on the outer container. Just add a
.notify-header, .notify-content and/or .notify-footer to the
internal markup to provide more information around the notification. To
align one of these containers to the right, simply add the modifier
class .notify-right.
Style Settings
@importutensils/notification
To override the default settings, set the variable and it's value within
your config.sass file or before notification.sass is loaded.
Variable
Default
Description
$notification-color
$info
The base color for generic notifications
$notification-radii
$radii
The border-radius to use on notifications
$notification-shadow
$small-drop-lite
The drop-shadow for use on text items
$notification-list
nil
The list of modifier notifcations (success, important, danger)
Pager
Pagers are commonly used in simple paging navigations, where a full
blown pagination system isn't required.
To allow pager to float on the sides of the container, apply the
.prev and .next classes to the containing pager li element.
%nav(role="navigation")
%ul.pager%li.disabled<
%a(href="#") ← Prev
%li<
%a(href="#") Next →
%hr%nav(role="navigation")
%ul.pager.pager-center%li<
%a(href="#") ← Prev
%li<
%a(href="#") Next →
%hr%nav(role="navigation")
%ul.pager.pager-right%li<
%a(href="#") ← Prev
%li.disabled<
%a(href="#") Next →
%hr%nav(role="navigation")
%ul.pager%li.pager-prev<
%a(href="#") ← Prev
%li.pager-next<
%a(href="#") Next →
Usage
Class
Description
.pager
Aligns pagers grouped together on the left edge of the container
.pager.pager-center
Aligns pagers grouped together in the center of the container
.pager.pager-right
Aligns pagers grouped together on the right edge of the container
.pager > .pager-next
Apply pager.next on the li to align the "next pager" to the right edge of the container
.pager > .pager-prev
Apply pager.prev on the li to align the "prev pager" to the left edge of the container
To disable a pager, add the disabled class to the a element's parent li.
Style Settings
@importutensils/pager
To override the default settings, set the variable and it's value
within your config.sass file or before pager.sass is loaded.
Variable
Default
Description
$pager-bgc
$base-bgc
The background-color of the pager
$pager-bgc-hover
$base-bgc-hover
The background-color of the pager when hovered
$pager-bgc-active
$base-bgc-active
The background-color of the pager when active
$pager-border
$base-border
The border-color of the pager
$pager-disabled-color
$disabled-color
The disabled text color of the pager
$pager-disabled-bgc
$disabled-bgc
The disabled background-color of the pager
Pagination
Apply the .pagination class to the ol or ul element to represent
pagination navigation. The list should contain the .nav class.
To override the default settings, set the variable and it's value within
your config.sass file or before pagination.sass is loaded.
Variable
Default
Description
$pagination-bgc
$base-bgc
The background-color of a pagination button
$pagination-bgc-hover
$base-bgc-hover
The background-color of a pagination button on hover
$pagination-bgc-active
$base-bgc-active
The background-color of a pagination button when active
$pagination-border
$base-border
The border-color of a pagination button
$pagination-color-active
$base-color-active
The text color when a pagination button is active
$pagination-disabled-color
$disabled-color
The text color when a pagination button is disabled
$pagination-disabled-bgc
transparent
The background-color of a pagination button when disabled
$pagination-radii
$radii
The border-radius of the :first-child and :last-child pagination button edges
Pro Tip! Add .pagination-center or .pagination-right on the
.pagination container's parent (nav) element to change the
alignment
Pill
Pills are similar to tabs, and follow the same markup structure as other
navigation elements. Pills like other navigation elements require the
.nav class for layout. Add .nav .pill to a ul or ol element.
To utilize a drop dead simple version of hiding and showing content, add
the data-bindable="tab" along with an href attributes pointing to
the related targets panel.
See Tab for more information.
Pill content one
Pill content two
Pill content three
Pill sub content four
Pill sub content five
Pill sub content six
%nav#pill_demo(role="navigation")
%ul.nav.pill(data-bindable="tab"data-related="#pill_content"role="tablist")
%li.active<
%a(href="#pill_one"role="tab") Pill One
%li<
%a(href="#"data-target="#pill_two"role="tab") Pill Two
%li<
%a(href="#pill_three"role="tab") Pill Three
%li.drop(data-bindable="drop")
%a.drop-toggle#pill_drop(href="#") Pill Drop
%ul.nav.menu(role="menu"aria-labelledby="pill_drop")
%li<
%a(href="#pill_four"role="tab"tabindex="-1") Pill Four
%li<
%a(href="#pill_five"role="tab"tabindex="-1") Pill Five
%li<
%a(href="#pill_six"role="tab"tabindex="-1") Pill Six
%section#pill_content.tab-content(style="margin-top:1.25em;")
%article.tab-pane.active#pill_one(role="tabpanel")
%p Pill content one
%article.tab-pane#pill_two(role="tabpanel")
%p Pill content two
%article.tab-pane#pill_three(role="tabpanel")
%p Pill content three
%article.tab-pane#pill_four(role="tabpanel")
%p Pill sub content four
%article.tab-pane#pill_five(role="tabpanel")
%p Pill sub content five
%article.tab-pane#pill_six(role="tabpanel")
%p Pill sub content six
Style Settings
@importutensils/pill
To override the default settings, set the variable and it's value within
your config.sass file or before pill.sass is loaded.
Variable
Default
Description
$pill-bgc-hover
$base-bgc-hover
The background-color of the pill component when hovered
$pill-bgc-active
$base-bgc-active
The background-color of the pill component when active
$pill-bgc-selected
$base-bgc-active
The background-color of the pill component when selected
$pill-radii
$radii
The border-radius of the pill link
Pill Stacked
Stack pills by adding the class .stacked to the .pill element.
Stacked pills require the pill component.
Pill content one
Pill content two
Pill content three
Pill sub content four
Pill sub content five
Pill sub content six
%nav#pill_stacked_demo(role="navigation")
%ul.nav.pill.stacked(data-bindable="tab"data-related="#pill_stacked_content"role="tablist")
%li.active<
%a(href="#pill_stacked_one"role="tab") Pill One
%li<
%a(href="#"data-target="#pill_stacked_two"role="tab") Pill Two
%li<
%a(href="#pill_stacked_three"role="tab") Pill Three
%li.drop(data-bindable="drop")
%a.drop-toggle#pill_stacked_drop(href="#") Pill Drop
%ul.nav.menu(role="menu"aria-labelledby="pill_stacked_drop")
%li<
%a(href="#pill_stacked_four"role="tab"tabindex="-1") Pill Four
%li<
%a(href="#pill_stacked_five"role="tab"tabindex="-1") Pill Five
%li<
%a(href="#pill_stacked_six"role="tab"tabindex="-1") Pill Six
%section#pill_stacked_content.tab-content(style="margin-top:1.25em;")
%article.tab-pane.active#pill_stacked_one%p Pill content one
%article.tab-pane#pill_stacked_two%p Pill content two
%article.tab-pane#pill_stacked_three%p Pill content three
%article.tab-pane#pill_stacked_four%p Pill sub content four
%article.tab-pane#pill_stacked_five%p Pill sub content five
%article.tab-pane#pill_stacked_six%p Pill sub content six
Style Settings
@importutensils/pill@importutensils/pill_stacked
All style settings are inherited from pill.sass.
Placeholder Polyfill
Polyfills <input> placeholder attribute functionality for IE 9 and below (and other dinosaurs).
Todo
Document
Test
Pop
Pops are a more robust Tip. They are built for holding small bits of
information, media or other secondary content, which is predominantly
triggered through a click event. They can be assembled via
data attributes or reference a hidden element within the DOM to
inject into a Pop container. Positioning is defined by cardinal
points.
Exterior content
%nav%ul.nav.inline%li<
%a#pop_north(data-bindable="pop"data-delay="100"title="The Northern Pop"data-content="North is way up there, just hanging out with the Canadians."href="#") Northern Pop
%li<
%a#pop_south(data-bindable="pop"data-placement="south"data-delay="1000,2000"title="The Southern Pop"data-content="South is where the snow goes in the summer. You should go there."href="#") Southern Pop
%li<
%a#pop_east(data-bindable="pop"data-trigger="hover"data-placement="east"title="The Eastern Pop"data-content="East Coast hip-hop in the 90s is about as good as it gets."href="#") Eastern Pop
%li<
%a#pop_west(data-bindable="pop"data-placement="west"title="
The Western Pop
"data-content="At some point the West Coast is just going to drop into the Pacific."href="#") Western Pop
%li<
%a#pop_no_title(data-bindable="pop"data-placement="north"data-content="Check me out, rolling with no title and all. Total chaos."href="#") No Title
%li<
%a#pop_selector(data-bindable="pop"href="#pop_exterior_content"data-placement="west"data-toggle="in"data-delay="1000,0"data-bubble="true") Exterior Content
.hidden#pop_exterior_content.pop.fade.pop-arrow.pop-inner.pop-header%h3 Exterior content
.pop-content%img(src="http://placehold.it/260x180"width="280"height="180")
Options
Attribute
Default
Description
namespace
pop
The namespace to use for dispatching events
toggle
active in
Overrides Triggerable's default of active
trigger
click
The event to trigger toggle behavior [click, hover, focus, manual]
title
""
The title (html or text) to insert for the header when "is tip like"
content
""
The content (html or text) to insert for the body when "is tip like"
placement
north
Where to position the pop in relation to the element: north, south, east, west
effect
fade
The base animation class to add to the tip markup
href
none
Optional DOM element id for the contents and data-attributes to use for the contents of the Pop
Heads Up!Pop will override it's placement automatically through
Directional if it determines the requested position will render the
pop outside the viewport.
Referencing "is tip like" means the contents of the Pop reside within
the data attributes of the link. When a Pop "is not tip like", it
references a hidden DOM element.
See Triggerable for other options.
Referencing DOM elements
If the binded pop element has no data-content attribute, then Pop
searches for the element in the DOM by the id given in the href or
the data-target attribute. This element should have an outer container
containing the markup and data-attribute options to be used with the
Pop. This markup is blown away from the DOM and stored internally the
first time the Pop is activated. It's a good idea to include the
.hidden or .visuallyhidden class on the container to keep it from
appearing on screen initially.
Pro Tip! This is the preferred behavior for creating more complex
Pop components.
API
#= require utensils/pop
data-bindable="pop"
#new
Create a new instance of Pop programmatically. Normally this is
handled through Bindable.
To override the default settings, set the variable and it's value
within your config.sass file or before pop.sass is loaded.
Variable
Default
Description
$pop-bgc
$base-bgc
The background-color of the pop
$pop-border
$base-border
The border-color of the pop
$pop-radii
$radii
The border-radius value of the pop
$pop-offset
10px
The amount to offset each pop from their target
$pop-header-bgc
$base-bgc-active
The background-color of the .pop-header
$pop-header-font-weight
bold
The font-weight of the header (has very low specificity)
$pop-header-font-size
$base-font-size + 2
The font-size of the header (has very low specificity)
$pop-arrow-bgc
$pop-bgc
The background-color of the foreground arrow
$pop-arrow-border
$pop-border
The background-color of the background arrow
$pop-arrow-size
10px
The size of the arrow (this has a pretty distinct relation to $pop-offset)
$pop-arrow-border-size
$pop-arrow-size + 2
The width of the background arrow creating the border effect
$pop-arrow-offset
-$pop-arrow-size + 1
The offset against the background arrow
Warning! The configuration file needs to define the $zindex-pop
value before this file is imported, this is done to keep managing
z-index mappings in one place.
Print
A very basic print style sheet based off settings outlined by HTML5
Boilerplate. Styles are associated with
the @media print query.
@importutensils/print
Progress
Styles and simple behavior for progress indicator bars.
If a width and height attribute is not found, the ratio defaults to
16:9.
API
#= require responsive_frame
data-bindable="responsive-frame"
#resize
Calls the resize event to scale the iframe.
@responsive_frame.resize()
#dispose
Remove the ResponsiveFrame behavior and stops listening to windowresize events.
@responsive_frame.dispose()
Requires
utensils/utensilsutensils/bindable
Scaffold
Sets up core scaffolding elements for html, body, selections, links
and navigation.
Navs
The base .nav is the building block for navigation structures and
components (tabs, pills, breadcrumbs, pagination and navigation lists).
The .nav class can be used for simple navigation as well.
%nav.well(role="navigation")
%ul.nav(data-bindable="toggle-group")
%li.nav-header Nav Header
%li%a(href="#") Block Link 1
%li.active%a(href="#") Block Link 2
%li%a(href="#") Block Link 3
%li.nav-divider%li.nav-header Nav Header
%li%a(href="#") Block Link 4
%nav(role="navigation")
%ul.nav.inline(data-bindable="toggle-group")
%li%a(href="#") Inline Link 1
%li.active%a(href="#") Inline Link 2
%li%a(href="#") Inline Link 3
Warning! All navigation components depend on the .nav class being
attached to the container element
For convenience, add the .inline class to the .nav element to
display the base nav inline.
Utilize the .nav-header and .nav-divider for building simple
navigation lists.
Tab Panels
Tab panels are typically used by Tab and Pill for showing and hiding
related content. See Tab for usage.
Utility Classes
For convenience and common patterns, a few utility classes are setup in
the scaffold.
Class
Usage
.pull-left
Adds a float:left to an element
.pull-right
Adds a float:right to an element
.cf
Extends the placeholder for the clearfixer mixin
.ir
Extends the placeholder for the ir image replacement mixin
.hidden
Extends the placeholder for the hidden mixin
.shown
Extends the placeholder for the shown mixin
Style Settings
@importutensils/scaffold
To override the default settings, set the variable and it's value
within your config.sass file or before scaffold.sass is loaded.
Populate ARIA attributes as well, see
examples and
spec
Tab
Tabs follow the same markup structure as other navigation elements. Tabs
like other navigation elements require the .nav class for layout. Add
.nav .tab to a ul or ol element.
To utilize a drop dead simple version of hiding and showing content, add
the data-bindable="tab" along with an href attributes pointing to
the related targets panel.
Tab content one
Tab content two
Tab content three
Tab sub content four
Tab sub content five
Tab sub content six
%nav#tab_demo(role="navigation")
%ul.nav.tab(data-bindable="tab"data-related="#tab_content"role="tablist")
%li.active<
%a(href="#tab_one"role="tab") Tab One
%li<
%a(href="#"data-target="#tab_two"role="tab") Tab Two
%li<
%a(href="#tab_three"role="tab") Tab Three
%li.drop(data-bindable="drop")
%a.drop-toggle#tab_drop(href="#") Tab Drop
%ul.nav.menu(role="menu"aria-labelledby="tab_drop")
%li<
%a(href="#tab_four"role="tab"tabindex="-1") Tab Four
%li<
%a(href="#tab_five"role="tab"tabindex="-1") Tab Five
%li<
%a(href="#tab_six"role="tab"tabindex="-1") Tab Six
%section#tab_content.tab-content(style="margin-top:1.25em;")
%article.tab-pane.active#tab_one(role="tabpanel")
%p Tab content one
%article.tab-pane#tab_two(role="tabpanel")
%p Tab content two
%article.tab-pane#tab_three(role="tabpanel")
%p Tab content three
%article.tab-pane#tab_four(role="tabpanel")
%p Tab sub content four
%article.tab-pane#tab_five(role="tabpanel")
%p Tab sub content five
%article.tab-pane#tab_six(role="tabpanel")
%p Tab sub content six
Options
Attribute
Default
Description
namespace
tab
The namespace to use for dispatching events
related
null
The selector container with tabable content
related-toggle
toggle
The class(es) to toggle when triggered on the related element
See ToggleGroup for more options.
API
#= require utensils/tab
data-bindable="tab"
#new
Create a new instance of Tab programatically, typically this is
instantiated through Bindable.
Activate can take either an index or element as it's target parameter.
Activating will add the toggle classes to the element. Activate will
remove the toggle classes from other elements within the group.
Dispatches a tab:activated event.
# activate by<EMAIL_ADDRESS>activate by element@tab.activate@tab_el.find'li:nth-child(2)'
#deactivate
Deactivate can take either an index or element as it's target parameter.
Deactivating will remove the toggle classes from the element. Dispatches
a tab:deactivated event.
# deactivate by<EMAIL_ADDRESS>deactivate by element@tab.deactivate@tab_el.find'li:nth-child(2)'
To override the default settings, set the variable and it's value within
your config.sass file or before tab.sass is loaded.
Variable
Default
Description
$tab-bgc
$base-bgc
The background-color of the tab component
$tab-bgc-hover
$base-bgc-hover
The background-color of a tab element when hovered
$tab-bgc-active
$base-bgc-active
The background-color of a tab element when active
$tab-border
$base-border
The border-color of the tab component
$tab-radii
$radii
The border-radius of the tab component
Tab Stacked
Stack tabs by adding the class .stacked to the .tab element.
Stacked tabs require the tab component.
Tab content one
Tab content two
Tab content three
Tab sub content four
Tab sub content five
Tab sub content six
%nav#tab_stacked_demo(role="navigation")
%ul.nav.tab.stacked(data-bindable="tab"data-related="#tab_stacked_content"role="tablist")
%li.active<
%a(href="#tab_stacked_one"role="tab") Tab One
%li<
%a(href="#"data-target="#tab_stacked_two"role="tab") Tab Two
%li<
%a(href="#tab_stacked_three"role="tab") Tab Three
%li.drop(data-bindable="drop")
%a.drop-toggle#tab_stacked_drop(href="#") Tab Drop
%ul.nav.menu(role="menu"aria-labelledby="tab_stacked_drop")
%li<
%a(href="#tab_stacked_four"role="tab"tabindex="-1") Tab Four
%li<
%a(href="#tab_stacked_five"role="tab"tabindex="-1") Tab Five
%li<
%a(href="#tab_stacked_six"role="tab"tabindex="-1") Tab Six
%section#tab_stacked_content.tab-content(style="margin-top:1.25em;")
%article.tab-pane.active#tab_stacked_one(role="tabpanel")
%p Tab content one
%article.tab-pane#tab_stacked_two(role="tabpanel")
%p Tab content two
%article.tab-pane#tab_stacked_three(role="tabpanel")
%p Tab content three
%article.tab-pane#tab_stacked_four(role="tabpanel")
%p Tab sub content four
%article.tab-pane#tab_stacked_five(role="tabpanel")
%p Tab sub content five
%article.tab-pane#tab_stacked_six(role="tabpanel")
%p Tab sub content six
Style Settings
@importutensils/tab@importutensils/tab_stacked
All style settings are inherited from tab.sass.
Table
Building tables is additive around the classes applied to the top level

 element. By combining any of the following classes, the table
can be given a different look and feel.
%table.demo(data-target="this")
%caption>Table Caption
%thead%tr%th%a(href="#") #%th Table Header
%th%a(href="#") Table Header Link
%th Table Header
%tfoot%tr%td(colspan="4") Set the colspan attribute to span the width of the table for footers.
%tbody%tr%td 1
%td Table Data
%td One
%td Three
%tr%td 2
%td%a(href="#") Click me!
%td Two
%td Two
%tr%td 3
%td%a(href="#") Click me!
%td Three
%td One
%tr.important%td 4
%td%a(href="#") Click me!
%td tr.important
%td Modifier name: important
%tr.success%td 5
%td%a(href="#") Click me!
%td tr.success
%td Modifier name: success
%tr.warning%td 6
%td%a(href="#") Click me!
%td tr.warning
%td Modifier name: warning
%tr.danger%td 7
%td%a(href="#") Click me!
%td tr.danger
%td Modifier name: danger
%h5(style="margin-bottom:1em; margin-top:3em;") Select to toggle table classes
%nav.modifier-demo.button-group(data-bindable="toggle-button-group"data-behavior="checkbox")
%button.btn(data-toggle="table-box") Box
%button.btn(data-toggle="table-vborder") Vertical Border
%button.btn(data-toggle="table-condensed") Condensed
%button.btn(data-toggle="table-banded") Banded
%button.btn(data-toggle="table-hover") Hover
%button.btn(data-toggle="table-thead") Header
%button.btn(data-toggle="table-tfoot") Footer
Options
Adding a class directly to the table element produces the following.
Class
Usage
none
The base table creates division in data with horizontal dividers
.table-box
Renders the table with exterior boundaries for all table rows
.table-vborder
Renders the table with vertical divisions for table data
.table-condensed
Condenses the table cell heights by 1/2
.table-banded
Renders alternating
 rows with a different color
.table-hover
Shows a hover state on the table cell
.table-thead
Fills the thead with a background fill
.table-tfoot
Fills the tfoot with a background fill
Table Status Modifiers
The status styles around tbody tr elements are not supported out of
the box. To include these, setup a $table-status-list variable with
the associated classes and color values.
Style Settings
@importutensils/table
To override the default settings, set the variable and it's value
within your config.sass file or before table.sass is loaded.
Variable
Default
Description
$table-bgc
$base-bgc
The background-color of the table
$table-border
$base-border
The border-color of the table
$table-band-odd-bgc
$table-bgc
The background-color of odd rows in .table-banded
$table-band-even-bgc
darken($table-band-odd-bgc, 5%)
The background-color of even rows in .table-banded
$table-hover-bgc
darken($table-bgc, 10%)
The background-color of the td element in .table-hover
$table-thead-bgc
darken($table-bgc, 12%)
The background-color of the thead element in .table-thead
$table-tfoot-bgc
darken($table-bgc, 5%)
The background-color of the tfoot element in .table-tfoot
$table-padding-lr
0.5em
The padding-left, padding-right value for th and td
$table-padding-tb
0.8em
The padding-top, padding-bottom value for th and td (divided by 2 for table-condensed)
$table-status-list
nil
The list of modifier classes to include for tr cell statuses
Warning! Tables throughout the style guide may not contain the exact styles of the application.
Timeslot
Utility class for finding and normalizing time slots.
API
#= require timeslot
#new
Create a new instance of Timeslot, typically used compositionally.
Returns an object from a hash like, array like or number like string.
The object assumes delay style timeouts with an activate and
deactivate values.
@timeslot.getTimeslotFromData'100'# returns: {activate:100, deactivate:100}@timeslot.getTimeslotFromData'200','show','hide'# returns: {activate:200, deactivate:200, show:200<EMAIL_ADDRESS>300'# returns: {activate:200, deactivate:300}, the first number is always assumed as `activate`@timeslot.getTimeslotFromData'{activate:400, deactivate:500}'# returns: {activate:400, deactivate:500}@timeslot.getTimeslotFromData'activate:600, deactivate: 700'# returns: {activate:600, deactivate:700}@timeslot.getTimeslotFromData'show:600, hide: 700'# returns: {activate:600, deactivate:700, show:600, hide:700}@timeslot.getTimeslotFromData'off:100, on: 1000'# returns: {activate:1000, deactivate:100, on:1000, off:100}
If slot names are not activate or deactivate an attempt is made to
find a match from common terms. If this is the case, those common terms
are returned along with the typical activate and deactivate terms.
#getClosestMatch
Attempts to find the closest match for activate and deactivate
against a set of regular expressions.
Tool tip component for showing quick bits of information to a user. Tips
are generally used on hover states, but can be tied to any event
trigger. Positioning is defined by cardinal points.
Tip is structured for very simple use cases, mainly dealing with tool
tip type behavior. Generally the Pop component is more robust and
should be considered in most cases.
%nav%ul.nav.inline%li<
%a#north_tip(data-bindable="tip"data-delay="100"title="The Northern Tip"href="#") Northern Tip
%li<
%a#south_tip(data-bindable="tip"data-placement="south"data-delay="500,1000"title="The Southern Tip"href="#") Southern Tip
%li<
%a#east_tip(data-bindable="tip"data-placement="east"title="The Eastern Tip"href="#") Eastern Tip
%li<
%a#west_tip(data-bindable="tip"data-placement="west"title="The Western Tip"href="#") Western Tip
%li<
%a#image_tip(data-bindable="tip"data-placement="north"data-trigger="click"title=""href="#") Image Tip (click)
Options
Attribute
Default
Description
namespace
tip
The namespace to use for dispatching events
toggle
active in
Overrides Triggerable's default of active
trigger
hover
Overrides Triggerable's default of click, unless it's a touch enabled device
title
""
The content (html or text) to insert for the tip, use the actual title attribute though
placement
north
Where to position the tip in relation to the element: north, south, east, west
effect
fade
The base animation class to add to the tip markup
See Triggerable for other options
Heads Up!Tip will override it's placement automatically through
Directional if it determines the requested position will render the
tip outside the viewport.
API
#= require tip
data-bindable="tip"
#new
Create a new instance of Tip programmatically. Normally this is
handled through Bindable.
To override the default settings, set the variable and it's value
within your config.sass file or before tip.sass is loaded.
Variable
Default
Description
$tip-bgc
black
The background-color of the tip and arrow
$tip-color
white
The text color of the tip
$tip-font-size
$base-font-size - 2
The font-size for tips
$tip-radii
$radii
The border-radius value of the tip
$tip-offset
2px
The amount to offset each tip from their target
$tip-opacity-in
0.9
The opacity value to apply when the tip is shown
$tip-arrow-bgc
$tip-bgc
The background-color for the arrow
$tip-arrow-size
5px
The size of the arrow
$tip-arrow-offset
-$tip-arrow-size
The offset for positioning the arrow
Warning! The configuration file needs to define the $zindex-tip
value before this file is imported, this is done to keep managing
z-index mappings in one place.
Toggle
Base class for adding, removing and toggling classes on a single
element.
Any events dispatched from Toggle contain the event property as the
first parameter and the @el as the second parameter. This is done to
ensure scope is transferred correctly and for a quicker lookup from the
class utilizing a Toggle instance.
Toggle Group
Base class for adding, removing and toggling classes on a group of
elements. These are predominantly used in navigation type systems. A
ToggleGroup can function either like radio buttons or check boxes.
Utilize the toggle-group value for most navigation styles that are
li based. For .button-groups and .button-toolbar where links are
flat, use toggle-button-group value. See the usage example for more
information.
ToggleGroup utilizes Triggerable through composition.
%nav(role="navigation")
%ul#toggle_group_radios.nav.inline(data-bindable="toggle-group"data-target=".radio-li")
%li.radio-li<
%a(href="#") Radio 1
%li.radio-li<
%a(href="#") Radio 2
%li.radio-li<
%a(href="#") Radio 3
%li.radio-li.group-ignore Not a link
%hr%nav(role="navigtion")
%ul#toggle_group_checks.nav.inline(data-bindable="toggle-group"data-behavior="checkbox"data-ignore=".text-ignore")
%li<
%a(href="#") Checkbox 1
%li<
%a(href="#") Checkbox 2
%li<
%a(href="#") Checkbox 3
%li.text-ignore Not a link
%hr%nav(role="navigation")
%ul#toggle_group_delay.nav.inline(data-bindable="toggle-group"data-delay="500, 500"data-toggle="active on"data-namespace="toggle_delay")
%li<
%a(href="#") Radio Delay 1
%li<
%a(href="#") Radio Delay 2
%li<
%a(href="#") Radio Delay 3
%li.group-ignore Not a link
%hr%nav(role="navigtion")
%ul#toggle_group_spans.nav.inline(data-bindable="toggle-group"data-behavior="checkbox")
%li<
%a(href="#") Checkbox 1 I'm a span
%li<
%a(href="#") Checkbox 2 I'm a span
%li<
%a(href="#") Checkbox 3 I'm a span
%hr%section#toggle_button_group_radios.button-toolbar(data-bindable="toggle-button-group"role="navigation")
%nav.button-group%button.btn 1
%button.btn 2
%button.btn 3
%nav.button-group%button.btn.active 4
%nav.button-group%button.btn 5
%button.btn 6
%button.btn 7
%hr%nav#toggle_button_group_checks.button-group(data-bindable="toggle-button-group"data-behavior="checkbox"data-target=".btn"role="navigation")
%a.btn(href="#") Left Span
%a.btn.active(href="#") Middle 1
%a.btn(href="#") Middle 2
%a.btn(href="#") Right
Options
Attribute
Default
Description
namespace
toggle_group
The namespace to use for dispatching events
toggle
active
The class(es) to toggle when triggered
behavior
radio
Set to radio for radio style toggling or checkbox for check box style toggling
target
li
The identifier for looking up child elements to operate on.
activate
false
If present, this will auto activate the element
ignore
.group-ignore,.drop
Elements in the stack to ignore trigger events from
See Triggerable for more options.
When specifying a bindable as toggle-button-group, the default
target attribute becomes a,button instead of li. This can be overridden by
supplying a data-target attribute.
Activate can take either an index, string or element as it's target
parameter. Activating will add the toggle classes to the element. If
behavior is set to radio, activate will remove the toggle classes from
other elements within the group. Dispatches a toggle_group:activated
event.
# activate by index<EMAIL_ADDRESS>activate by string@radio_group.activate'li:first'@check_group.activate'li:first'# activate by element@radio_group.activate@radios.find'li:first'@check_group.activate@checks.find'li:first'
#deactivate
Deactivate can take either an index, string or element as it's target
parameter. Deactivating will remove the toggle classes from the
element. Dispatches a toggle_group:activated event.
# deactivate by index<EMAIL_ADDRESS>deactivate by string@radio_group.deactivate'li:first'@check_group.deactivate'li:first'# deactivate by element@radio_group.deactivate@radios.find'li:first'@check_group.deactivate@checks.find'li:first'
Any events dispatched from ToggleGroup contain the event property as
the first parameter and the activator/deactivator as the second
parameter. This is done to ensure scope is transferred correctly and for
a quicker lookup from the class utilizing a ToggleGroup instance.
Touch Scroller
Describe this.
Todo
Check with JG on the js port
Check with JG on the style port
Test
Document
MouseAndTouchTracker
This class normalizes mouse and touch events to help with the creation of draggable/scrollable interfaces
that work across browsers and devices.
API
#= require touch_tracker
#new
Typically MouseAndTouchTracker is required via a class that needs it, i.e. Slider, TouchScroller, etc..
To override the default settings, set the variable and it's value
within your config.sass file or before transition.sass is loaded.
Variable
Default
Description
$fade-duration
$speed
Duration to fade the element
$fade-timing-function
linear
Timing equation to fade the element
$transall-duration
$speed
Duration to transition the element
$transall-timing-function
$ease-in-out-quart
Timing equation to transition the element
Triggerable
Base class for handling and dispatching user interactions. Triggerable
is used via composition by most components that trigger some sort of
stateful change.
Triggerable is not a Bindable class and needs to be instantiated via
a class instance.
Usage
As a class making use of a Triggerable instance through composition:
The event to trigger toggle behavior [click, hover, focus, manual]
bubble
false
Controls whether an action preventsDefault, setting to true will allow normal events to bubble
delay
undefined
The amount of time in milliseconds to delay on activate and deactivate, see the Timeslot class for more information
Options are typically passed up through the class instance utilizing
Triggerable.
Trigger Types
The trigger attribute is mapped to an object with on/off properties
based on the following:
Attribute
trigger.on => handler
trigger.off => handler
click
click => #toggle
click => #toggle
hover
mouseenter => #activate
mouseleave => #deactivate
focus
focus => #activate
blur => #deactivate
manual
none
none
The manual trigger does not add any listeners, as it's meant to be
called programmatically from another object.
By default, any triggers related to hover will also receive the focus
and blur events. This is done to help with typical ARIA behavior.
Any other trigger types, not included in this list, map their on/off
properties to the given trigger name. They will automatically call the
#toggle handler.
Delays
When delay is set, the #activate and #deactivate methods are
scoped to #activateWithDelay and #deactivateWithDelay. Classes
utilizing Triggerable through composition and a delay do not need to
be concerned with this in their own API. Compositional classes should
only rely on the dispatched events from their instance of Triggerable.
If one of the delay properties (activate or deactivate) is 0, then
the method for that property will not be scoped through the delay
method.
API
#= require utensils/triggerable
#new
Create a new instance of Triggerable programatically.
Typically called through user input, but can be triggered by the
elements toggle event.
@triggerable.toggletarget: @el
#activate
Activate a Triggerable instance. Dispatches a triggerable:trigger
and triggerable:activate event.
@triggerable.activatetarget: @el
#deactivate
Deactivate a Triggerable instance. Dispatches a triggerable:trigger
and triggerable:deactivate event.
@triggerable.deactivatetarget: @el
#dispose
Cleans up any internal references.
@triggerable.dispose()@triggerable = null
Requires
utensils/utensilutensils/timeslot
An instance of Triggerable creates a @dispatcher property for
dispatching events. Typically this is just the @el but is created for
clarity in access from a compositional class.
Any events dispatched from Triggerable contain the event property as
the first parameter and the event.target as the second parameter. This
is done to ensure scope is transferred correctly and for a quicker
lookup from the class utilizing a Triggerable instance.
By default, Triggerable allows an event to propagate. This can be
shut down by calling on the instance: @triggerable.stop_propagation =
true
Typography
Heading, paragraph, blockquotes, code, lists, and inline typographic
elements.
Headings and body copy
Generic h1-h6 headings with a paragraph element.
Google hearts h1 headings, but only use one per page.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Got sections? Try using h2 headings.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Good things come in threes, like tacos and h3 headings.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
There's nothing clever to say about h4 headings.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
Every time you use an h5 heading, Google kills a puppy.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
An h6 heading? Google just killed a litter of kittens.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
:rubylorem = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minimveniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex eacommodo consequat. Duis aute irure dolor in reprehenderit in voluptate velitesse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecatcupidatat non proident, sunt in culpa qui officia deserunt mollit anim id estlaborum."%h1 Google hearts h1 headings, but only use one per page.
%p=lorem%h2 Got sections? Try using h2 headings.
%p=lorem%h3 Good things come in threes, like tacos and h3 headings.
%p=lorem%h4 There's nothing clever to say about h4 headings.
%p=lorem%h5 Every time you use an h5 heading, Google kills a puppy.  Google just killed a litter of kittens.
%p=lorem
Inline paragraph elements
These elements are typically found within blocks of copy.
FPO. Describes an abbreviated phrase with the title attribute
<dfn>
DFN. Describes the definition of a word or term with the title attribute

The ins element defines text that has been inserted into a document

The del tag defines text that has been deleted from a document

The mark element is used for indicating text as marked or highlighted for reference purposes

The code tag is used to show inline code

The kbd tag defines keyboard text
<samp>
The samp tag defines sample computer code
Inline elements examples
Yeah, well, listen. You ought to ditch the twogeeks you're in the car with now and get
in with us. But that'salright, we'll worry about that .
I will see you there. All right™? Man, I love those
redheads.
Address examples
Mr. Address Tag
1600 Pennsylvania Ave NW
Washington D.C. DC 20500
%section(style="width:45%; float:left; margin-right: 5%;")
%h4 Inline elements examples
%br%p
Yeah, well, listen. You ought to ditch the two
geeks you're in the <dfn title="motorized vehicle">car</dfn> with now and get
in with us. But <samp>that's</samp> alright, we'll worry about that <time>later</time>.
I will see you there. All right™? Man, I love those
redheads.
%section(style="width:45%; float:left;")
%h4 Address examples
%br%address
Mr. Address Tag

1600 Pennsylvania Ave NW

Washington D.C. DC 20500

Email:

<a<EMAIL_ADDRESS>Typically used for quoting blocks of text from another source.
“Let me tell you what Melba Toast is packin' right here, all right. We got 4:11 Positrac outback, 750 double pumper, Edelbrock intake, bored over 30, 11 to 1 pop-up pistons, turbo-jet 390 horsepower. We're talkin' some f***in' muscle.”
David Wooderson, Dazed & Confused
%blockquote%p<
“Let me tell you what Melba Toast is packin' right here, all right. We got 4:11 Positrac outback, 750 double pumper, Edelbrock intake, bored over 30, 11 to 1 pop-up pistons, turbo-jet 390 horsepower. We're talkin' some f***in' muscle.”
David Wooderson, Dazed & Confused
Pro Tip! Utilize “ and ” for opening and closing
quotes within a
 element
Rules
Horizontal rules can utilize the class .dashed and .dotted for a
different separator.
%hr%hr.dashed%hr.dotted
Lists
Lists come in three varieties, unordered (ul), ordered (ol), and
unstyled (.unstyled-list). Unstyled simply removes any list styles and
left margin. By default all ul and ol elements nested under a nav
element render the same as an .unstyled-list class.
Unordered list:
Unordered list
Unordered list
Start nested unordered list
Nested unordered list
Nested unordered list
Nested unordered list
Unordered list
Start nested ordered list
Nested ordered list
Nested ordered list
Nested ordered list
Ordered list:
Ordered list
Ordered list
Start nested ordered list
Nested ordered list
Nested ordered list
Nested ordered list
Ordered list
Start nested unordered list
Nested unordered list
Nested unordered list
Nested unordered list
Unstyled list:
Unordered list
Unordered list
Start nested unordered list
Nested unordered list
Nested unordered list
Nested unordered list
Unordered list
Start nested ordered list
Nested ordered list
Nested ordered list
Nested ordered list
%section(style="width:25%; float:left; margin-right: 5%;")
%p<
%strong Unordered list:
%ul%li Unordered list
%li Unordered list
%li
Start nested unordered list
%ul%li Nested unordered list
%li Nested unordered list
%li Nested unordered list
%li Unordered list
%li
Start nested ordered list
%ol%li Nested ordered list
%li Nested ordered list
%li Nested ordered list
%section(style="width:25%; float:left; margin-right: 5%;")
%p<
%strong Ordered list:
%ol%li Ordered list
%li Ordered list
%li
Start nested ordered list
%ol%li Nested ordered list
%li Nested ordered list
%li Nested ordered list
%li Ordered list
%li
Start nested unordered list
%ul%li Nested unordered list
%li Nested unordered list
%li Nested unordered list
%section(style="width:25%; float:left;")
%p<
%strong Unstyled list:
%ul.unstyled-list%li Unordered list
%li Unordered list
%li
Start nested unordered list
%ul%li Nested unordered list
%li Nested unordered list
%li Nested unordered list
%li Unordered list
%li
Start nested ordered list
%ol%li Nested ordered list
%li Nested ordered list
%li Nested ordered list
Definition Lists
Definition lists are used to encapsulate a term and it's definition. The
standard definition list utilizes a block level structure. Giving the
dl the class dl-horizontal renders the dt and dd on the same
line. You can control the positioning by altering the
$definition-horiz-offset and $definition-horiz-offset-padding
variables.

Style Settings
@importutensils/typography
To override the default settings, set the variable and it's value within
your config.sass file or before typography.sass is loaded.
Variable
Default
Description
$heading-color
$body-color
The color of heading elements
$heading-family
$sans-family
The font-family of heading elements
$heading-font-weight
bold
The font-weight of heading elements
$heading-line-height
$base-line-height
The line-height of heading elements
$h1-size
$base-font-size + 16
The font-size of h1 elements
$h2-size
$base-font-size + 10
The font-size of h2 elements
$h3-size
$base-font-size + 4
The font-size of h3 elements
$h4-size
$base-font-size + 2
The font-size of h4 elements
$h5-size
$base-font-size + 1
The font-size of h5 elements
$h6-size
$base-font-size
The font-size of h6 elements
$hr-border
$base-border
The color of horizontal rules
$mark-bgc
$yellow
The background-color of the mark element
$mark-color
#333
The text color for the mark element
$code-bgc
$focus-bgc
The background-color of code and pre blocks
$code-border
$base-border
The border-color of code and pre blocks
$code-color-inline
$body-color
The color of inline code elements
$pre-radii
$radii
The border-radius of pre blocks
$blockquote-family
$serif-family
The font-family of blockquote elements
$definition-horiz-offset
$horiz-offset
The offset to use for .dl-horizontal
$definition-horiz-offset-padding
$horiz-offset-padding
The padding between a term and definition within the .dl-horizontal element
Upgrade
The upgrade component is a lightweight messaging systems used to notify
users to upgrade their browser or enable JavaScript.
The markup is served as a partial, typically from
layouts/shared/_upgrade.html.haml. A template is included in
templates/layouts/shared.
Read this! The demo positions the upgrade message with position:fixed while the
default behavior is actually position:absolute. This is for
convenience only so there is no need to scroll to the top of the page.
Style Settings
@importutensils/upgrade
To override the default settings, set the variable and it's value
within your config.sass file or before upgrade.sass is loaded.
Variable
Default
Description
$upgrade-color
white
The text color of the message
$upgrade-bgc
$danger
The background-color of the notification
$dinosaur-class
dinosaur
The class attached to the html element for older unsupported browsers
Utensils
The top level namespace object for the utensils library created on window.
Usage
#= require utensils/utensilsclassutensils.ClassName# class definition..
Well
Wells are used to contain components and other various elements. Works
great with form layouts.