shipyard-framework 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.rspec +2 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +21 -0
- data/README.md +52 -0
- data/Rakefile +6 -0
- data/app/views/shipyard/_alerts.slim +3 -0
- data/assets/icons/arrows/arrow-down.svg +3 -0
- data/assets/icons/gear.svg +3 -0
- data/assets/icons/plus.svg +3 -0
- data/assets/icons/x.svg +4 -0
- data/assets/javascripts/shipyard/alert.es6 +19 -0
- data/assets/javascripts/shipyard/core.es6 +3 -0
- data/assets/javascripts/shipyard/icon.es6 +50 -0
- data/assets/javascripts/shipyard.es6 +6 -0
- data/assets/stylesheets/_shipyard.sass +3 -0
- data/assets/stylesheets/shipyard/_components.sass +5 -0
- data/assets/stylesheets/shipyard/_core.sass +12 -0
- data/assets/stylesheets/shipyard/_utilities.sass +5 -0
- data/assets/stylesheets/shipyard/components/_alerts.sass +64 -0
- data/assets/stylesheets/shipyard/components/_boxes.sass +37 -0
- data/assets/stylesheets/shipyard/components/_buttons.sass +107 -0
- data/assets/stylesheets/shipyard/components/_empty.sass +15 -0
- data/assets/stylesheets/shipyard/components/_forms.sass +128 -0
- data/assets/stylesheets/shipyard/components/_icons.sass +54 -0
- data/assets/stylesheets/shipyard/components/_modals.sass +29 -0
- data/assets/stylesheets/shipyard/functions/_color.sass +9 -0
- data/assets/stylesheets/shipyard/mixins/_box-model.sass +6 -0
- data/assets/stylesheets/shipyard/mixins/_components.sass +82 -0
- data/assets/stylesheets/shipyard/mixins/_positioning.sass +12 -0
- data/assets/stylesheets/shipyard/mixins/_prefixed.sass +19 -0
- data/assets/stylesheets/shipyard/mixins/_responsive.sass +112 -0
- data/assets/stylesheets/shipyard/mixins/_selectors.sass +11 -0
- data/assets/stylesheets/shipyard/utilities/_animations.sass +11 -0
- data/assets/stylesheets/shipyard/utilities/_grid.sass +75 -0
- data/assets/stylesheets/shipyard/utilities/_positioning.sass +17 -0
- data/assets/stylesheets/shipyard/utilities/_reset.sass +11 -0
- data/assets/stylesheets/shipyard/utilities/_type.sass +161 -0
- data/assets/stylesheets/shipyard/variables/_color_utilities.sass +68 -0
- data/assets/stylesheets/shipyard/variables/_colors.scss +11 -0
- data/assets/stylesheets/shipyard/variables/_grid.scss +2 -0
- data/assets/stylesheets/shipyard/variables/_misc.scss +11 -0
- data/assets/stylesheets/shipyard/variables/_typography.scss +29 -0
- data/lib/shipyard/icons.rb +89 -0
- data/lib/shipyard/rails/alert_helper.rb +45 -0
- data/lib/shipyard/rails/button_helper.rb +37 -0
- data/lib/shipyard/rails/engine.rb +11 -0
- data/lib/shipyard/rails/icon_helper.rb +50 -0
- data/lib/shipyard/rails/layout_helpers.rb +34 -0
- data/lib/shipyard/rails/railtie.rb +24 -0
- data/lib/shipyard/version.rb +3 -0
- data/lib/shipyard.rb +65 -0
- data/shipyard.gemspec +27 -0
- metadata +181 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
svg, path, circle, polyline
|
2
|
+
transition: fill 300ms ease, stroke 300ms ease, opacity 300ms ease
|
3
|
+
|
4
|
+
+component('icon')
|
5
|
+
fill: $gray
|
6
|
+
display: inline-block
|
7
|
+
transition: fill 300ms ease, stroke 300ms ease, opacity 300ms ease
|
8
|
+
overflow: visible
|
9
|
+
transform-origin: center center
|
10
|
+
|
11
|
+
// Icons w/ Strokes
|
12
|
+
&-outline
|
13
|
+
stroke: $gray
|
14
|
+
&, &-inverse
|
15
|
+
fill: transparent
|
16
|
+
stroke-width: 2px
|
17
|
+
stroke-linecap: round
|
18
|
+
stroke-linejoin: round
|
19
|
+
&-inverse
|
20
|
+
stroke: #fff !important
|
21
|
+
|
22
|
+
&-arrow-down
|
23
|
+
@extend .icon-outline
|
24
|
+
+width-height(10px, 6px)
|
25
|
+
|
26
|
+
&-plus
|
27
|
+
@extend .icon-outline
|
28
|
+
+width-height(6px, 6px)
|
29
|
+
|
30
|
+
// Icon: Sizes
|
31
|
+
$sizes: (xs: 8px, sm: 16px, md: 24px, lg: 32px, xl: 44px)
|
32
|
+
+all-media-sizes
|
33
|
+
@each $size, $value in $sizes
|
34
|
+
&-#{$size}
|
35
|
+
+width-height($value, $value)
|
36
|
+
|
37
|
+
&-btn
|
38
|
+
position: relative
|
39
|
+
display: inline-block
|
40
|
+
border: 2px solid $gray
|
41
|
+
border-radius: 50%
|
42
|
+
text-align: center
|
43
|
+
transition: border-color 300ms ease
|
44
|
+
@each $size, $value in (xs: 16px, sm: 24px, md: 32px, lg: 40px, xl: 48px)
|
45
|
+
&-#{$size}
|
46
|
+
+width-height($value, $value)
|
47
|
+
a:hover &
|
48
|
+
border-color: darken($gray, 12%)
|
49
|
+
|
50
|
+
&-inverse
|
51
|
+
border-color: #fff !important
|
52
|
+
|
53
|
+
&-inverse
|
54
|
+
fill: #fff
|
@@ -0,0 +1,29 @@
|
|
1
|
+
+component('modal')
|
2
|
+
width: 100%
|
3
|
+
max-width: 800px
|
4
|
+
padding: 10px
|
5
|
+
|
6
|
+
&-container
|
7
|
+
position: fixed
|
8
|
+
top: 0
|
9
|
+
right: 0
|
10
|
+
bottom: 0
|
11
|
+
left: 0
|
12
|
+
background: rgba($gray-darkest,.9)
|
13
|
+
z-index: 200
|
14
|
+
|
15
|
+
&-content
|
16
|
+
background: #fff
|
17
|
+
border-radius: 5px 5px 0 0
|
18
|
+
+respond-to(padding, (x0: 20px, x2: 30px))
|
19
|
+
|
20
|
+
&-title
|
21
|
+
margin: 0 0 10px
|
22
|
+
|
23
|
+
&-description
|
24
|
+
margin: 0
|
25
|
+
|
26
|
+
&-ctas
|
27
|
+
background: $gray-lightest
|
28
|
+
border-radius: 0 0 5px 5px
|
29
|
+
+respond-to(padding, (x0: 10px 15px, x1: 15px, x2: 15px 25px))
|
@@ -0,0 +1,9 @@
|
|
1
|
+
@function color($name, $shade: null)
|
2
|
+
$color: map-get($colors, $name)
|
3
|
+
@if $color
|
4
|
+
@if $shade
|
5
|
+
@return map-get(map-get($colors, $name), $shade)
|
6
|
+
@else
|
7
|
+
@return map-get(map-get($colors, $name), base)
|
8
|
+
@else
|
9
|
+
@warn "Sorry, but the color `#{$name}` hasn't been defined in the $colors variable."
|
@@ -0,0 +1,82 @@
|
|
1
|
+
// Used to define the base component class (e.g. "alert") and save it for use later.
|
2
|
+
@mixin component($name)
|
3
|
+
$component: $name !global
|
4
|
+
.#{$name}
|
5
|
+
@content
|
6
|
+
|
7
|
+
@mixin sub-component($name)
|
8
|
+
$sub-component: "#{$component}-#{$name}" !global
|
9
|
+
&-#{$name}
|
10
|
+
@content
|
11
|
+
|
12
|
+
@mixin extend($modifier: null)
|
13
|
+
@if $modifier
|
14
|
+
@extend .#{$component}-#{$modifier}
|
15
|
+
@else
|
16
|
+
@extend .#{$component}
|
17
|
+
|
18
|
+
@mixin z-index($value: null)
|
19
|
+
@if $value
|
20
|
+
z-index: $value
|
21
|
+
@else if $component && map-get($z-index, $component)
|
22
|
+
z-index: map-get($z-index, $component)
|
23
|
+
|
24
|
+
// Uses the base component class defined earlier (e.g. "alert").
|
25
|
+
//
|
26
|
+
// Notes:
|
27
|
+
// - This mixin only works in tandem with the +component mixin, which must be used first.
|
28
|
+
// - Makes defining styles for states more readable (see example below):
|
29
|
+
//
|
30
|
+
// Example Usage:
|
31
|
+
//
|
32
|
+
// +component('alert')
|
33
|
+
// &-title
|
34
|
+
// +when('success')
|
35
|
+
// color: green
|
36
|
+
// +when('error')
|
37
|
+
// color: red
|
38
|
+
// +when('warning')
|
39
|
+
// color: yellow
|
40
|
+
// +when('info, default')
|
41
|
+
// color: gray
|
42
|
+
// +when('celebrate', $not: 'success')
|
43
|
+
// color: purple
|
44
|
+
//
|
45
|
+
// The above code outputs to:
|
46
|
+
//
|
47
|
+
// .alert-success .alert-title { color: green }
|
48
|
+
// .alert-error .alert-title { color: red }
|
49
|
+
// .alert-warning .alert-title { color: yellow }
|
50
|
+
// .alert-info .alert-title,
|
51
|
+
// .alert-default .alert-title { color: gray }
|
52
|
+
// .alert-celebrate:not(.alert-success) .alert-title { color: purple }
|
53
|
+
//
|
54
|
+
@mixin when($classes: null, $state: null, $not: null, $and: null)
|
55
|
+
+handle-states($component, $classes, $state, $not, $and)
|
56
|
+
@content
|
57
|
+
|
58
|
+
@mixin when-sub-state($class)
|
59
|
+
+prepend-to-root(".#{$component}-#{$class}")
|
60
|
+
@content
|
61
|
+
|
62
|
+
@mixin sub-state($classes: null, $state: null, $not: null, $and: null)
|
63
|
+
+handle-states($sub-component, $classes, $state, $not, $and)
|
64
|
+
@content
|
65
|
+
|
66
|
+
@mixin handle-states($component-name, $classes: null, $state: null, $not: null, $and: null)
|
67
|
+
@if $classes
|
68
|
+
$classes: selector-append(".#{$component-name}-", $classes)
|
69
|
+
@if $state
|
70
|
+
$classes: selector-append(".#{$component-name}", ":#{$state}")
|
71
|
+
@if $not
|
72
|
+
$not: selector-append(".#{$component-name}-", $not)
|
73
|
+
$classes: selector-append($classes, ":not(#{$not})")
|
74
|
+
@if $and
|
75
|
+
$and: selector-append(".#{$component-name}-", $and)
|
76
|
+
$classes: selector-append($classes, $and)
|
77
|
+
@at-root #{selector-nest($classes, &)}
|
78
|
+
@content
|
79
|
+
|
80
|
+
@mixin and($class)
|
81
|
+
@at-root #{selector-append(".#{$component}-#{$class}", &)}
|
82
|
+
@content
|
@@ -0,0 +1,12 @@
|
|
1
|
+
@mixin center($vertical: false, $horizontal: false)
|
2
|
+
position: absolute
|
3
|
+
@if $vertical
|
4
|
+
top: 50%
|
5
|
+
transform: translatey(-50%)
|
6
|
+
@else if $horizontal
|
7
|
+
left: 50%
|
8
|
+
transform: translatex(-50%)
|
9
|
+
@else
|
10
|
+
top: 50%
|
11
|
+
left: 50%
|
12
|
+
transform: translate(-50%, -50%)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
@mixin rotate($deg)
|
2
|
+
-ms-transform: rotate($deg)
|
3
|
+
-moz-transform: rotate($deg)
|
4
|
+
-webkit-transform: rotate($deg)
|
5
|
+
transform: rotate($deg)
|
6
|
+
|
7
|
+
@mixin backdrop-filter($content)
|
8
|
+
backdrop-filter: $content
|
9
|
+
-webkit-backdrop-filter: $content
|
10
|
+
|
11
|
+
@mixin placeholder
|
12
|
+
&:-moz-placeholder
|
13
|
+
@content
|
14
|
+
&:-ms-input-placeholder
|
15
|
+
@content
|
16
|
+
&::-moz-placeholder
|
17
|
+
@content
|
18
|
+
&::-webkit-input-placeholder
|
19
|
+
@content
|
@@ -0,0 +1,112 @@
|
|
1
|
+
// --------------------------------------------------
|
2
|
+
// Responsive Mixins (Utilities)
|
3
|
+
// --------------------------------------------------
|
4
|
+
// Usage:
|
5
|
+
// +media(max-width $mobile-max) -> styles any screens *smaller* then $mobile-max
|
6
|
+
// +media(min-width $tablet-min) -> styles any screens *larger* then $tablet-min
|
7
|
+
// +media(max-width $tablet-max) -> styles any screens *smaller* then $tablet-max
|
8
|
+
// +media(min-width $desktop-min) -> styles any screens *larger* then $desktop-min
|
9
|
+
// +media(min-width 500px) -> styles any screens *larger* then 500px
|
10
|
+
// +media(max-width 500px) -> styles any screens *smaller* then 500px
|
11
|
+
// +media(min-height 500px) -> styles any screens *taller* then 500px
|
12
|
+
// +media(max-height 500px) -> styles any screens *shorter* then 500px
|
13
|
+
// +media(min-width $tablet-min max-width $tablet-max) -> styles any screens *between* $tablet-min and $tablet-max
|
14
|
+
// +media(min-width 500px max-width 1000px) -> styles any screens *between* 500px and 1000px wide
|
15
|
+
// +media(min-height 500px max-height 1000px) -> styles any screens *between* 500px and 1000px tall
|
16
|
+
@mixin media($args)
|
17
|
+
@if length($args) > 6
|
18
|
+
@media screen and (#{nth($args, 1)}: nth($args, 2)) and (#{nth($args, 3)}: nth($args, 4)), screen and (#{nth($args, 5)}: nth($args, 6)) and (#{nth($args, 7)}: nth($args, 8))
|
19
|
+
@content
|
20
|
+
@else if length($args) > 4
|
21
|
+
@media screen and (#{nth($args, 1)}: nth($args, 2)), screen and (#{nth($args, 3)}: nth($args, 4)) and (#{nth($args, 5)}: nth($args, 6))
|
22
|
+
@content
|
23
|
+
@else if length($args) > 2
|
24
|
+
@media screen and (#{nth($args, 1)}: nth($args, 2)) and (#{nth($args, 3)}: nth($args, 4))
|
25
|
+
@content
|
26
|
+
@else
|
27
|
+
@media screen and (#{nth($args, 1)}: nth($args, 2))
|
28
|
+
@content
|
29
|
+
|
30
|
+
@mixin all-media-sizes
|
31
|
+
@content
|
32
|
+
+media-sizes
|
33
|
+
@content
|
34
|
+
|
35
|
+
@mixin media-sizes
|
36
|
+
@each $breakpoint, $min-width in $breakpoints
|
37
|
+
&-#{$breakpoint}
|
38
|
+
+media(min-width $min-width)
|
39
|
+
@content
|
40
|
+
|
41
|
+
@mixin breakpoint-x0
|
42
|
+
+media(max-width map-get($breakpoints, x1) - 1)
|
43
|
+
@content
|
44
|
+
|
45
|
+
@mixin breakpoint-x1
|
46
|
+
+media(min-width map-get($breakpoints, x1))
|
47
|
+
@content
|
48
|
+
|
49
|
+
@mixin breakpoint-x2
|
50
|
+
+media(min-width map-get($breakpoints, x2))
|
51
|
+
@content
|
52
|
+
|
53
|
+
@mixin breakpoint-x3
|
54
|
+
+media(min-width map-get($breakpoints, x3))
|
55
|
+
@content
|
56
|
+
|
57
|
+
@mixin breakpoint-x4
|
58
|
+
+media(min-width map-get($breakpoints, x4))
|
59
|
+
@content
|
60
|
+
|
61
|
+
@mixin responsive-padding($properties: null, $divisor: 2)
|
62
|
+
transition: padding 500ms ease
|
63
|
+
@if $properties
|
64
|
+
@each $property in $properties
|
65
|
+
padding-#{$property}: map-get($margins, x0) / $divisor
|
66
|
+
+breakpoint-x1
|
67
|
+
@each $property in $properties
|
68
|
+
padding-#{$property}: map-get($margins, x1) / $divisor
|
69
|
+
+breakpoint-x2
|
70
|
+
@each $property in $properties
|
71
|
+
padding-#{$property}: map-get($margins, x2) / $divisor
|
72
|
+
@else
|
73
|
+
+respond-to(padding, (x0: map-get($margins, x0), x1: map-get($margins, x1), x2: map-get($margins, x2)))
|
74
|
+
|
75
|
+
@mixin responsive-margin($properties, $divisor: 2)
|
76
|
+
transition: margin 500ms ease
|
77
|
+
@each $property in $properties
|
78
|
+
margin-#{$property}: map-get($margins, x0) / $divisor
|
79
|
+
+breakpoint-x1
|
80
|
+
@each $property in $properties
|
81
|
+
margin-#{$property}: map-get($margins, x1) / $divisor
|
82
|
+
+breakpoint-x2
|
83
|
+
@each $property in $properties
|
84
|
+
margin-#{$property}: map-get($margins, x2) / $divisor
|
85
|
+
|
86
|
+
@mixin respond-to($property, $breakpoints)
|
87
|
+
@if map-has-key($breakpoints, x0)
|
88
|
+
#{$property}: map-get($breakpoints, x0)
|
89
|
+
@if map-has-key($breakpoints, x1)
|
90
|
+
+breakpoint-x1
|
91
|
+
#{$property}: map-get($breakpoints, x1)
|
92
|
+
@if map-has-key($breakpoints, x2)
|
93
|
+
+breakpoint-x2
|
94
|
+
#{$property}: map-get($breakpoints, x2)
|
95
|
+
@if map-has-key($breakpoints, x3)
|
96
|
+
+breakpoint-x3
|
97
|
+
#{$property}: map-get($breakpoints, x3)
|
98
|
+
|
99
|
+
@mixin responsive-left
|
100
|
+
+respond-to(left, (x0: map-get($margins, x0), x1: map-get($margins, x1), x2: map-get($margins, x2)))
|
101
|
+
|
102
|
+
@mixin responsive-right
|
103
|
+
+respond-to(right, (x0: map-get($margins, x0), x1: map-get($margins, x1), x2: map-get($margins, x2)))
|
104
|
+
|
105
|
+
@mixin responsive-padding-left
|
106
|
+
+respond-to(padding-left, (x0: map-get($margins, x0), x1: map-get($margins, x1), x2: map-get($margins, x2)))
|
107
|
+
|
108
|
+
@mixin responsive-padding-right
|
109
|
+
+respond-to(padding-right, (x0: map-get($margins, x0), x1: map-get($margins, x1), x2: map-get($margins, x2)))
|
110
|
+
|
111
|
+
@function merge-and-add($map1, $map2)
|
112
|
+
@return (x0: map-get($map1, x0) + map-get($map2, x0), x1: map-get($map1, x1) + map-get($map2, x1), x2: map-get($map1, x2) + map-get($map2, x2))
|
@@ -0,0 +1,11 @@
|
|
1
|
+
@mixin root($selector)
|
2
|
+
@at-root #{selector-nest($selector, &)}
|
3
|
+
@content
|
4
|
+
|
5
|
+
@mixin prepend-to-root($selector)
|
6
|
+
@at-root #{selector-append($selector, &)}
|
7
|
+
@content
|
8
|
+
|
9
|
+
@mixin append-to-root($selector)
|
10
|
+
@at-root #{selector-append(&, $selector)}
|
11
|
+
@content
|
@@ -0,0 +1,11 @@
|
|
1
|
+
@keyframes shake
|
2
|
+
0%, 100%
|
3
|
+
transform: translateX(0) translateY(0)
|
4
|
+
12.5%
|
5
|
+
transform: translateX(-12px) translateY(0)
|
6
|
+
37.5%
|
7
|
+
transform: translateX(10px) translateY(0)
|
8
|
+
62.5%
|
9
|
+
transform: translateX(-7px) translateY(0)
|
10
|
+
87.5%
|
11
|
+
transform: translateX(3px) translateY(0)
|
@@ -0,0 +1,75 @@
|
|
1
|
+
$widths: (auto, 5, 10, 15, 20, 25, 30, 33, 35, 40, 45, 50, 55, 60, 65, 66, 70, 75, 80, 85, 90, 95, 100)
|
2
|
+
|
3
|
+
@mixin clearfix
|
4
|
+
&::after
|
5
|
+
clear: both
|
6
|
+
content: ""
|
7
|
+
display: table
|
8
|
+
|
9
|
+
@mixin column-style($property, $width)
|
10
|
+
@if $width == auto
|
11
|
+
#{$property}: auto
|
12
|
+
@else if $width == 66
|
13
|
+
#{$property}: 66.6666666666%
|
14
|
+
@else if $width == 33
|
15
|
+
#{$property}: 33.3333333333%
|
16
|
+
@else
|
17
|
+
#{$property}: percentage($width / 100)
|
18
|
+
|
19
|
+
@mixin column-sizes
|
20
|
+
@each $width in $widths
|
21
|
+
&-#{$width}
|
22
|
+
+column-style(width, $width)
|
23
|
+
&-offset-#{$width}
|
24
|
+
+column-style(margin-left, $width)
|
25
|
+
|
26
|
+
.container
|
27
|
+
+clearfix
|
28
|
+
margin: 0 auto
|
29
|
+
max-width: 1440px
|
30
|
+
position: relative
|
31
|
+
+responsive-padding(left right, $divisor: 1)
|
32
|
+
|
33
|
+
.content
|
34
|
+
@extend .container
|
35
|
+
+responsive-padding(top bottom, $divisor: 1)
|
36
|
+
|
37
|
+
.col
|
38
|
+
display: block
|
39
|
+
float: left
|
40
|
+
position: relative
|
41
|
+
+responsive-padding(left right)
|
42
|
+
|
43
|
+
&-container
|
44
|
+
+clearfix
|
45
|
+
+responsive-margin(left right, $divisor: -2)
|
46
|
+
|
47
|
+
&-center
|
48
|
+
float: none
|
49
|
+
margin: 0 auto
|
50
|
+
|
51
|
+
+all-media-sizes
|
52
|
+
+column-sizes
|
53
|
+
|
54
|
+
+component('flex')
|
55
|
+
display: flex
|
56
|
+
+all-media-sizes
|
57
|
+
&-col
|
58
|
+
flex-direction: column
|
59
|
+
&-col-reverse
|
60
|
+
flex-direction: column-reverse
|
61
|
+
|
62
|
+
.float
|
63
|
+
+all-media-sizes
|
64
|
+
@each $value in (none, left, right)
|
65
|
+
&-#{$value}
|
66
|
+
float: $value
|
67
|
+
|
68
|
+
.display
|
69
|
+
+all-media-sizes
|
70
|
+
@each $value in (block, inline, inline-block, none)
|
71
|
+
&-#{$value}
|
72
|
+
display: $value
|
73
|
+
|
74
|
+
.clearfix
|
75
|
+
+clearfix
|
@@ -0,0 +1,17 @@
|
|
1
|
+
.align
|
2
|
+
+all-media-sizes
|
3
|
+
@each $value in (center, left, right)
|
4
|
+
&-#{$value}
|
5
|
+
text-align: $value
|
6
|
+
|
7
|
+
.center
|
8
|
+
+all-media-sizes
|
9
|
+
+center
|
10
|
+
|
11
|
+
.v-center
|
12
|
+
+all-media-sizes
|
13
|
+
+center($vertical: true)
|
14
|
+
|
15
|
+
.h-center
|
16
|
+
+all-media-sizes
|
17
|
+
+center($horizontal: true)
|
@@ -0,0 +1,161 @@
|
|
1
|
+
body
|
2
|
+
background: $gray-lightest
|
3
|
+
color: $gray-dark
|
4
|
+
-webkit-font-smoothing: antialiased
|
5
|
+
-moz-osx-font-smoothing: grayscale
|
6
|
+
|
7
|
+
a, .link
|
8
|
+
cursor: pointer
|
9
|
+
text-decoration: none
|
10
|
+
color: $blue
|
11
|
+
transition: color 300ms ease, background-color 300ms ease, border-color 300ms ease, box-shadow 300ms ease
|
12
|
+
&:hover
|
13
|
+
color: darken($blue, 10%)
|
14
|
+
text-decoration: underline
|
15
|
+
.legacy-content &
|
16
|
+
text-decoration: none
|
17
|
+
|
18
|
+
hr
|
19
|
+
height: 0
|
20
|
+
border: 0 solid $border-color-light
|
21
|
+
border-width: 2px 0 0
|
22
|
+
+respond-to(margin, (x0: 20px 0, x1: 30px 0))
|
23
|
+
&.dark
|
24
|
+
border-color: $border-color
|
25
|
+
&.lightest
|
26
|
+
border-color: $border-color-lightest
|
27
|
+
&.thin
|
28
|
+
border-width: 1px 0 0
|
29
|
+
|
30
|
+
.medium
|
31
|
+
font-weight: $medium
|
32
|
+
|
33
|
+
strong, .strong, .bold
|
34
|
+
font-weight: $bold
|
35
|
+
|
36
|
+
ul, ol
|
37
|
+
list-style: none
|
38
|
+
|
39
|
+
.list
|
40
|
+
list-style: circle
|
41
|
+
&, &-disc
|
42
|
+
color: $gray-light
|
43
|
+
margin: 20px 0 0 18px
|
44
|
+
&-disc
|
45
|
+
list-style: disc
|
46
|
+
.legacy-content &
|
47
|
+
list-style: none
|
48
|
+
li
|
49
|
+
margin: 10px 0
|
50
|
+
.legacy-content &
|
51
|
+
color: $text-color
|
52
|
+
|
53
|
+
img
|
54
|
+
display: block
|
55
|
+
|
56
|
+
button
|
57
|
+
background: none
|
58
|
+
border: none
|
59
|
+
cursor: pointer
|
60
|
+
|
61
|
+
.code
|
62
|
+
color: desaturate(darken($purple, 15%), 25%)
|
63
|
+
background: darken($gray-lightest, 3%)
|
64
|
+
border: 1px solid darken($gray-lighter, 5%)
|
65
|
+
border-radius: 3px
|
66
|
+
padding: 2px 4px
|
67
|
+
margin: 0 2px
|
68
|
+
|
69
|
+
.em
|
70
|
+
color: $teal
|
71
|
+
|
72
|
+
.p
|
73
|
+
margin: 15px 0
|
74
|
+
|
75
|
+
+component('bullet')
|
76
|
+
margin: 0 5px
|
77
|
+
color: lighten($text-color-lightest, 20%)
|
78
|
+
&-inverse
|
79
|
+
+extend
|
80
|
+
color: rgba(#fff,.4)
|
81
|
+
|
82
|
+
h1, .h1
|
83
|
+
+respond-to(font-size, (x0: 20px, x1: 24px))
|
84
|
+
h2, .h2
|
85
|
+
font-size: 18px
|
86
|
+
|
87
|
+
h1, h2, h3, h4, h5, h6
|
88
|
+
@extend .strong
|
89
|
+
|
90
|
+
.h-primary
|
91
|
+
margin-bottom: 0
|
92
|
+
+respond-to(font-size, (x0: 24px, x1: 28px))
|
93
|
+
.h-secondary
|
94
|
+
color: $text-color-lighter
|
95
|
+
font-weight: $normal
|
96
|
+
margin: 5px 0 30px
|
97
|
+
+respond-to(font-size, (x0: 16px, x1: 18px))
|
98
|
+
.h-margin
|
99
|
+
margin: 0 0 30px
|
100
|
+
|
101
|
+
.white-space-nowrap
|
102
|
+
white-space: nowrap
|
103
|
+
|
104
|
+
.italic
|
105
|
+
font-style: italic
|
106
|
+
|
107
|
+
.align
|
108
|
+
+all-media-sizes
|
109
|
+
@each $value in (center, left, right)
|
110
|
+
&-#{$value}
|
111
|
+
text-align: $value
|
112
|
+
|
113
|
+
.margin
|
114
|
+
@each $direction in (top, right, bottom, left)
|
115
|
+
&-#{$direction}
|
116
|
+
+all-media-sizes
|
117
|
+
@each $size, $value in (xxs: 5px, xs: 10px, sm: 15px, md: 20px, lg: 30px, xl: 40px, xxl: 50px)
|
118
|
+
&-#{$size}
|
119
|
+
margin-#{$direction}: $value
|
120
|
+
|
121
|
+
.text
|
122
|
+
&-shadow
|
123
|
+
text-shadow: 0 1px 0 rgba(#000,.08)
|
124
|
+
|
125
|
+
&-overflow
|
126
|
+
+all-media-sizes
|
127
|
+
&-ellipsis
|
128
|
+
white-space: nowrap
|
129
|
+
text-overflow: ellipsis
|
130
|
+
overflow: hidden
|
131
|
+
|
132
|
+
+all-media-sizes
|
133
|
+
&-clip
|
134
|
+
white-space: normal
|
135
|
+
text-overflow: clip
|
136
|
+
overflow: visible
|
137
|
+
|
138
|
+
// Font Colors
|
139
|
+
&-light
|
140
|
+
color: $text-color-light
|
141
|
+
&-lighter
|
142
|
+
color: $text-color-lighter
|
143
|
+
&-lightest
|
144
|
+
color: $text-color-lightest
|
145
|
+
&-inverse
|
146
|
+
&-light
|
147
|
+
color: rgba(#fff,.8)
|
148
|
+
&-lighter
|
149
|
+
color: rgba(#fff,.7)
|
150
|
+
&-lightest
|
151
|
+
color: rgba(#fff,.6)
|
152
|
+
|
153
|
+
// Font Sizes
|
154
|
+
@each $size, $value in $font-sizes
|
155
|
+
&-#{$size}
|
156
|
+
font-size: $value
|
157
|
+
|
158
|
+
.rotate-45
|
159
|
+
transform: rotate(45deg)
|
160
|
+
.rotate-90
|
161
|
+
transform: rotate(90deg)
|
@@ -0,0 +1,68 @@
|
|
1
|
+
// Gray
|
2
|
+
$gray: color(gray)
|
3
|
+
$gray-light: color(gray, light)
|
4
|
+
$gray-lighter: color(gray, lighter)
|
5
|
+
$gray-lightest: color(gray, lightest)
|
6
|
+
$gray-dark: color(gray, dark)
|
7
|
+
$gray-darkest: color(gray, darkest)
|
8
|
+
|
9
|
+
// Green
|
10
|
+
$green: color(green)
|
11
|
+
$green-light: color(green, light)
|
12
|
+
$green-lightest: color(green, lightest)
|
13
|
+
$green-dark: color(green, dark)
|
14
|
+
$green-darkest: color(green, darkest)
|
15
|
+
|
16
|
+
// Blue
|
17
|
+
$blue: color(blue)
|
18
|
+
$blue-light: color(blue, light)
|
19
|
+
$blue-lightest: color(blue, lightest)
|
20
|
+
$blue-dark: color(blue, dark)
|
21
|
+
$blue-darkest: color(blue, darkest)
|
22
|
+
|
23
|
+
// Teal
|
24
|
+
$teal: color(teal)
|
25
|
+
$teal-light: color(teal, light)
|
26
|
+
$teal-lightest: color(teal, lightest)
|
27
|
+
$teal-dark: color(teal, dark)
|
28
|
+
$teal-darkest: color(teal, darkest)
|
29
|
+
|
30
|
+
// Red
|
31
|
+
$red: color(red)
|
32
|
+
$red-light: color(red, light)
|
33
|
+
$red-lightest: color(red, lightest)
|
34
|
+
$red-dark: color(red, dark)
|
35
|
+
$red-darkest: color(red, darkest)
|
36
|
+
|
37
|
+
// Yellow
|
38
|
+
$yellow: color(yellow)
|
39
|
+
$yellow-light: color(yellow, light)
|
40
|
+
$yellow-lightest: color(yellow, lightest)
|
41
|
+
$yellow-dark: color(yellow, dark)
|
42
|
+
$yellow-darker: color(yellow, darker)
|
43
|
+
$yellow-darkest: color(yellow, darkest)
|
44
|
+
|
45
|
+
// Orange
|
46
|
+
$orange: color(orange)
|
47
|
+
$orange-light: color(orange, light)
|
48
|
+
$orange-lightest: color(orange, lightest)
|
49
|
+
$orange-dark: color(orange, dark)
|
50
|
+
$orange-darkest: color(orange, darkest)
|
51
|
+
|
52
|
+
// Coral
|
53
|
+
$coral: color(coral)
|
54
|
+
$coral-light: color(coral, light)
|
55
|
+
$coral-lighter: color(coral, lighter)
|
56
|
+
$coral-lightest: color(coral, lightest)
|
57
|
+
$coral-dark: color(coral, dark)
|
58
|
+
$coral-darker: color(coral, darker)
|
59
|
+
$coral-darkest: color(coral, darkest)
|
60
|
+
|
61
|
+
// Purple
|
62
|
+
$purple: color(purple)
|
63
|
+
$purple-light: color(purple, light)
|
64
|
+
$purple-lighter: color(purple, lighter)
|
65
|
+
$purple-lightest: color(purple, lightest)
|
66
|
+
$purple-dark: color(purple, dark)
|
67
|
+
$purple-darker: color(purple, darker)
|
68
|
+
$purple-darkest: color(purple, darkest)
|