diff --git a/.DS_Store b/.DS_Store index d44b41a70f..4372a5b717 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Makefile b/Makefile index 34e0d7b1da..74ab90d023 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,29 @@ -# NOTE: you must have the less npm package installed globally to build! -# To install run: npm install less -g -# ProTip: watchr -e "watch('lib/.*\.less') { system 'make' }" +DATE=$(shell DATE) +BOOTSTRAP = ./bootstrap-1.0.0.css +BOOTSTRAP_MIN = ./bootstrap-1.0.0.min.css +BOOTSTRAP_LESS = ./lib/bootstrap.less +LESS_COMPESSOR ?= `which lessc` +WATCHR ?= `which watchr` build: - @lessc ./lib/bootstrap.less > ./bootstrap-1.0.0.css - @lessc ./lib/bootstrap.less > ./bootstrap-1.0.0.min.css --compress - @echo "Bootstrap successfully built! - `date`" + @@if test ! -z ${LESS_COMPESSOR}; then \ + sed 's/@DATE/'"${DATE}"'/' ${BOOTSTRAP_LESS} >${BOOTSTRAP_LESS}.tmp; \ + lessc ${BOOTSTRAP_LESS}.tmp > ${BOOTSTRAP}; \ + lessc ${BOOTSTRAP_LESS}.tmp > ${BOOTSTRAP_MIN} --compress; \ + rm -f ${BOOTSTRAP_LESS}.tmp; \ + echo "Bootstrap successfully built! - `date`"; \ + else \ + echo "You must have the LESS compiler installed in order to build Bootstrap."; \ + echo "You can install it by running: npm install less -g"; \ + fi -.PHONY: build \ No newline at end of file +watch: + @@if test ! -z ${LESS_COMPESSOR}; then \ + echo "Watching less files..."; \ + watchr -e "watch('lib/.*\.less') { system 'make' }"; \ + else \ + echo "You must have the WATCHR installed in order to build Bootstrap."; \ + echo "You can install it by running: gem install watchr"; \ + fi + +.PHONY: build watch \ No newline at end of file diff --git a/assets/img/dropdown-arrow.gif b/assets/img/dropdown-arrow.gif deleted file mode 100644 index 2da9c1d54e..0000000000 Binary files a/assets/img/dropdown-arrow.gif and /dev/null differ diff --git a/assets/img/grid-20px.png b/assets/img/grid-20px.png deleted file mode 100644 index 91b8bf38d5..0000000000 Binary files a/assets/img/grid-20px.png and /dev/null differ diff --git a/assets/img/tablesorter-indicators.png b/assets/img/tablesorter-indicators.png deleted file mode 100644 index af3c40522f..0000000000 Binary files a/assets/img/tablesorter-indicators.png and /dev/null differ diff --git a/bootstrap-1.0.0.css b/bootstrap-1.0.0.css index 53e0b6a649..49cb301dc8 100644 --- a/bootstrap-1.0.0.css +++ b/bootstrap-1.0.0.css @@ -6,7 +6,7 @@ * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. - * Date: {{ date }} + * Date: Sat Jul 2 11:50:18 PDT 2011 */ /* * Reset.less @@ -1013,31 +1013,61 @@ table.zebra-striped tbody tr:hover td { } table.zebra-striped th.header { cursor: pointer; - padding-right: 20px; +} +table.zebra-striped th.header:after { + width: 0px; + height: 0px; + display: inline-block; + float: right; + margin-top: 7px; + content: "↓"; + text-indent: -99999px; + vertical-align: top; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-bottom: 4px solid #000; + visibility: hidden; + -webkit-box-shadow: 0 1px 0 #ffffff; + -moz-box-shadow: 0 1px 0 #ffffff; + box-shadow: 0 1px 0 #ffffff; + filter: alpha(opacity=30); + -khtml-opacity: 0.3; + -moz-opacity: 0.3; + opacity: 0.3; } table.zebra-striped th.headerSortUp, table.zebra-striped th.headerSortDown { - background-image: url(assets/img/tablesorter-indicators.png); - background-position: right -23px; - background-repeat: no-repeat; background-color: rgba(141, 192, 219, 0.25); text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); -webkit-border-radius: 3px 3px 0 0; -moz-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0; } -table.zebra-striped th.header:hover { - background-image: url(assets/img/tablesorter-indicators.png); - background-position: right 15px; - background-repeat: no-repeat; +table.zebra-striped th.header:hover:after { + visibility: visible; } table.zebra-striped th.actions:hover { background-image: none; } -table.zebra-striped th.headerSortDown, table.zebra-striped th.headerSortDown:hover { - background-position: right -25px; +table.zebra-striped th.headerSortDown:after, table.zebra-striped th.headerSortDown:hover:after { + visibility: visible; + filter: alpha(opacity=60); + -khtml-opacity: 0.6; + -moz-opacity: 0.6; + opacity: 0.6; } -table.zebra-striped th.headerSortUp, table.zebra-striped th.headerSortUp:hover { - background-position: right -65px; +table.zebra-striped th.headerSortUp:after { + border-bottom: none; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #000; + visibility: visible; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + filter: alpha(opacity=60); + -khtml-opacity: 0.6; + -moz-opacity: 0.6; + opacity: 0.6; } table.zebra-striped th.blue { color: #049cdb; @@ -1134,8 +1164,11 @@ div.topbar a.logo img { div.topbar form { float: left; margin: 5px 0 0 0; - opacity: 1; position: relative; + filter: alpha(opacity=100); + -khtml-opacity: 1; + -moz-opacity: 1; + opacity: 1; } div.topbar form input { background-color: #bfbfbf; @@ -1222,16 +1255,21 @@ div.topbar ul li.menu { position: relative; } div.topbar ul li.menu a.menu:after { - width: 7px; - height: 7px; + width: 0px; + height: 0px; display: inline-block; - background: transparent url(assets/img/dropdown-arrow.gif) no-repeat top center; content: "↓"; text-indent: -99999px; vertical-align: top; margin-top: 8px; margin-left: 4px; - opacity: .5; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #fff; + filter: alpha(opacity=50); + -khtml-opacity: 0.5; + -moz-opacity: 0.5; + opacity: 0.5; } div.topbar ul li.menu.open a.menu, div.topbar ul li.menu.open a:hover { background-color: #00b4eb; @@ -1365,18 +1403,24 @@ div.alert-message.info { div.alert-message a.close { float: right; margin-top: -2px; - opacity: .5; color: #fff; font-size: 20px; font-weight: bold; text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); + filter: alpha(opacity=50); + -khtml-opacity: 0.5; + -moz-opacity: 0.5; + opacity: 0.5; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } div.alert-message a.close:hover { - opacity: 1; text-decoration: none; + filter: alpha(opacity=50); + -khtml-opacity: 0.5; + -moz-opacity: 0.5; + opacity: 0.5; } div.block-message { margin-bottom: 18px; diff --git a/bootstrap-1.0.0.min.css b/bootstrap-1.0.0.min.css index 11fe0bcc8f..d6c18d2292 100644 --- a/bootstrap-1.0.0.min.css +++ b/bootstrap-1.0.0.min.css @@ -131,12 +131,12 @@ table{width:100%;margin-bottom:18px;padding:0;text-align:left;border-collapse:se table th{padding-top:9px;font-weight:bold;border-bottom-width:2px;} table.zebra-striped tbody tr:nth-child(odd) td{background-color:#f9f9f9;} table.zebra-striped tbody tr:hover td{background-color:#f5f5f5;} -table.zebra-striped th.header{cursor:pointer;padding-right:20px;} -table.zebra-striped th.headerSortUp,table.zebra-striped th.headerSortDown{background-image:url(assets/img/tablesorter-indicators.png);background-position:right -23px;background-repeat:no-repeat;background-color:rgba(141, 192, 219, 0.25);text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;} -table.zebra-striped th.header:hover{background-image:url(assets/img/tablesorter-indicators.png);background-position:right 15px;background-repeat:no-repeat;} +table.zebra-striped th.header{cursor:pointer;}table.zebra-striped th.header:after{width:0px;height:0px;display:inline-block;float:right;margin-top:7px;content:"↓";text-indent:-99999px;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid #000;visibility:hidden;-webkit-box-shadow:0 1px 0 #ffffff;-moz-box-shadow:0 1px 0 #ffffff;box-shadow:0 1px 0 #ffffff;filter:alpha(opacity=30);-khtml-opacity:0.3;-moz-opacity:0.3;opacity:0.3;} +table.zebra-striped th.headerSortUp,table.zebra-striped th.headerSortDown{background-color:rgba(141, 192, 219, 0.25);text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;} +table.zebra-striped th.header:hover:after{visibility:visible;} table.zebra-striped th.actions:hover{background-image:none;} -table.zebra-striped th.headerSortDown,table.zebra-striped th.headerSortDown:hover{background-position:right -25px;} -table.zebra-striped th.headerSortUp,table.zebra-striped th.headerSortUp:hover{background-position:right -65px;} +table.zebra-striped th.headerSortDown:after,table.zebra-striped th.headerSortDown:hover:after{visibility:visible;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;} +table.zebra-striped th.headerSortUp:after{border-bottom:none;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;visibility:visible;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;} table.zebra-striped th.blue{color:#049cdb;border-bottom-color:#049cdb;} table.zebra-striped th.headerSortUp.blue,table.zebra-striped th.headerSortDown.blue{background-color:#ade6fe;} table.zebra-striped th.green{color:#46a546;border-bottom-color:#46a546;} @@ -152,7 +152,7 @@ table.zebra-striped th.headerSortUp.purple,table.zebra-striped th.headerSortDown div.topbar{background-color:#222222;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222));background-image:-moz-linear-gradient(#333333, #222222);background-image:-ms-linear-gradient(#333333, #222222);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222));background-image:-webkit-linear-gradient(#333333, #222222);background-image:-o-linear-gradient(#333333, #222222);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0)";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);background-image:linear-gradient(#333333, #222222);height:40px;position:fixed;top:0;left:0;right:0;z-index:1000;overflow:visible;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);}div.topbar a{color:#bfbfbf;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);} div.topbar ul li a:hover,div.topbar ul li.active a,div.topbar a.logo:hover{background-color:#333;background-color:rgba(255, 255, 255, 0.15);color:#ffffff;text-decoration:none;} div.topbar a.logo{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;color:#ffffff;font-size:20px;font-weight:200;line-height:1;}div.topbar a.logo img{float:left;margin-right:6px;} -div.topbar form{float:left;margin:5px 0 0 0;opacity:1;position:relative;}div.topbar form input{background-color:#bfbfbf;background-color:rgba(255, 255, 255, 0.3);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:normal;font-weight:13px;line-height:1;width:220px;padding:4px 9px;color:#fff;color:rgba(255, 255, 255, 0.75);border:1px solid #111;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-webkit-transition:none;-moz-transition:none;transition:none;}div.topbar form input:-moz-placeholder{color:#e6e6e6;} +div.topbar form{float:left;margin:5px 0 0 0;position:relative;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;}div.topbar form input{background-color:#bfbfbf;background-color:rgba(255, 255, 255, 0.3);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:normal;font-weight:13px;line-height:1;width:220px;padding:4px 9px;color:#fff;color:rgba(255, 255, 255, 0.75);border:1px solid #111;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-webkit-transition:none;-moz-transition:none;transition:none;}div.topbar form input:-moz-placeholder{color:#e6e6e6;} div.topbar form input::-webkit-input-placeholder{color:#e6e6e6;} div.topbar form input:hover{background-color:#444;background-color:rgba(255, 255, 255, 0.5);color:#fff;} div.topbar form input:focus,div.topbar form input.focused{outline:none;background-color:#fff;color:#404040;text-shadow:0 1px 0 #fff;border:0;padding:5px 10px;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);} @@ -161,7 +161,7 @@ div.topbar ul li{display:block;float:left;font-size:13px;}div.topbar ul li a{dis div.topbar ul li.active a{background-color:#222;background-color:rgba(0, 0, 0, 0.5);} div.topbar ul.primary-nav li ul{left:0;} div.topbar ul.secondary-nav li ul{right:0;} -div.topbar ul li.menu{position:relative;}div.topbar ul li.menu a.menu:after{width:7px;height:7px;display:inline-block;background:transparent url(assets/img/dropdown-arrow.gif) no-repeat top center;content:"↓";text-indent:-99999px;vertical-align:top;margin-top:8px;margin-left:4px;opacity:.5;} +div.topbar ul li.menu{position:relative;}div.topbar ul li.menu a.menu:after{width:0px;height:0px;display:inline-block;content:"↓";text-indent:-99999px;vertical-align:top;margin-top:8px;margin-left:4px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #fff;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} div.topbar ul li.menu.open a.menu,div.topbar ul li.menu.open a:hover{background-color:#00b4eb;background-color:rgba(255, 255, 255, 0.1);color:#fff;} div.topbar ul li.menu.open ul{display:block;}div.topbar ul li.menu.open ul li a{background-color:transparent;font-weight:normal;}div.topbar ul li.menu.open ul li a:hover{background-color:rgba(255, 255, 255, 0.1);color:#fff;} div.topbar ul li.menu.open ul li.active a{background-color:rgba(255, 255, 255, 0.1);font-weight:bold;} @@ -174,7 +174,7 @@ div.alert-message.error{background-color:#e06359;} div.alert-message.warning{background-color:#ffd75a;} div.alert-message.success{background-color:#74c474;} div.alert-message.info{background-color:#30c0fb;} -div.alert-message a.close{float:right;margin-top:-2px;opacity:.5;color:#fff;font-size:20px;font-weight:bold;text-shadow:0 1px 0 rgba(0, 0, 0, 0.5);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}div.alert-message a.close:hover{opacity:1;text-decoration:none;} +div.alert-message a.close{float:right;margin-top:-2px;color:#fff;font-size:20px;font-weight:bold;text-shadow:0 1px 0 rgba(0, 0, 0, 0.5);filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}div.alert-message a.close:hover{text-decoration:none;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} div.block-message{margin-bottom:18px;padding:14px;color:#404040;color:rgba(0, 0, 0, 0.8);text-shadow:0 1px 0 rgba(255, 255, 255, 0.25);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}div.block-message p{color:#404040;color:rgba(0, 0, 0, 0.8);margin-right:30px;margin-bottom:0;} div.block-message ul{margin-bottom:0;} div.block-message strong{display:block;} diff --git a/lib/bootstrap.less b/lib/bootstrap.less index 834d950803..ead0c8f832 100644 --- a/lib/bootstrap.less +++ b/lib/bootstrap.less @@ -6,7 +6,7 @@ * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. - * Date: {{ date }} + * Date: @DATE */ // CSS Reset diff --git a/lib/patterns.less b/lib/patterns.less index b264cb3c74..db30802283 100644 --- a/lib/patterns.less +++ b/lib/patterns.less @@ -50,8 +50,8 @@ div.topbar { form { float: left; margin: 5px 0 0 0; - opacity: 1; position: relative; + .opacity(100); input { background-color: @grayLight; background-color: rgba(255,255,255,.3); @@ -131,16 +131,18 @@ div.topbar { position: relative; a.menu { &:after { - width: 7px; - height: 7px; + width: 0px; + height: 0px; display: inline-block; - background: transparent url(assets/img/dropdown-arrow.gif) no-repeat top center; content: "↓"; text-indent: -99999px; vertical-align: top; margin-top: 8px; margin-left: 4px; - opacity: .5; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #fff; + .opacity(50); } } &.open { @@ -276,15 +278,15 @@ div.alert-message { a.close { float: right; margin-top: -2px; - opacity: .5; color: #fff; font-size: 20px; font-weight: bold; text-shadow: 0 1px 0 rgba(0,0,0,.5); + .opacity(50); .border-radius(3px); &:hover { - opacity: 1; text-decoration: none; + .opacity(50); } } } diff --git a/lib/tables.less b/lib/tables.less index 5cde1b5cee..7c315ff35e 100644 --- a/lib/tables.less +++ b/lib/tables.less @@ -44,32 +44,54 @@ table.zebra-striped { // Tablesorting styles w/ jQuery plugin th.header { // For tablesorter tables, make THs have a pointer on hover cursor: pointer; - padding-right: 20px; + &:after { + width: 0px; + height: 0px; + display: inline-block; + float: right; + margin-top:7px; + content: "↓"; + text-indent: -99999px; + vertical-align: top; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-bottom: 4px solid #000; + visibility:hidden; + .box-shadow(0 1px 0 #fff); + .opacity(30); + } } th.headerSortUp, th.headerSortDown { // Style the sorted column headers (THs) - background-image: url(assets/img/tablesorter-indicators.png); - background-position: right -23px; - background-repeat: no-repeat; background-color: rgba(141,192,219,.25); text-shadow: 0 1px 1px rgba(255,255,255,.75); .border-radius(3px 3px 0 0); } th.header:hover { // Style the ascending (reverse alphabetical) column header - background-image: url(assets/img/tablesorter-indicators.png); - background-position: right 15px; - background-repeat: no-repeat; + &:after { + visibility:visible; + } } th.actions:hover { background-image: none; } th.headerSortDown, th.headerSortDown:hover { // Style the descending (alphabetical) column header - background-position: right -25px; + &:after { + visibility:visible; + .opacity(60); + } } - th.headerSortUp, - th.headerSortUp:hover { // Style the ascending (reverse alphabetical) column header - background-position: right -65px; + th.headerSortUp { // Style the ascending (reverse alphabetical) column header + &:after { + border-bottom: none; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #000; + visibility:visible; + .box-shadow(none); //can't add boxshadow to downward facing arrow :( + .opacity(60); + } } // Blue Table Headings th.blue {