less-rails-liftkit 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +7 -0
- data/.travis.yml +5 -0
- data/Gemfile +5 -0
- data/README.md +0 -0
- data/Rakefile +14 -0
- data/less-rails-liftkit.gemspec +19 -0
- data/lib/less/rails/liftkit/engine.rb +13 -0
- data/lib/less/rails/liftkit/version.rb +7 -0
- data/lib/less/rails/liftkit.rb +2 -0
- data/lib/less-rails-liftkit.rb +9 -0
- data/vendor/assets/javascripts/lift/liftkit/plugins/jquery.blockify.js +86 -0
- data/vendor/assets/javascripts/lift/liftkit/plugins/jquery.cycle.js +1503 -0
- data/vendor/assets/javascripts/lift/liftkit/plugins/jquery.dropdown.js +71 -0
- data/vendor/assets/javascripts/lift/liftkit/plugins/jquery.hashchange.js +390 -0
- data/vendor/assets/javascripts/lift/liftkit/plugins/jquery.modal.js +133 -0
- data/vendor/assets/javascripts/lift/liftkit/plugins/jquery.placeholder.js +106 -0
- data/vendor/assets/javascripts/lift/liftkit/plugins/jquery.stickybox.js +116 -0
- data/vendor/assets/javascripts/lift/liftkit/plugins/jquery.tabs.js +119 -0
- data/vendor/assets/javascripts/lift/liftkit/script.js +59 -0
- data/vendor/assets/javascripts/lift/liftkit/underscore.js +34 -0
- data/vendor/assets/javascripts/lift/liftkit.js +3 -0
- data/vendor/assets/stylesheets/lift/liftkit.css.less +1 -0
- data/vendor/frameworks/lift/liftkit/alerts.less +104 -0
- data/vendor/frameworks/lift/liftkit/buttons.less +160 -0
- data/vendor/frameworks/lift/liftkit/core.less +345 -0
- data/vendor/frameworks/lift/liftkit/fluid.less +93 -0
- data/vendor/frameworks/lift/liftkit/forms.less +401 -0
- data/vendor/frameworks/lift/liftkit/liftkit.less +64 -0
- data/vendor/frameworks/lift/liftkit/modal.less +34 -0
- data/vendor/frameworks/lift/liftkit/navigation.less +159 -0
- data/vendor/frameworks/lift/liftkit/responsive-fixed.less +238 -0
- data/vendor/frameworks/lift/liftkit/responsive-fluid.less +89 -0
- data/vendor/frameworks/lift/liftkit/scaffolding.less +116 -0
- data/vendor/frameworks/lift/liftkit/tables.less +54 -0
- data/vendor/frameworks/lift/liftkit/type.less +272 -0
- data/vendor/frameworks/lift/liftkit.less +1 -0
- metadata +114 -0
@@ -0,0 +1,106 @@
|
|
1
|
+
/*
|
2
|
+
* Placeholder plugin for jQuery
|
3
|
+
* ---
|
4
|
+
* Copyright 2010, Daniel Stocks (http://webcloud.se)
|
5
|
+
* Released under the MIT, BSD, and GPL Licenses.
|
6
|
+
*/
|
7
|
+
(function($) {
|
8
|
+
function Placeholder(input) {
|
9
|
+
this.input = input;
|
10
|
+
if (input.attr('type') == 'password') {
|
11
|
+
this.handlePassword();
|
12
|
+
}
|
13
|
+
// Prevent placeholder values from submitting
|
14
|
+
$(input[0].form).submit(function() {
|
15
|
+
if (input.hasClass('placeholder') && input[0].value == input.attr('placeholder')) {
|
16
|
+
input[0].value = '';
|
17
|
+
}
|
18
|
+
});
|
19
|
+
}
|
20
|
+
Placeholder.prototype = {
|
21
|
+
show : function(loading) {
|
22
|
+
// FF and IE saves values when you refresh the page. If the user refreshes the page with
|
23
|
+
// the placeholders showing they will be the default values and the input fields won't be empty.
|
24
|
+
if (this.input[0].value === '' || (loading && this.valueIsPlaceholder())) {
|
25
|
+
if (this.isPassword) {
|
26
|
+
try {
|
27
|
+
this.input[0].setAttribute('type', 'text');
|
28
|
+
} catch (e) {
|
29
|
+
this.input.before(this.fakePassword.show()).hide();
|
30
|
+
}
|
31
|
+
}
|
32
|
+
this.input.addClass('placeholder');
|
33
|
+
this.input[0].value = this.input.attr('placeholder');
|
34
|
+
}
|
35
|
+
},
|
36
|
+
hide : function() {
|
37
|
+
if (this.valueIsPlaceholder() && this.input.hasClass('placeholder')) {
|
38
|
+
this.input.removeClass('placeholder');
|
39
|
+
this.input[0].value = '';
|
40
|
+
if (this.isPassword) {
|
41
|
+
try {
|
42
|
+
this.input[0].setAttribute('type', 'password');
|
43
|
+
} catch (e) { }
|
44
|
+
// Restore focus for Opera and IE
|
45
|
+
this.input.show();
|
46
|
+
this.input[0].focus();
|
47
|
+
}
|
48
|
+
}
|
49
|
+
},
|
50
|
+
valueIsPlaceholder : function() {
|
51
|
+
return this.input[0].value == this.input.attr('placeholder');
|
52
|
+
},
|
53
|
+
handlePassword: function() {
|
54
|
+
var input = this.input;
|
55
|
+
input.attr('realType', 'password');
|
56
|
+
this.isPassword = true;
|
57
|
+
// IE < 9 doesn't allow changing the type of password inputs
|
58
|
+
if ($.browser.msie && input[0].outerHTML) {
|
59
|
+
var fakeHTML = $(input[0].outerHTML.replace(/type=(['"])?password\1/gi, 'type=$1text$1'));
|
60
|
+
this.fakePassword = fakeHTML.val(input.attr('placeholder')).addClass('placeholder').focus(function() {
|
61
|
+
input.trigger('focus');
|
62
|
+
$(this).hide();
|
63
|
+
});
|
64
|
+
$(input[0].form).submit(function() {
|
65
|
+
fakeHTML.remove();
|
66
|
+
input.show()
|
67
|
+
});
|
68
|
+
}
|
69
|
+
}
|
70
|
+
};
|
71
|
+
var NATIVE_SUPPORT = !!("placeholder" in document.createElement( "input" ));
|
72
|
+
$.fn.placeholder = function() {
|
73
|
+
return NATIVE_SUPPORT ? this : this.each(function() {
|
74
|
+
var input = $(this);
|
75
|
+
var placeholder = new Placeholder(input);
|
76
|
+
placeholder.show(true);
|
77
|
+
input.focus(function() {
|
78
|
+
placeholder.hide();
|
79
|
+
});
|
80
|
+
input.blur(function() {
|
81
|
+
placeholder.show(false);
|
82
|
+
});
|
83
|
+
|
84
|
+
// On page refresh, IE doesn't re-populate user input
|
85
|
+
// until the window.onload event is fired.
|
86
|
+
if ($.browser.msie) {
|
87
|
+
$(window).load(function() {
|
88
|
+
if(input.val()) {
|
89
|
+
input.removeClass("placeholder");
|
90
|
+
}
|
91
|
+
placeholder.show(true);
|
92
|
+
});
|
93
|
+
// What's even worse, the text cursor disappears
|
94
|
+
// when tabbing between text inputs, here's a fix
|
95
|
+
input.focus(function() {
|
96
|
+
if(this.value == "") {
|
97
|
+
var range = this.createTextRange();
|
98
|
+
range.collapse(true);
|
99
|
+
range.moveStart('character', 0);
|
100
|
+
range.select();
|
101
|
+
}
|
102
|
+
});
|
103
|
+
}
|
104
|
+
});
|
105
|
+
}
|
106
|
+
})(jQuery);
|
@@ -0,0 +1,116 @@
|
|
1
|
+
/*!
|
2
|
+
* jQuery Stickybox plugin
|
3
|
+
* http://github.com/elidupuis
|
4
|
+
*
|
5
|
+
* Copyright 2010, Eli Dupuis
|
6
|
+
* Version: 0.4.1
|
7
|
+
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://creativecommons.org/licenses/GPL/2.0/) licenses.
|
8
|
+
* Requires: jQuery v1.4.4 or later
|
9
|
+
* Based heavily on Remy Sharp's snippet at http://jqueryfordesigners.com/fixed-floating-elements/
|
10
|
+
*/
|
11
|
+
|
12
|
+
(function($) {
|
13
|
+
|
14
|
+
var methods = {
|
15
|
+
init: function( options ) {
|
16
|
+
// iterate and reformat each matched element
|
17
|
+
return this.each(function() {
|
18
|
+
var $this = $(this),
|
19
|
+
opts = $.extend( {}, $.fn.stickybox.defaults, options ),
|
20
|
+
data = $this.data('stickybox');
|
21
|
+
|
22
|
+
// If the plugin hasn't been initialized yet
|
23
|
+
if ( ! data ) {
|
24
|
+
|
25
|
+
var top = $this.offset().top - parseFloat($this.css('marginTop').replace(/auto/, 0));
|
26
|
+
|
27
|
+
$(window).bind('scroll.stickybox resize.stickybox', function (event) {
|
28
|
+
var y = $(this).scrollTop(),
|
29
|
+
height = $(window).height(),
|
30
|
+
docHeight = $(document).height(),
|
31
|
+
context = opts.context.call(this, $this),
|
32
|
+
// topOffset = $this.data('stickybox').offsetTop,
|
33
|
+
bottomThreshold = context.offset().top + context.height() - $this.outerHeight(true) - opts.offset;
|
34
|
+
|
35
|
+
// if(window.console) window.console.log(context.height(), context.outerHeight(true));
|
36
|
+
|
37
|
+
if ( height > $this.outerHeight() ) {
|
38
|
+
if ( y >= (top - opts.offset) ) {
|
39
|
+
if (!$this.hasClass(opts.fixedClass)) {
|
40
|
+
$this.addClass( opts.fixedClass );
|
41
|
+
opts.captured.call();
|
42
|
+
};
|
43
|
+
|
44
|
+
// if ( !$this.data('stickybox').offsetTop ) {
|
45
|
+
// $this.data('stickybox').offsetTop = parseInt($this.css('top')) || 0;
|
46
|
+
// };
|
47
|
+
} else {
|
48
|
+
if ($this.hasClass(opts.fixedClass)) {
|
49
|
+
$this.removeClass( opts.fixedClass );
|
50
|
+
opts.released.call();
|
51
|
+
}
|
52
|
+
};
|
53
|
+
// check for bottom of context
|
54
|
+
if ( y > bottomThreshold ) {
|
55
|
+
if (!$this.hasClass(opts.bottomClass)) {
|
56
|
+
$this.addClass( opts.bottomClass );
|
57
|
+
opts.bottomCaptured.call();
|
58
|
+
}
|
59
|
+
}else{
|
60
|
+
if ($this.hasClass(opts.bottomClass)) {
|
61
|
+
$this.removeClass( opts.bottomClass );
|
62
|
+
opts.bottomReleased.call();
|
63
|
+
}
|
64
|
+
};
|
65
|
+
|
66
|
+
// check height of context vs height of stickybox:
|
67
|
+
if ( $this.outerHeight() > context.outerHeight() ) {
|
68
|
+
context.css('min-height', $this.outerHeight() );
|
69
|
+
};
|
70
|
+
|
71
|
+
};
|
72
|
+
});
|
73
|
+
|
74
|
+
// attach
|
75
|
+
$(this).data('stickybox', {
|
76
|
+
target : $this,
|
77
|
+
// offsetTop: 0,
|
78
|
+
opts: opts
|
79
|
+
});
|
80
|
+
|
81
|
+
};
|
82
|
+
});
|
83
|
+
},
|
84
|
+
destroy: function() {
|
85
|
+
// loop through matched elements and un
|
86
|
+
return this.each(function() {
|
87
|
+
$(this).removeClass( $(this).data('stickybox').opts.fixedClass + ' ' + $(this).data('stickybox').opts.bottomClass );
|
88
|
+
$(window).unbind('.stickybox');
|
89
|
+
});
|
90
|
+
}
|
91
|
+
};
|
92
|
+
|
93
|
+
// main plugin declaration:
|
94
|
+
$.fn.stickybox = function( method ) {
|
95
|
+
if ( methods[method] ) {
|
96
|
+
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
|
97
|
+
} else if ( typeof method === 'object' || ! method ) {
|
98
|
+
return methods.init.apply( this, arguments );
|
99
|
+
} else {
|
100
|
+
$.error( 'Method ' + method + ' does not exist on jQuery.stickybox' );
|
101
|
+
};
|
102
|
+
};
|
103
|
+
|
104
|
+
// defaults
|
105
|
+
$.fn.stickybox.defaults = {
|
106
|
+
fixedClass: 'fixed', // class applied when window has been scolled passed threshold
|
107
|
+
bottomClass: 'bottom', // class applied when stickybox element reaches bottom of context container
|
108
|
+
context: function(){ return $('body'); }, // unique container (should have position:relative;)
|
109
|
+
offset: 0, // if your .fixed style has a top value other than 0, you'll need to set the same value here.
|
110
|
+
captured: function(){}, // callback function for when fixedClass is applied
|
111
|
+
released: function(){}, // callback function for when fixedClass is removed
|
112
|
+
bottomCaptured: function(){}, // callback function for when bottomClass is applied
|
113
|
+
bottomReleased: function(){} // callback function for when bottomClass is removed
|
114
|
+
};
|
115
|
+
|
116
|
+
})(jQuery);
|
@@ -0,0 +1,119 @@
|
|
1
|
+
// requires jQuery 1.6.x we're using .closest() (http://api.jquery.com/closest/)
|
2
|
+
|
3
|
+
!function( $ ){
|
4
|
+
|
5
|
+
function tab(element, selector){
|
6
|
+
|
7
|
+
// prepare variables
|
8
|
+
var $tabs = $(selector)
|
9
|
+
, $historyEndabledTabs = $tabs.filter('[data-history=true]');
|
10
|
+
|
11
|
+
|
12
|
+
// tab functionality
|
13
|
+
// expects an anchor tag that has an href linking it to an element with that ID.
|
14
|
+
function activate ( elm ) {
|
15
|
+
|
16
|
+
if(window.console) window.console.log('activate', elm);
|
17
|
+
|
18
|
+
$.each(elm, function(){
|
19
|
+
|
20
|
+
var $this = $(this)
|
21
|
+
, $parent = $this.closest($tabs)
|
22
|
+
, href = $this.attr('href')
|
23
|
+
, context = $parent.data('tabs') || $parent.data('pills')
|
24
|
+
, $tab = $(href, context);
|
25
|
+
|
26
|
+
// remove active from siblings
|
27
|
+
$parent.children('li').removeClass('active');
|
28
|
+
|
29
|
+
// add active to clicked tab
|
30
|
+
$this.parent().addClass('active');
|
31
|
+
|
32
|
+
// show appropriate tab content, hide the rest.
|
33
|
+
$.fn.tabs.transition($this, $tab);
|
34
|
+
// $tab.show().siblings().hide();
|
35
|
+
|
36
|
+
});
|
37
|
+
|
38
|
+
}
|
39
|
+
|
40
|
+
|
41
|
+
// capture clicks on tab triggers
|
42
|
+
// use .delegate() in the future?
|
43
|
+
$tabs.find('> li > a').bind('click', function(){
|
44
|
+
$this = $(this);
|
45
|
+
|
46
|
+
if ($this.closest($tabs).filter('[data-history=true]').length) {
|
47
|
+
// return true and let the hashchange functionality handle the tabbing and history...
|
48
|
+
return true;
|
49
|
+
}else{
|
50
|
+
// trigger tabs functionality
|
51
|
+
activate($this);
|
52
|
+
return false;
|
53
|
+
};
|
54
|
+
});
|
55
|
+
|
56
|
+
|
57
|
+
// Bind an event to window.onhashchange that, when the hash changes, gets the
|
58
|
+
// hash and triggers the standard tab functionality.
|
59
|
+
$(window).hashchange( function(){
|
60
|
+
// find the appropriate anchor based on the hash. defaults to first list item.
|
61
|
+
var hash = location.hash
|
62
|
+
, target = $('[href='+hash+']', $historyEndabledTabs)
|
63
|
+
, $trigger = (hash != '' && target.length) ? target : $('> li:first > a', $historyEndabledTabs);
|
64
|
+
|
65
|
+
// trigger the tab functionality
|
66
|
+
activate($trigger);
|
67
|
+
|
68
|
+
});
|
69
|
+
|
70
|
+
// Since the event is only triggered when the hash changes, we need to trigger
|
71
|
+
// the event now, to handle the hash the page may have loaded with.
|
72
|
+
// but only if there are history enabled tabs!
|
73
|
+
if ($historyEndabledTabs.length) {
|
74
|
+
$(window).hashchange();
|
75
|
+
};
|
76
|
+
|
77
|
+
|
78
|
+
// load up the first tab in all non-history tab units
|
79
|
+
activate($('> li:first > a', $tabs.not($historyEndabledTabs)));
|
80
|
+
|
81
|
+
if (location.hash != '' && $('[href=' + location.hash + ']', $historyEndabledTabs).length != 0) {
|
82
|
+
// activate any history-enabled tabs that do not contain the current hash
|
83
|
+
activate($('> li:first > a', $historyEndabledTabs.not(':has([href=' + location.hash + '])') ));
|
84
|
+
};
|
85
|
+
|
86
|
+
|
87
|
+
}
|
88
|
+
|
89
|
+
|
90
|
+
/* TABS/PILLS PLUGIN DEFINITION
|
91
|
+
* ============================ */
|
92
|
+
|
93
|
+
|
94
|
+
$.fn.tabs = function ( selector ) {
|
95
|
+
return this.each(function () {
|
96
|
+
// $(this).delegate(selector || 'ul[data-tabs], ul[data-pills]', 'click', tab);
|
97
|
+
tab(this, selector);
|
98
|
+
})
|
99
|
+
};
|
100
|
+
|
101
|
+
// the transition between tab content
|
102
|
+
// can be overridden by using a function like the one commented here
|
103
|
+
// $.fn.tabs.transition = function(trigger, content) {
|
104
|
+
// if(window.console) window.console.log('custom transition', elm, trigger);
|
105
|
+
// content.siblings().hide();
|
106
|
+
// content.fadeIn(1000);
|
107
|
+
// }
|
108
|
+
$.fn.tabs.transition = function(trigger, content){
|
109
|
+
content.show().siblings().hide();
|
110
|
+
};
|
111
|
+
|
112
|
+
|
113
|
+
$(document).ready(function () {
|
114
|
+
$('body').tabs('ul[data-tabs], ul[data-pills]');
|
115
|
+
});
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
}( window.jQuery );
|
@@ -0,0 +1,59 @@
|
|
1
|
+
/* Author: */
|
2
|
+
|
3
|
+
SITE = {
|
4
|
+
common: {
|
5
|
+
init: function(){
|
6
|
+
if(window.console) window.console.log('common.init()');
|
7
|
+
|
8
|
+
// define default easing function. jquery.easing required (http://gsgd.co.uk/sandbox/jquery/easing/)
|
9
|
+
// $.easing.def = "easeOutCirc";
|
10
|
+
}
|
11
|
+
},
|
12
|
+
bodyClass: {
|
13
|
+
init: function(){
|
14
|
+
if(window.console) window.console.log('bodyClass.init()');
|
15
|
+
},
|
16
|
+
bodyID1: function(){
|
17
|
+
if(window.console) window.console.log('bodyClass.bodyID1()');
|
18
|
+
},
|
19
|
+
bodyID2: function(){
|
20
|
+
if(window.console) window.console.log('bodyClass.bodyID2()');
|
21
|
+
}
|
22
|
+
}
|
23
|
+
};
|
24
|
+
|
25
|
+
// http://paulirish.com/2009/markup-based-unobtrusive-comprehensive-dom-ready-execution/
|
26
|
+
UTIL = {
|
27
|
+
|
28
|
+
fire : function(func,funcname, args){
|
29
|
+
|
30
|
+
var namespace = SITE; // indicate your obj literal namespace here
|
31
|
+
|
32
|
+
funcname = (funcname === undefined) ? 'init' : funcname;
|
33
|
+
if (func !== '' && namespace[func] && typeof namespace[func][funcname] == 'function'){
|
34
|
+
namespace[func][funcname](args);
|
35
|
+
}
|
36
|
+
|
37
|
+
},
|
38
|
+
|
39
|
+
loadEvents : function(){
|
40
|
+
|
41
|
+
var bodyId = document.body.id;
|
42
|
+
|
43
|
+
// hit up common first.
|
44
|
+
UTIL.fire('common');
|
45
|
+
|
46
|
+
// do all the classes too.
|
47
|
+
$.each(document.body.className.split(/\s+/),function(i,classnm){
|
48
|
+
UTIL.fire(classnm);
|
49
|
+
UTIL.fire(classnm,bodyId);
|
50
|
+
});
|
51
|
+
|
52
|
+
UTIL.fire('common','finalize');
|
53
|
+
|
54
|
+
}
|
55
|
+
|
56
|
+
};
|
57
|
+
|
58
|
+
// kick it all off here
|
59
|
+
$(document).ready(UTIL.loadEvents);
|
@@ -0,0 +1,34 @@
|
|
1
|
+
/**********/
|
2
|
+
/* =underscore */
|
3
|
+
/**********/
|
4
|
+
|
5
|
+
// Underscore.js 1.2.0
|
6
|
+
// (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.
|
7
|
+
// Underscore is freely distributable under the MIT license.
|
8
|
+
// Portions of Underscore are inspired or borrowed from Prototype,
|
9
|
+
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
10
|
+
// For all details and documentation:
|
11
|
+
// http://documentcloud.github.com/underscore
|
12
|
+
(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null)return a===c;var e=typeof a;if(e!=typeof c)return false;if(!a!=!c)return false;if(b.isNaN(a))return b.isNaN(c);var f=b.isString(a),g=b.isString(c);if(f||g)return f&&g&&String(a)==String(c);f=b.isNumber(a);g=b.isNumber(c);if(f||g)return f&&g&&+a==+c;f=b.isBoolean(a);g=b.isBoolean(c);if(f||g)return f&&g&&+a==+c;f=b.isDate(a);g=b.isDate(c);if(f||g)return f&&g&&a.getTime()==c.getTime();f=b.isRegExp(a);g=b.isRegExp(c);if(f||g)return f&&
|
13
|
+
g&&a.source==c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase;if(e!="object")return false;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(b.isFunction(a.isEqual))return a.isEqual(c);for(e=d.length;e--;)if(d[e]==a)return true;d.push(a);e=0;f=true;if(a.length===+a.length||c.length===+c.length){if(e=a.length,f=e==c.length)for(;e--;)if(!(f=e in a==e in c&&q(a[e],c[e],d)))break}else{for(var h in a)if(l.call(a,h)&&(e++,!(f=l.call(c,h)&&q(a[h],c[h],d))))break;if(f){for(h in c)if(l.call(c,
|
14
|
+
h)&&!e--)break;f=!e}}d.pop();return f}var r=this,F=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,G=k.unshift,u=o.toString,l=o.hasOwnProperty,v=k.forEach,w=k.map,x=k.reduce,y=k.reduceRight,z=k.filter,A=k.every,B=k.some,p=k.indexOf,C=k.lastIndexOf,o=Array.isArray,H=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};typeof module!=="undefined"&&module.exports?(module.exports=b,b._=b):r._=b;b.VERSION="1.2.0";var j=b.each=b.forEach=function(a,c,b){if(a!=null)if(v&&a.forEach===
|
15
|
+
v)a.forEach(c,b);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(b,a[e],e,a)===n)break}else for(e in a)if(l.call(a,e)&&c.call(b,a[e],e,a)===n)break};b.map=function(a,c,b){var e=[];if(a==null)return e;if(w&&a.map===w)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=d!==void 0;a==null&&(a=[]);if(x&&a.reduce===x)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,
|
16
|
+
d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){a==null&&(a=[]);if(y&&a.reduceRight===y)return e&&(c=b.bind(c,e)),d!==void 0?a.reduceRight(c,d):a.reduceRight(c);a=(b.isArray(a)?a.slice():b.toArray(a)).reverse();return b.reduce(a,c,d,e)};b.find=b.detect=function(a,c,b){var e;D(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;
|
17
|
+
if(z&&a.filter===z)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(A&&a.every===A)return a.every(c,b);j(a,function(a,g,h){if(!(e=e&&c.call(b,a,g,h)))return n});return e};var D=b.some=b.any=function(a,c,d){var c=c||b.identity,e=false;if(a==null)return e;if(B&&a.some===B)return a.some(c,
|
18
|
+
d);j(a,function(a,b,h){if(e|=c.call(d,a,b,h))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;if(p&&a.indexOf===p)return a.indexOf(c)!=-1;D(a,function(a){if(b=a===c)return true});return b};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(c.call?c||a:a[c]).apply(a,d)})};b.pluck=function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;
|
19
|
+
var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});return e.value};b.shuffle=function(a){var c=[],b;j(a,function(a,f){f==0?c[0]=a:(b=Math.floor(Math.random()*(f+1)),c[f]=c[b],c[b]=a)});return c};b.sortBy=function(a,
|
20
|
+
c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,b){var d={};j(a,function(a,f){var g=b(a,f);(d[g]||(d[g]=[])).push(a)});return d};b.sortedIndex=function(a,c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):
|
21
|
+
b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,a.length-b):a[a.length-1]};b.rest=b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a){return b.reduce(a,function(a,d){if(b.isArray(d))return a.concat(b.flatten(d));
|
22
|
+
a[a.length]=d;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);return e};b.union=function(){return b.uniq(b.flatten(arguments))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};
|
23
|
+
b.difference=function(a,c){return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(C&&a.lastIndexOf===C)return a.lastIndexOf(b);
|
24
|
+
for(var d=a.length;d--;)if(a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};b.bind=function(a,b){if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));var d=i.call(arguments,2);return function(){return a.apply(b,d.concat(i.call(arguments)))}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});
|
25
|
+
return a};b.memoize=function(a,c){var d={};c||(c=b.identity);return function(){var b=c.apply(this,arguments);return l.call(d,b)?d[b]:d[b]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};var E=function(a,b,d){var e;return function(){var f=this,g=arguments,h=function(){e=null;a.apply(f,g)};d&&clearTimeout(e);if(d||!e)e=setTimeout(h,b)}};b.throttle=
|
26
|
+
function(a,b){return E(a,b,false)};b.debounce=function(a,b){return E(a,b,true)};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments));return b.apply(this,d)}};b.compose=function(){var a=i.call(arguments);return function(){for(var b=i.call(arguments),d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};b.after=function(a,b){return function(){if(--a<1)return b.apply(this,
|
27
|
+
arguments)}};b.keys=H||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[],d;for(d in a)l.call(a,d)&&(b[b.length]=d);return b};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)b[d]!==void 0&&(a[d]=b[d])});return a};b.defaults=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]==null&&(a[d]=
|
28
|
+
b[d])});return a};b.clone=function(a){return b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(l.call(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return u.call(a)==="[object Array]"};b.isObject=function(a){return a===Object(a)};b.isArguments=function(a){return!(!a||!l.call(a,"callee"))};
|
29
|
+
b.isFunction=function(a){return!(!a||!a.constructor||!a.call||!a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return!!(a===0||a&&a.toExponential&&a.toFixed)};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||u.call(a)=="[object Boolean]"};b.isDate=function(a){return!(!a||!a.getTimezoneOffset||!a.setUTCFullYear)};b.isRegExp=function(a){return!(!a||!a.test||!a.exec||!(a.ignoreCase||a.ignoreCase===false))};b.isNull=
|
30
|
+
function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.noConflict=function(){r._=F;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&(?!\w+;|#\d+;|#x[\da-f]+;)/gi,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a),function(c){I(c,b[c]=a[c])})};var J=0;b.uniqueId=function(a){var b=
|
31
|
+
J++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape,function(a,b){return"',_.escape("+b.replace(/\\'/g,"'")+"),'"}).replace(d.interpolate,function(a,b){return"',"+b.replace(/\\'/g,"'")+",'"}).replace(d.evaluate||null,function(a,
|
32
|
+
b){return"');"+b.replace(/\\'/g,"'").replace(/[\r\n\t]/g," ")+"__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",d=new Function("obj",d);return c?d(c):d};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var t=function(a,c){return c?b(a).chain():a},I=function(a,c){m.prototype[a]=function(){var a=i.call(arguments);G.call(a,this._wrapped);return t(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),
|
33
|
+
function(a){var b=k[a];m.prototype[a]=function(){b.apply(this._wrapped,arguments);return t(this._wrapped,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return t(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=true;return this};m.prototype.value=function(){return this._wrapped}})();
|
34
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
@import "lift/liftkit/liftkit";
|
@@ -0,0 +1,104 @@
|
|
1
|
+
.close {
|
2
|
+
margin: -3px -@basespace/2 0 0;
|
3
|
+
float: right;
|
4
|
+
color: @black;
|
5
|
+
font-size: 20px;
|
6
|
+
font-weight: bold;
|
7
|
+
line-height: @baseline * .75;
|
8
|
+
.opacity(20);
|
9
|
+
&:hover {
|
10
|
+
color: @black;
|
11
|
+
text-decoration: none;
|
12
|
+
.opacity(40);
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
.alert {
|
17
|
+
margin: 0 0 @basespace;
|
18
|
+
padding: @basespace/2 @basespace 0;
|
19
|
+
.border-radius(3px);
|
20
|
+
.transition(.2s);
|
21
|
+
border: 1px solid #888;
|
22
|
+
background: #aaa;
|
23
|
+
|
24
|
+
p {
|
25
|
+
font-size: @basesize - 2;
|
26
|
+
margin-bottom: @basespace/2;
|
27
|
+
color: @white;
|
28
|
+
}
|
29
|
+
|
30
|
+
&.primary {
|
31
|
+
border-color: darken(@primary, 10%);
|
32
|
+
background: @primary;
|
33
|
+
}
|
34
|
+
|
35
|
+
&.secondary {
|
36
|
+
border-color: darken(@secondary, 10%);
|
37
|
+
background: @secondary;
|
38
|
+
}
|
39
|
+
|
40
|
+
&.success {
|
41
|
+
border-color: darken(@success, 10%);
|
42
|
+
background: @success;
|
43
|
+
}
|
44
|
+
|
45
|
+
&.warning {
|
46
|
+
border-color: darken(@warning, 10%);
|
47
|
+
background: @warning;
|
48
|
+
}
|
49
|
+
|
50
|
+
&.danger {
|
51
|
+
border-color: darken(@danger, 10%);
|
52
|
+
background: @danger;
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
.message {
|
57
|
+
margin: 0 0 @basespace;
|
58
|
+
padding: @basespace/2 @basespace 0;
|
59
|
+
.border-radius(3px);
|
60
|
+
.transition(.2s);
|
61
|
+
|
62
|
+
p {
|
63
|
+
font-size: @basesize - 2;
|
64
|
+
margin-bottom: @basespace/2;
|
65
|
+
}
|
66
|
+
|
67
|
+
ul {
|
68
|
+
margin-bottom: @basespace/2;
|
69
|
+
li {
|
70
|
+
font-size: @basesize - 2;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
border: 1px solid @grayLight;
|
75
|
+
background: #eee;
|
76
|
+
|
77
|
+
p, ul, ol, dl, li { color: @white; }
|
78
|
+
strong { color: @white; }
|
79
|
+
|
80
|
+
&.primary {
|
81
|
+
border-color: darken(@primary, 10%);
|
82
|
+
background: @primary;
|
83
|
+
}
|
84
|
+
|
85
|
+
&.secondary {
|
86
|
+
border-color: darken(@secondary, 10%);
|
87
|
+
background: @secondary;
|
88
|
+
}
|
89
|
+
|
90
|
+
&.success {
|
91
|
+
border-color: darken(@success, 10%);
|
92
|
+
background: @success;
|
93
|
+
}
|
94
|
+
|
95
|
+
&.warning {
|
96
|
+
border-color: darken(@warning, 10%);
|
97
|
+
background: @warning;
|
98
|
+
}
|
99
|
+
|
100
|
+
&.danger {
|
101
|
+
border-color: darken(@danger, 10%);
|
102
|
+
background: @danger;
|
103
|
+
}
|
104
|
+
}
|