@import "mixins.scss"; // // iOS theme // Provides the visual and interaction style from iOS // // -------------------------------------------------- // Colors // -------------------------------------------------- // Main theme colors $primary-color: #007aff; $chrome-color: rgba(247,247,247,.98); // Action colors $default-color: #929292; $positive-color: #4cd964; $negative-color: #dd524d; // iOS style transitions // -------------------------------------------------- $timing-fuction: cubic-bezier(.1, .5, .1, 1); // Inspired by @c2prods // Bars // -------------------------------------------------- [class*="bar-"] { border-bottom: 0; background-color: $chrome-color; @include box-shadow(0 0 1px rgba(0,0,0,.85)); } .bar-tab { border-top: 0; @include box-shadow(0 0 -1px rgba(0,0,0,.85)); } // Nav bar in popovers // -------------------------------------------------- .popover .bar-nav { border-bottom: 1px solid rgba(0,0,0,.15); } // Table views // -------------------------------------------------- .table-view { .table-view-cell { border-bottom: 0; @include hairline(single, #c8c7cc, 15px); // Single grey border with a 15px offset. // Remove the border from the last table view item &:last-child { background-image: none; } } // Table view dividers // -------------------------------------------------- .table-view-divider { border-top: 0; border-bottom: 0; @include hairline(double, #c8c7cc, 0); // Double (top and bottom) grey border with no offset. } } .popover .table-view { border-radius: 12px; } // Forms // -------------------------------------------------- select, textarea, input[type="text"], input[type=search], 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="tel"], input[type="color"], .input-group { height: 40px; padding: 10px 15px; border: 1px solid rgba(0, 0, 0, .2); } // Rounded search input input[type=search] { height: 34px; text-align: center; background-color: rgba(0,0,0,.1); border: 0; border-radius: 6px; } input[type=search]:focus { text-align: left; } select, textarea, .input-group { height: auto; } // Input groups (cluster multiple inputs together into a single group) // ------------------------------------------------------------------- .input-group { padding: 0; } .input-group input { border: 0; @include hairline(single, #c8c7cc, 15px); } // Remove bottom border on last input to avoid double bottom border .input-group input:last-child { background-image: none; } // Input groups with labels // -------------------------------------------------- // To use labels with input groups, wrap a label and an input in an .input-row .input-row { border-bottom: 0; @include hairline(single, #c8c7cc, 15px); // Single grey border with a 15px offset. } // Remove bottom border on last input-row to avoid double bottom border .input-row:last-child, .input-row label + input { background-image: none; } // Buttons // -------------------------------------------------- [class*="button"] { border: 1px solid $default-color; color: $default-color; background-color: transparent; @include transition(background-color, opacity, color); @include transition-duration(.2s); @include transition-timing-function(linear); // Active & filled button styles &:active, &.active, &.button-filled { color: #fff; background-color: $default-color; } } // Other button types // -------------------------------------------------- // Primary button (Default color is blue) .button-primary { color: $primary-color; border: 1px solid $primary-color; &:active, &.active, &.button-filled { background-color: $primary-color; } } // Positive button (Default color is green) .button-positive { color: $positive-color; border: 1px solid $positive-color; &:active, &.active, &.button-filled { background-color: $positive-color; } } // Negative button (Default color is red) .button-negative { color: $negative-color; border: 1px solid $negative-color; &:active, &.active, &.button-filled { background-color: $negative-color; } } // Link button (Buttons that look like links) .button-link { color: $primary-color; &:active, &.active { color: $primary-color; } } // Link button (Buttons that look like links) .button-link { &:active, &.active { color: $primary-color; opacity: .3; } } // Buttons in nav bars // -------------------------------------------------- .bar-nav { [class*="button"] { color: $primary-color; @include transition(opacity .2s linear); } // Directional buttons in nav bars // -------------------------------------------------- .button-prev:before, .button-prev:after, .button-next:before, .button-next:after { background-color: $primary-color; } } // // Badges // -------------------------------------------------- [class*="badge"] { color: $default-color; &.badge-filled { color: $default-color; } } // Badge modifiers // -------------------------------------------------- // Main badge .badge-primary { color: $primary-color; &.badge-filled { color: #fff; background-color: $primary-color; } } // Positive badge .badge-positive { color: $positive-color; &.badge-filled { color: #fff; background-color: $positive-color; } } // Negative badge .badge-negative { color: $negative-color; &.badge-filled { color: #fff; background-color: $negative-color; } } // // Segmented controllers // -------------------------------------------------- .segmented-controller { background-color: transparent; border: 1px solid $primary-color; li { border-left: 1px solid $primary-color; @include transition(background-color .1s linear); // Link that fills each section > a { color: $primary-color; } // Selected segment of controller &.selected { background-color: $primary-color; } } } // // Popovers // -------------------------------------------------- .popover { border-radius: 12px; @include transition(-webkit-transform 0.2s ease-in-out, transform 0.2s ease-in-out, opacity 0.2s ease-in-out); } // // Modal styles // -------------------------------------------------- .modal { @include transition-timing-function($timing-fuction); // Active modal &.active { @include transition-timing-function($timing-fuction); } } // // Toggles styles // -------------------------------------------------- .toggle { border: 2px solid #e6e6e6; @include box-shadow(inset 0 0 0 0 #e1e1e1); @include transition-property(box-shadow, border); @include transition-duration(.2s); // Sliding handle .toggle-handle { border: 1px solid rgba(0, 0, 0, .2); @include box-shadow(0 3px 3px rgba(0,0,0,.08)); @include transition-property(-webkit-transform, border, width); } &:active .toggle-handle { width: 35px; } // Active state for toggle &.active { border: 2px solid $positive-color; background-color: transparent; @include box-shadow(inset 0 0 0 13px $positive-color); // Handle when the handle and the container is active &:active .toggle-handle, .toggle-handle:active { @include transform(translate3d(10px,0,0) !important); // Evil important tag is used to overwrite js. } .toggle-handle { border-color: $positive-color; } } } // // Push styles // -------------------------------------------------- .content { // Fade animation &.fade { @include transition(opacity .2s ease-in-out); } // Slide animation &.slide { @include transition-timing-function ($timing-fuction); // Adding the overlay &.sliding-in, &.right:not([class*="sliding-in"]) { @include animation-name(fadeOverlay); @include animation-duration(.4s); } &.right:not([class*="sliding-in"]) { @include animation-direction(reverse); } &.left { @include transform(translate3d(-20%, 0, 0)); // Creates the parallax effect } } } // Overlay animation for the slide transition @-webkit-keyframes fadeOverlay { from { @include box-shadow(0 0 10px rgba(0,0,0,0), -320px 0 0 rgba(0,0,0,0)); } to { @include box-shadow(0 0 10px rgba(0,0,0,.3), -320px 0 0 rgba(0,0,0,.1)); } }