From ac0a77d0ffaf7e827e3870f59395fbd48f73f70c Mon Sep 17 00:00:00 2001 From: Sahat Yalkabov Date: Sat, 14 Dec 2013 17:39:37 -0500 Subject: [PATCH] Replaced flat-ui.min.css with LESS version from Bootswatch, plus other css fixes --- public/css/styles.less | 2 - public/css/themes/flatly.less | 828 ++++++++++++++++++++++++++++++++++ public/css/themes/ios7.less | 6 +- views/account.jade | 1 + views/layout.jade | 2 +- 5 files changed, 831 insertions(+), 8 deletions(-) create mode 100644 public/css/themes/flatly.less diff --git a/public/css/styles.less b/public/css/styles.less index e575274bcc..292878bef9 100644 --- a/public/css/styles.less +++ b/public/css/styles.less @@ -1,5 +1,4 @@ @import "bootstrap/bootstrap"; -//@import "themes/ios7"; body { padding-top: 70px; @@ -16,7 +15,6 @@ body { margin-right: 5px; } - .facebook { background-color: #335397; border-color: #335397; diff --git a/public/css/themes/flatly.less b/public/css/themes/flatly.less new file mode 100644 index 0000000000..069a8c71b5 --- /dev/null +++ b/public/css/themes/flatly.less @@ -0,0 +1,828 @@ +// Flatly 3.0.3 +// Bootswatch +// ----------------------------------------------------- + +// Flatly 3.0.3 +// Variables +// -------------------------------------------------- + + +// Global values +// -------------------------------------------------- + +// Grays +// ------------------------- + +@gray-darker: lighten(#000, 13.5%); // #222 +@gray-dark: #7b8a8b; +@gray: #95a5a6; +@gray-light: #b4bcc2; +@gray-lighter: #ecf0f1; + +// Brand colors +// ------------------------- + +@brand-primary: #2C3E50; +@brand-success: #18BC9C; +@brand-warning: #F39C12; +@brand-danger: #E74C3C; +@brand-info: #3498DB; + +// Scaffolding +// ------------------------- + +@body-bg: #fff; +@text-color: @brand-primary; + +// Links +// ------------------------- + +@link-color: @brand-success; +@link-hover-color: @link-color; + +// Typography +// ------------------------- + +@font-family-sans-serif: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif; +@font-family-serif: Georgia, "Times New Roman", Times, serif; +@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace; +@font-family-base: @font-family-sans-serif; + +@font-size-base: 15px; +@font-size-large: ceil(@font-size-base * 1.25); // ~18px +@font-size-small: ceil(@font-size-base * 0.85); // ~12px + +@font-size-h1: floor(@font-size-base * 2.6); // ~36px +@font-size-h2: floor(@font-size-base * 2.15); // ~30px +@font-size-h3: ceil(@font-size-base * 1.7); // ~24px +@font-size-h4: ceil(@font-size-base * 1.25); // ~18px +@font-size-h5: @font-size-base; +@font-size-h6: ceil(@font-size-base * 0.85); // ~12px + +@line-height-base: 1.428571429; // 20/14 +@line-height-computed: floor(@font-size-base * @line-height-base); // ~20px + +@headings-font-family: @font-family-base; +@headings-font-weight: 500; +@headings-line-height: 1.1; +@headings-color: inherit; + + +// Iconography +// ------------------------- + +@icon-font-path: "../fonts/"; +@icon-font-name: "glyphicons-halflings-regular"; + + +// Components +// ------------------------- +// Based on 14px font-size and 1.428 line-height (~20px to start) + +@padding-base-vertical: 10px; +@padding-base-horizontal: 15px; + +@padding-large-vertical: 18px; +@padding-large-horizontal: 27px; + +@padding-small-vertical: 6px; +@padding-small-horizontal: 9px; + +@padding-xs-vertical: 1px; +@padding-xs-horizontal: 5px; + +@line-height-large: 1.33; +@line-height-small: 1.5; + +@border-radius-base: 4px; +@border-radius-large: 6px; +@border-radius-small: 3px; + +@component-active-color: #fff; +@component-active-bg: @brand-primary; + +@caret-width-base: 4px; +@caret-width-large: 5px; + +// Tables +// ------------------------- + +@table-cell-padding: 8px; +@table-condensed-cell-padding: 5px; + +@table-bg: transparent; // overall background-color +@table-bg-accent: #f9f9f9; // for striping +@table-bg-hover: @gray-lighter; +@table-bg-active: @table-bg-hover; + +@table-border-color: @gray-lighter; // table and cell border + + +// Buttons +// ------------------------- + +@btn-font-weight: normal; + +@btn-default-color: #fff; +@btn-default-bg: @gray; +@btn-default-border: @btn-default-bg; + +@btn-primary-color: @btn-default-color; +@btn-primary-bg: @brand-primary; +@btn-primary-border: @btn-primary-bg; + +@btn-success-color: @btn-default-color; +@btn-success-bg: @brand-success; +@btn-success-border: @btn-success-bg; + +@btn-warning-color: @btn-default-color; +@btn-warning-bg: @brand-warning; +@btn-warning-border: @btn-warning-bg; + +@btn-danger-color: @btn-default-color; +@btn-danger-bg: @brand-danger; +@btn-danger-border: @btn-danger-bg; + +@btn-info-color: @btn-default-color; +@btn-info-bg: @brand-info; +@btn-info-border: @btn-info-bg; + +@btn-link-disabled-color: @gray-light; + + +// Forms +// ------------------------- + +@input-bg: #fff; +@input-bg-disabled: @gray-lighter; + +@input-color: @text-color; +@input-border: #dce4ec; +@input-border-radius: @border-radius-base; +@input-border-focus: #1abc9c; + +@input-color-placeholder: #acb6c0; + +@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2); +@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2); +@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2); + +@legend-color: @text-color; +@legend-border-color: #e5e5e5; + +@input-group-addon-bg: @gray-lighter; +@input-group-addon-border-color: @input-border; + + +// Dropdowns +// ------------------------- + +@dropdown-bg: #fff; +@dropdown-border: rgba(0,0,0,.15); +@dropdown-fallback-border: #ccc; +@dropdown-divider-bg: #e5e5e5; + +@dropdown-link-color: @gray-dark; +@dropdown-link-hover-color: #fff; +@dropdown-link-hover-bg: @dropdown-link-active-bg; + +@dropdown-link-active-color: #fff; +@dropdown-link-active-bg: @component-active-bg; + +@dropdown-link-disabled-color: @text-muted; + +@dropdown-header-color: @text-muted; + + +// COMPONENT VARIABLES +// -------------------------------------------------- + + +// Z-index master list +// ------------------------- +// Used for a bird's eye view of components dependent on the z-axis +// Try to avoid customizing these :) + +@zindex-navbar: 1000; +@zindex-dropdown: 1000; +@zindex-popover: 1010; +@zindex-tooltip: 1030; +@zindex-navbar-fixed: 1030; +@zindex-modal-background: 1040; +@zindex-modal: 1050; + +// Media queries breakpoints +// -------------------------------------------------- + +// Extra small screen / phone +// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1 +@screen-xs: 480px; +@screen-xs-min: @screen-xs; +@screen-phone: @screen-xs-min; + +// Small screen / tablet +// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1 +@screen-sm: 768px; +@screen-sm-min: @screen-sm; +@screen-tablet: @screen-sm-min; + +// Medium screen / desktop +// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1 +@screen-md: 992px; +@screen-md-min: @screen-md; +@screen-desktop: @screen-md-min; + +// Large screen / wide desktop +// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1 +@screen-lg: 1200px; +@screen-lg-min: @screen-lg; +@screen-lg-desktop: @screen-lg-min; + +// So media queries don't overlap when required, provide a maximum +@screen-xs-max: (@screen-sm-min - 1); +@screen-sm-max: (@screen-md-min - 1); +@screen-md-max: (@screen-lg-min - 1); + + +// Grid system +// -------------------------------------------------- + +// Number of columns in the grid system +@grid-columns: 12; +// Padding, to be divided by two and applied to the left and right of all columns +@grid-gutter-width: 30px; + +// Navbar collapse + +// Point at which the navbar becomes uncollapsed +@grid-float-breakpoint: @screen-sm-min; +// Point at which the navbar begins collapsing +@grid-float-breakpoint-max: (@grid-float-breakpoint - 1); + + +// Navbar +// ------------------------- + +// Basics of a navbar +@navbar-height: 60px; +@navbar-margin-bottom: @line-height-computed; +@navbar-border-radius: @border-radius-base; +@navbar-padding-horizontal: floor(@grid-gutter-width / 2); // ~15px +@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2); + +@navbar-default-color: #777; +@navbar-default-bg: @brand-primary; +@navbar-default-border: darken(@navbar-default-bg, 6.5%); + +// Navbar links +@navbar-default-link-color: #fff; +@navbar-default-link-hover-color: @brand-success; +@navbar-default-link-hover-bg: transparent; +@navbar-default-link-active-color: #fff; +@navbar-default-link-active-bg: darken(@navbar-default-bg, 10%); +@navbar-default-link-disabled-color: #ccc; +@navbar-default-link-disabled-bg: transparent; + +// Navbar brand label +@navbar-default-brand-color: @navbar-default-link-color; +@navbar-default-brand-hover-color: @navbar-default-link-hover-color; +@navbar-default-brand-hover-bg: transparent; + +// Navbar toggle +@navbar-default-toggle-hover-bg: darken(@navbar-default-bg, 10%); +@navbar-default-toggle-icon-bar-bg: #fff; +@navbar-default-toggle-border-color: darken(@navbar-default-bg, 10%); + + +// Inverted navbar +// +// Reset inverted navbar basics +@navbar-inverse-color: #fff; +@navbar-inverse-bg: @brand-success; +@navbar-inverse-border: darken(@navbar-inverse-bg, 10%); + +// Inverted navbar links +@navbar-inverse-link-color: #fff; +@navbar-inverse-link-hover-color: @brand-primary; +@navbar-inverse-link-hover-bg: transparent; +@navbar-inverse-link-active-color: #fff; +@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 5%); +@navbar-inverse-link-disabled-color: #ccc; +@navbar-inverse-link-disabled-bg: transparent; + +// Inverted navbar brand label +@navbar-inverse-brand-color: @navbar-inverse-link-color; +@navbar-inverse-brand-hover-color: @navbar-inverse-link-hover-color; +@navbar-inverse-brand-hover-bg: transparent; + +// Inverted navbar toggle +@navbar-inverse-toggle-hover-bg: darken(@navbar-inverse-bg, 10%); +@navbar-inverse-toggle-icon-bar-bg: #fff; +@navbar-inverse-toggle-border-color: darken(@navbar-inverse-bg, 10%); + + +// Navs +// ------------------------- + +@nav-link-padding: 10px 15px; +@nav-link-hover-bg: @gray-lighter; + +@nav-disabled-link-color: @gray-light; +@nav-disabled-link-hover-color: @gray-light; + +@nav-open-link-hover-color: #fff; + +// Tabs +@nav-tabs-border-color: @gray-lighter; + +@nav-tabs-link-hover-border-color: @gray-lighter; + +@nav-tabs-active-link-hover-bg: @body-bg; +@nav-tabs-active-link-hover-color: @brand-primary; +@nav-tabs-active-link-hover-border-color: @gray-lighter; + +@nav-tabs-justified-link-border-color: @gray-lighter; +@nav-tabs-justified-active-link-border-color: @body-bg; + +// Pills +@nav-pills-border-radius: @border-radius-base; +@nav-pills-active-link-hover-bg: @component-active-bg; +@nav-pills-active-link-hover-color: @component-active-color; + + +// Pagination +// ------------------------- + +@pagination-bg: @brand-success; +@pagination-border: transparent; + +@pagination-hover-bg: darken(@brand-success, 15%); + +@pagination-active-bg: darken(@brand-success, 15%); +@pagination-active-color: #fff; + +@pagination-disabled-color: @gray-lighter; + + +// Pager +// ------------------------- + +@pager-border-radius: 15px; +@pager-disabled-color: #fff; + + +// Jumbotron +// ------------------------- + +@jumbotron-padding: 30px; +@jumbotron-color: inherit; +@jumbotron-bg: @gray-lighter; +@jumbotron-heading-color: inherit; +@jumbotron-font-size: ceil(@font-size-base * 1.5); + + +// Form states and alerts +// ------------------------- + +@state-success-text: #fff; +@state-success-bg: @brand-success; +@state-success-border: @brand-success; + +@state-info-text: #fff; +@state-info-bg: @brand-info; +@state-info-border: @brand-info; + +@state-warning-text: #fff; +@state-warning-bg: @brand-warning; +@state-warning-border: @brand-warning; + +@state-danger-text: #fff; +@state-danger-bg: @brand-danger; +@state-danger-border: @brand-danger; + + +// Tooltips +// ------------------------- +@tooltip-max-width: 200px; +@tooltip-color: #fff; +@tooltip-bg: rgba(0,0,0,.9); + +@tooltip-arrow-width: 5px; +@tooltip-arrow-color: @tooltip-bg; + + +// Popovers +// ------------------------- +@popover-bg: #fff; +@popover-max-width: 276px; +@popover-border-color: rgba(0,0,0,.2); +@popover-fallback-border-color: #ccc; + +@popover-title-bg: darken(@popover-bg, 3%); + +@popover-arrow-width: 10px; +@popover-arrow-color: #fff; + +@popover-arrow-outer-width: (@popover-arrow-width + 1); +@popover-arrow-outer-color: rgba(0,0,0,.25); +@popover-arrow-outer-fallback-color: #999; + + +// Labels +// ------------------------- + +@label-default-bg: @btn-default-bg; +@label-primary-bg: @brand-primary; +@label-success-bg: @brand-success; +@label-info-bg: @brand-info; +@label-warning-bg: @brand-warning; +@label-danger-bg: @brand-danger; + +@label-color: #fff; +@label-link-hover-color: #fff; + + +// Modals +// ------------------------- +@modal-inner-padding: 20px; + +@modal-title-padding: 15px; +@modal-title-line-height: @line-height-base; + +@modal-content-bg: #fff; +@modal-content-border-color: rgba(0,0,0,.2); +@modal-content-fallback-border-color: #999; + +@modal-backdrop-bg: #000; +@modal-header-border-color: #e5e5e5; +@modal-footer-border-color: @modal-header-border-color; + + +// Alerts +// ------------------------- +@alert-padding: 15px; +@alert-border-radius: @border-radius-base; +@alert-link-font-weight: bold; + +@alert-success-bg: @state-success-bg; +@alert-success-text: @state-success-text; +@alert-success-border: @state-success-border; + +@alert-info-bg: @state-info-bg; +@alert-info-text: @state-info-text; +@alert-info-border: @state-info-border; + +@alert-warning-bg: @state-warning-bg; +@alert-warning-text: @state-warning-text; +@alert-warning-border: @state-warning-border; + +@alert-danger-bg: @state-danger-bg; +@alert-danger-text: @state-danger-text; +@alert-danger-border: @state-danger-border; + + +// Progress bars +// ------------------------- +@progress-bg: @gray-lighter; +@progress-bar-color: #fff; + +@progress-bar-bg: @brand-primary; +@progress-bar-success-bg: @brand-success; +@progress-bar-warning-bg: @brand-warning; +@progress-bar-danger-bg: @brand-danger; +@progress-bar-info-bg: @brand-info; + + +// List group +// ------------------------- +@list-group-bg: #fff; +@list-group-border: @gray-lighter; +@list-group-border-radius: @border-radius-base; + +@list-group-hover-bg: @gray-lighter; +@list-group-active-color: @component-active-color; +@list-group-active-bg: @component-active-bg; +@list-group-active-border: @list-group-active-bg; + +@list-group-link-color: #555; +@list-group-link-heading-color: #333; + + +// Panels +// ------------------------- +@panel-bg: #fff; +@panel-inner-border: @gray-lighter; +@panel-border-radius: @border-radius-base; +@panel-footer-bg: @gray-lighter; + +@panel-default-text: @text-color; +@panel-default-border: @gray-lighter; +@panel-default-heading-bg: @gray-lighter; + +@panel-primary-text: #fff; +@panel-primary-border: @brand-primary; +@panel-primary-heading-bg: @brand-primary; + +@panel-success-text: @state-success-text; +@panel-success-border: @state-success-border; +@panel-success-heading-bg: @state-success-bg; + +@panel-warning-text: @state-warning-text; +@panel-warning-border: @state-warning-border; +@panel-warning-heading-bg: @state-warning-bg; + +@panel-danger-text: @state-danger-text; +@panel-danger-border: @state-danger-border; +@panel-danger-heading-bg: @state-danger-bg; + +@panel-info-text: @state-info-text; +@panel-info-border: @state-info-border; +@panel-info-heading-bg: @state-info-bg; + + +// Thumbnails +// ------------------------- +@thumbnail-padding: 4px; +@thumbnail-bg: @body-bg; +@thumbnail-border: @gray-lighter; +@thumbnail-border-radius: @border-radius-base; + +@thumbnail-caption-color: @text-color; +@thumbnail-caption-padding: 9px; + + +// Wells +// ------------------------- +@well-bg: @gray-lighter; + + +// Badges +// ------------------------- +@badge-color: #fff; +@badge-link-hover-color: #fff; +@badge-bg: @gray; + +@badge-active-color: @link-color; +@badge-active-bg: #fff; + +@badge-font-weight: bold; +@badge-line-height: 1; +@badge-border-radius: 10px; + + +// Breadcrumbs +// ------------------------- +@breadcrumb-bg: @gray-lighter; +@breadcrumb-color: #ccc; +@breadcrumb-active-color: @gray; +@breadcrumb-separator: "/"; + + +// Carousel +// ------------------------ + +@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6); + +@carousel-control-color: #fff; +@carousel-control-width: 15%; +@carousel-control-opacity: .5; +@carousel-control-font-size: 20px; + +@carousel-indicator-active-bg: #fff; +@carousel-indicator-border-color: #fff; + +@carousel-caption-color: #fff; + + +// Close +// ------------------------ +@close-font-weight: bold; +@close-color: #000; +@close-text-shadow: 0 1px 0 #fff; + + +// Code +// ------------------------ +@code-color: #c7254e; +@code-bg: #f9f2f4; + +@pre-bg: @gray-lighter; +@pre-color: @gray-dark; +@pre-border-color: #ccc; +@pre-scrollable-max-height: 340px; + +// Type +// ------------------------ +@text-muted: @gray-light; +@abbr-border-color: @gray-light; +@headings-small-color: @gray-light; +@blockquote-small-color: @gray-light; +@blockquote-border-color: @gray-lighter; +@page-header-border-color: @gray-lighter; + +// Miscellaneous +// ------------------------- + +// Hr border color +@hr-border: @gray-lighter; + +// Horizontal forms & lists +@component-offset-horizontal: 180px; + + +// Container sizes +// -------------------------------------------------- + +// Small screen / tablet +@container-tablet: ((720px + @grid-gutter-width)); +@container-sm: @container-tablet; + +// Medium screen / desktop +@container-desktop: ((940px + @grid-gutter-width)); +@container-md: @container-desktop; + +// Large screen / wide desktop +@container-large-desktop: ((1140px + @grid-gutter-width)); +@container-lg: @container-large-desktop; + +@import url("//fonts.googleapis.com/css?family=Lato:400,700,900,400italic"); + +// Navbar ===================================================================== + +// Buttons ==================================================================== + +.btn:active { + .box-shadow(none); +} + +.btn-group.open .dropdown-toggle { + .box-shadow(none); +} + +// Typography ================================================================= + +.text-primary, +.text-primary:hover { + color: @brand-primary; +} + +.text-success, +.text-success:hover { + color: @brand-success; +} + +.text-danger, +.text-danger:hover { + color: @brand-danger; +} + +.text-warning, +.text-warning:hover { + color: @brand-warning; +} + +.text-info, +.text-info:hover { + color: @brand-info; +} + +// Tables ===================================================================== + +.table { + + tr.success, + tr.warning, + tr.danger { + color: #fff; + } +} + +// Forms ====================================================================== + +.form-control,textarea.form-control, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + border-width: 2px; + .box-shadow(none); + + &:focus { + .box-shadow(none); + } +} + +.has-warning { + .help-block, + .control-label { + color: @brand-warning; + } + + .form-control, + .form-control:focus { + border: 2px solid @brand-warning; + } +} + +.has-error { + .help-block, + .control-label { + color: @brand-danger; + } + + .form-control, + .form-control:focus { + border: 2px solid @brand-danger; + } +} + +.has-success { + .help-block, + .control-label { + color: @brand-success; + } + + .form-control, + .form-control:focus { + border: 2px solid @brand-success; + } +} + +// Navs ======================================================================= + +.nav { + .open > a, + .open > a:hover, + .open > a:focus { + border-color: transparent; + } +} + +.pagination { + + a, + a:hover { + color: #fff; + } + + .disabled { + &>a, + &>a:hover, + &>a:focus, + &>span { + background-color: lighten(@brand-success, 15%); + } + } +} + +.pager { + a, + a:hover { + color: #fff; + } + + .disabled { + &>a, + &>a:hover, + &>a:focus, + &>span { + background-color: lighten(@brand-success, 15%); + } + } +} + +// Indicators ================================================================= + +.alert { + + a, + .alert-link { + color: #fff; + text-decoration: underline; + } +} + +// Progress bars ============================================================== + +.progress { + height: 10px; + .box-shadow(none); +} + +// Containers ================================================================= + +.well { + .box-shadow(none); + border-width: 0; +} diff --git a/public/css/themes/ios7.less b/public/css/themes/ios7.less index 6af8a97c54..59fa816903 100644 --- a/public/css/themes/ios7.less +++ b/public/css/themes/ios7.less @@ -55,12 +55,8 @@ a { // Navbar ===================================================================== +.navbar-default, .navbar-inverse { - background-color: #007aff; - border: 0 -} - -.navbar-default { background: rgba(255, 255, 255, 0.90); border-color: rgba(238,238,238,0.90); diff --git a/views/account.jade b/views/account.jade index 2e1e10b1b3..b72166fbf9 100644 --- a/views/account.jade +++ b/views/account.jade @@ -31,6 +31,7 @@ block content input(checked=user.profile.gender=='female', name='gender', type='radio', value='female') span Female .form-group + // TODO: differentiate between username as email label.col-sm-2.control-label(for='email') Email .col-sm-4 input.form-control(type='email', name='email', id='email', value='#{user.profile.email}') diff --git a/views/layout.jade b/views/layout.jade index 670c6274ad..b8f6053721 100644 --- a/views/layout.jade +++ b/views/layout.jade @@ -50,7 +50,7 @@ html a(href='/account') if user.profile.picture img(src='#{user.profile.picture}') - = user.profile.name || user.username || user.id + = user.username || user.profile.name || user.id li a(href='/logout') Logout .container