sakura_toolkit 0.0.2

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2541b2329b1ee22e491160c8532077cb15c65a5b
4
+ data.tar.gz: 08a97c2abe93735a87d9cd7ad62bd88642ee3e35
5
+ SHA512:
6
+ metadata.gz: 47ad299e965da46328d0c99813b3bea6b710964964845fa1a02f5aacca9daff75238756b14bf92ef61b61fba28aa2168b27f92a5148d794dee5aac7260acc799
7
+ data.tar.gz: 9bb283ee9a0f996247c934fc19a11ea977cf92927e4d975928dd47b8c44d8921dd191cd6c7b819d141c4ba94e0cc72c1c4a2366bba58b734a772962ae423f663
@@ -0,0 +1,20 @@
1
+ Copyright 2016 Thomas Cullen
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,34 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'SakuraToolkit'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+
18
+
19
+
20
+
21
+
22
+ Bundler::GemHelper.install_tasks
23
+
24
+ require 'rake/testtask'
25
+
26
+ Rake::TestTask.new(:test) do |t|
27
+ t.libs << 'lib'
28
+ t.libs << 'test'
29
+ t.pattern = 'test/**/*_test.rb'
30
+ t.verbose = false
31
+ end
32
+
33
+
34
+ task default: :test
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../lib/sakura_toolkit/cli.rb'
3
+ SakuraToolkit::Cli.start
@@ -0,0 +1,3 @@
1
+ module SakuraToolkit
2
+ require 'sakura_toolkit/engine' if defined?(Rails)
3
+ end
@@ -0,0 +1,27 @@
1
+ require 'pathname'
2
+ require 'fileutils'
3
+ require 'thor'
4
+
5
+ module SakuraToolkit
6
+ class Cli < Thor
7
+ desc 'install', 'Install sakura to the current directory'
8
+ def install
9
+ FileUtils.cp_r sakura_dir_path, install_path
10
+ FileUtils.cp sakura_path, File.join(install_path, 'sakura.scss')
11
+ end
12
+
13
+ private
14
+
15
+ def install_path
16
+ Dir.pwd
17
+ end
18
+
19
+ def sakura_dir_path
20
+ File.join(File.dirname(__FILE__), '../../toolkit/sakura/')
21
+ end
22
+
23
+ def sakura_path
24
+ File.join(File.dirname(__FILE__), '../../toolkit/sakura.scss')
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,5 @@
1
+ module SakuraToolkit
2
+ class Engine < ::Rails::Engine
3
+ config.assets.paths << File.expand_path('../../../toolkit/', __FILE__)
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module SakuraToolkit
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,7 @@
1
+ @import 'sakura/ui';
2
+ @import 'sakura/utilities';
3
+ @import 'sakura/animation';
4
+
5
+ @mixin sakura {
6
+ @include components;
7
+ }
@@ -0,0 +1,2 @@
1
+ @import 'animation/slides';
2
+ @import 'animation/transitions';
@@ -0,0 +1,9 @@
1
+ @import 'ui/grid';
2
+ @import 'ui/base';
3
+ @import 'ui/recipes';
4
+ @import 'ui/components';
5
+
6
+ @mixin ui-kit {
7
+ @include reset;
8
+ @include ui-typography;
9
+ }
@@ -0,0 +1,4 @@
1
+ @import 'utilities/reset';
2
+ @import 'utilities/mixins';
3
+ @import 'utilities/functions';
4
+ @import 'utilities/media_queries';
@@ -0,0 +1,2 @@
1
+ /// @type Cubic Bezier
2
+ $easing-pop: cubic-bezier(.65, .2, .25, 1.22) !default;
@@ -0,0 +1,18 @@
1
+ @import '../utilities/mixins';
2
+
3
+ @mixin animations-slides {
4
+
5
+ // slide-in-left
6
+ @include keyframes('slide-in-left') {
7
+ 0% {
8
+ opacity: 0;
9
+ @include transform(translate(200px, 0));
10
+ }
11
+
12
+ 100% {
13
+ opacity: 1;
14
+ @include transform(translate(0, 0));
15
+ }
16
+ }
17
+
18
+ }
@@ -0,0 +1,63 @@
1
+ @import '../utilities/mixins';
2
+
3
+ $pop: cubic-bezier(.65, .2, .25, 1.22);
4
+
5
+ /// Sets the transition property for an element
6
+ /// @param $values
7
+ /// The values for the transition attribute.
8
+ /// @example scss - Usage
9
+ /// .example {
10
+ /// @include transition(all 0.3s $pop);
11
+ /// }
12
+ @mixin transition($values) {
13
+ @include prefix(transition, $values, webkit moz);
14
+ }
15
+
16
+ /// Scales the element
17
+ /// @param $to
18
+ /// The value to scale to.
19
+ /// @param $duration
20
+ /// The amount of time it should take for the transition to occur.
21
+ /// @param $easing
22
+ /// The timing function for the transition.
23
+ /// @example scss - Usage
24
+ /// .example:hover {
25
+ /// @include transition-scale(2);
26
+ /// }
27
+ @mixin transition-scale($to: 1, $duration: .3s, $easing: $pop) {
28
+ @include visible();
29
+ @include transition(transform $duration $easing);
30
+ @include transform(scale($to));
31
+ }
32
+
33
+ /// Slides the element along the X axis
34
+ /// @param $to
35
+ /// The amount of px's to move the element.
36
+ /// @param $duration
37
+ /// The amount of time it should take for the transition to occur.
38
+ /// @param $easing
39
+ /// The timing function for the transition.
40
+ /// @example scss - Usage
41
+ /// .example:hover {
42
+ /// @include transition-slide-x(100px);
43
+ /// }
44
+ @mixin transition-slide-x($amount: 0, $duration: .3s, $easing: $pop) {
45
+ @include transition(transform $duration $easing);
46
+ @include transform(translate($amount, 0));
47
+ }
48
+
49
+ /// Slides the element along the Y axis
50
+ /// @param $to
51
+ /// The amount of px's to move the element.
52
+ /// @param $duration
53
+ /// The amount of time it should take for the transition to occur.
54
+ /// @param $easing
55
+ /// The timing function for the transition.
56
+ /// @example scss - Usage
57
+ /// .example:hover {
58
+ /// @include transition-slide-y(100px);
59
+ /// }
60
+ @mixin transition-slide-y($amount: 0, $duration: .3s, $easing: $pop) {
61
+ @include transition(transform $duration $easing);
62
+ @include transform(translate(0, $amount));
63
+ }
@@ -0,0 +1,7 @@
1
+ @import 'typography';
2
+ @import '../utilities/reset';
3
+
4
+ @mixin ui-base {
5
+ @include reset;
6
+ @include ui-typography;
7
+ }
@@ -0,0 +1,8 @@
1
+ @import 'components/icons';
2
+ @import 'components/forms';
3
+ @import 'components/buttons';
4
+
5
+ @mixin components {
6
+ @include components-icons;
7
+ @include components-buttons;
8
+ }
@@ -0,0 +1,39 @@
1
+ @import '../utilities/functions';
2
+
3
+ $sassy-grid-width: 1020 !default;
4
+ $sassy-column-width: 50 !default;
5
+ $sassy-column-padding: 35 !default;
6
+
7
+ @mixin ui-grid($class: '.grid', $column_selector: '.col') {
8
+ $column_selector: $column_selector;
9
+ #{$class} {
10
+ width: 100%;
11
+ margin: 0 auto;
12
+ max-width: $sassy-grid-width;
13
+
14
+ $padding-percentage: percentage_of($sassy-column-padding, $sassy-grid-width);
15
+
16
+ #{$column_selector} {
17
+ display: inline-block;
18
+ box-sizing: border-box;
19
+ margin-left: $padding-percentage / 2;
20
+ margin-right: $padding-percentage / 2;
21
+ }
22
+
23
+ @for $i from 1 to 13 {
24
+ $current-column-width: ($sassy-column-width * $i + $sassy-column-padding * ($i - 1)) / $sassy-grid-width;
25
+
26
+ #{$column_selector}-#{$i} {
27
+ @extend #{$column_selector};
28
+ width: ($current-column-width * 100%);
29
+ }
30
+ }
31
+
32
+ // Responsive Columns
33
+ @media only screen and (max-width : 600px) {
34
+ @for $i from 1 to 13 {
35
+ #{$column_selector}-#{$i} { width: 100%; }
36
+ }
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,3 @@
1
+ @import 'recipes/cards';
2
+ @import 'recipes/modals';
3
+ @import 'recipes/notifications';
@@ -0,0 +1,38 @@
1
+ $textCopy: #707F8E !default;
2
+ $textHeader: #474D54 !default;
3
+ $font-family: 'Lato', sans-serif !default;
4
+
5
+ @mixin ui-typography($base: 15px) {
6
+
7
+ * { font-family: $font-family; }
8
+ html, body { font-size: $base; }
9
+
10
+ h1 {
11
+ font-weight: 500;
12
+ font-size: 2.3rem;
13
+ line-height: 50px;
14
+ color: $textHeader;
15
+ margin-bottom: 20px;
16
+ }
17
+
18
+ h2 {
19
+ font-weight: 500;
20
+ font-size: 2.8rem;
21
+ line-height: 44px;
22
+ color: $textHeader;
23
+ }
24
+
25
+ h3 {
26
+ font-weight: 300;
27
+ font-size: 2.4rem;
28
+ line-height: 32px;
29
+ color: $textHeader;
30
+ }
31
+
32
+ p{
33
+ color: $textCopy;
34
+ line-height: 28px;
35
+ font-size: inherit;
36
+ margin-bottom: 30px;
37
+ }
38
+ }
@@ -0,0 +1,49 @@
1
+ $buttonText: #fff !default;
2
+ $buttonBG: #93A6B8 !default;
3
+ $actionButtonText: #fff !default;
4
+ $actionButtonBG: #459FF5 !default;
5
+ $warningButtonText: #fff !default;
6
+ $warningButtonBG: #FD6686 !default;
7
+
8
+ @mixin components-buttons($class: '.button') {
9
+ #{$class} { @extend %button; }
10
+ #{$class}-warning { @extend %button-warning; }
11
+ #{$class}-disabled { @extend %button-disabled; }
12
+ }
13
+
14
+ %button {
15
+ border: none;
16
+ cursor: pointer;
17
+ font-size: 0.9em;
18
+ border-radius: 3px;
19
+ color: $buttonText;
20
+ display: inline-block;
21
+ text-decoration: none;
22
+ padding: 8px 15px 8px 15px;
23
+ background-color: $buttonBG;
24
+ box-shadow: 0 1px 3px rgba(#000, 0.1);
25
+ &:hover { background: darken($buttonBG, 5); }
26
+ }
27
+
28
+ %button-action {
29
+ @extend %button;
30
+ color: $actionButtonText;
31
+ background-color: $actionButtonBG;
32
+ &:hover { background-color: darken($actionButtonBG, 5); }
33
+ }
34
+
35
+ %button-warning {
36
+ @extend %button;
37
+ color: $warningButtonText;
38
+ background-color: $warningButtonBG;
39
+ &:hover { background-color: darken($warningButtonBG, 5); }
40
+ }
41
+
42
+ %button-disabled {
43
+ @extend %button;
44
+ color: #fff;
45
+ box-shadow: none;
46
+ cursor: not-allowed;
47
+ background-color: #D6DDE4;
48
+ &:hover { background-color: darken(#D6DDE4, 5); }
49
+ }
@@ -0,0 +1,11 @@
1
+ @mixin components-icons($class: '.icon') {
2
+ #{$class} {
3
+ width: 20px;
4
+ height: 20px;
5
+ display: inline-block;
6
+ vertical-align: middle;
7
+ background-repeat: no-repeat;
8
+ background-position: -20px -20px;
9
+ background-image: url('toolkit/ui/icons.svg');
10
+ }
11
+ }
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="400px" height="400px" viewBox="0 0 400 400" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
3
+ <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch -->
4
+ <title>icons</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
8
+ <g id="icons" sketch:type="MSArtboardGroup" fill="#5C636B">
9
+ <path d="M30,38 L30,38 C34.418278,38 38,34.418278 38,30 C38,25.581722 34.418278,22 30,22 C25.581722,22 22,25.581722 22,30 C22,34.418278 25.581722,38 30,38 L30,38 Z M30,40 L30,40 C24.4771525,40 20,35.5228475 20,30 C20,24.4771525 24.4771525,20 30,20 C35.5228475,20 40,24.4771525 40,30 C40,35.5228475 35.5228475,40 30,40 L30,40 Z" id="Shape" sketch:type="MSShapeGroup"></path>
10
+ </g>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,10 @@
1
+ @mixin white-tile($padding) {
2
+ @if $padding {
3
+ padding: $padding;
4
+ }
5
+
6
+ border-radius: 5px;
7
+ background-color: white;
8
+ box-shadow: 0 1px 3px rgba(#000, .15),
9
+ 0 0 10px rgba(#000, .1);
10
+ }
File without changes
@@ -0,0 +1,44 @@
1
+ @import '../../utilities/mixins';
2
+ @import '../../variables';
3
+
4
+ %notification {
5
+ @include position(fixed, 10px 10px null null);
6
+ @include animation(notification 3s $easing-pop forwards);
7
+ width: 280px;
8
+ color: #707F8E;
9
+ font-size: 14px;
10
+ line-height: 20px;
11
+ border-radius: 5px;
12
+ padding: 15px 20px;
13
+ background-color: white;
14
+ box-shadow: 0 1px 3px rgba(#000, .15),
15
+ 0 0 10px rgba(#000, .1);
16
+ }
17
+
18
+ @mixin recipes-notification($class: '.notification') {
19
+ #{$class} {
20
+ @extend %notification;
21
+ }
22
+
23
+ @include keyframes(notification) {
24
+ 0% {
25
+ opacity: 0;
26
+ @include transform(translate(200px, 0));
27
+ }
28
+
29
+ 20% {
30
+ opacity: 1;
31
+ @include transform(translate(0, 0));
32
+ }
33
+
34
+ 80% {
35
+ opacity: 1;
36
+ @include transform(translate(0, 0));
37
+ }
38
+
39
+ 100% {
40
+ opacity: 0;
41
+ @include transform(translate(0, 100px));
42
+ }
43
+ };
44
+ }
@@ -0,0 +1,3 @@
1
+ @function percentage_of($a, $b) {
2
+ @return ($a / $b) * 100%;
3
+ }
@@ -0,0 +1,64 @@
1
+ $mobile-width-breakpoint: 420px !default;
2
+ $mobile-height-breakpoint: 700px !default;
3
+ /// Outputs the media query for mobile devices. The mixin can also be used
4
+ /// inside an elements styling.
5
+ /// @example scss - Usage
6
+ /// @incude for-mobile {
7
+ /// .example { ... }
8
+ /// }
9
+ ///
10
+ /// .example {
11
+ /// width: 200px;
12
+ /// @include for-mobile { width: 100%; }
13
+ /// }
14
+ @mixin for-mobile($orientation: portrait) {
15
+ @media only screen
16
+ and (min-device-width : $mobile-width-breakpoint)
17
+ and (max-device-width : $mobile-height-breakpoint)
18
+ and (orientation: $orientation) {
19
+ @content;
20
+ }
21
+ }
22
+
23
+ $tablet-width-breakpoint: 770px !default;
24
+ $tablet-height-breakpoint: 1024px !default;
25
+ /// Outputs the media query for tablet devices. The mixin can also be used
26
+ /// inside an elements styling.
27
+ /// @example scss - Usage
28
+ /// @incude for-tablet {
29
+ /// .example { ... }
30
+ /// }
31
+ ///
32
+ /// .example {
33
+ /// width: 200px;
34
+ /// @include for-tablet { width: 100%; }
35
+ /// }
36
+ @mixin for-tablet($orientation: portrait) {
37
+ @media only screen
38
+ and (min-device-width : $tablet-width-breakpoint)
39
+ and (max-device-width : $tablet-height-breakpoint)
40
+ and (orientation: $orientation) {
41
+ @content;
42
+ }
43
+ }
44
+
45
+ /// Outputs the media query for retina laptop devices. The mixin can also be used
46
+ /// inside an elements styling.
47
+ /// @example scss - Usage
48
+ /// @incude for-retina {
49
+ /// .example { ... }
50
+ /// }
51
+ ///
52
+ /// .example {
53
+ /// width: 200px;
54
+ /// @include for-retina { width: 100%; }
55
+ /// }
56
+ @mixin for-retina {
57
+ @media screen
58
+ and (min-device-width: 1200px)
59
+ and (max-device-width: 1600px)
60
+ and (-webkit-min-device-pixel-ratio: 2)
61
+ and (min-resolution: 192dpi) {
62
+ @content;
63
+ }
64
+ }
@@ -0,0 +1,153 @@
1
+ /// Prefixes an attribute with a given list of vendors.
2
+ /// @param $attr
3
+ /// The attribute title.
4
+ /// @param $value
5
+ /// The attribute value.
6
+ /// @param $vendors
7
+ /// The list of vendors you would like to prefix for.
8
+ /// @example scss - Usage
9
+ /// .example {
10
+ /// @include prefix(border-radius, 5px, webkit moz mz);
11
+ /// }
12
+ @mixin prefix($attr, $value, $vendors: webkit moz mz) {
13
+ #{$attr}: $value;
14
+ @each $vendor in $vendors {
15
+ -#{$vendor}-#{$attr}: $value;
16
+ }
17
+ }
18
+
19
+ /// Positions an element.
20
+ /// @param $position
21
+ /// The position value for the element styling
22
+ /// @param $positioning
23
+ /// The top, right, bottom and left attribute values in that order. Values
24
+ /// that are set to null will be ignored.
25
+ /// @example scss - Example
26
+ /// .example {
27
+ /// @include position(absolute, 50px null null 20px);
28
+ /// }
29
+ @mixin position($position: absolute, $positioning: null null null null) {
30
+ position: $position;
31
+
32
+ $coordinates: (
33
+ top: nth($positioning, 1),
34
+ left: nth($positioning, 4),
35
+ right: nth($positioning, 2),
36
+ bottom: nth($positioning, 3)
37
+ );
38
+
39
+ @each $side, $value in $coordinates {
40
+ @if $value {
41
+ #{$side}: $value;
42
+ }
43
+ }
44
+ }
45
+
46
+ /// Applys the transform attribute to an element with all of its vendor prefixes
47
+ /// @param $values
48
+ /// The value of the transform attribute
49
+ /// @example scss - Usage
50
+ /// .example {
51
+ /// @include transform(translate(20px, 0));
52
+ /// }
53
+ @mixin transform($values) {
54
+ @include prefix(transform, $values, webkit moz);
55
+ }
56
+
57
+ /// Hides an element. This uses opacity and visibility rather than display: none
58
+ /// to hide an element so that it can be used with animations and transitions.
59
+ /// @example scss - Usage
60
+ /// .example {
61
+ /// @include hidden;
62
+ /// }
63
+ @mixin hidden {
64
+ opacity: 0;
65
+ visibility: hidden;
66
+ }
67
+
68
+ /// Makes an element visible. This uses opacity and visiblility so that it can
69
+ /// be used with animations and transitions.
70
+ /// @example scss - Usage
71
+ /// .example {
72
+ /// @include visible;
73
+ /// }
74
+ @mixin visible {
75
+ opacity: 1;
76
+ visibility: visible;
77
+ }
78
+
79
+ /// Generates a triangle
80
+ /// @param $direction
81
+ /// The direction the triangle should be facing
82
+ /// @param $color
83
+ /// The colour of the triangle
84
+ /// @param $size
85
+ /// The size of the triangle
86
+ /// @example scss - Usage
87
+ /// .example {
88
+ /// @include triangle('down', #000, 10px);
89
+ /// }
90
+ @mixin triangle($direction: 'up', $color: #fff, $size: 5px) {
91
+ width: 0;
92
+ height: 0;
93
+ display: block;
94
+
95
+ @if $direction == 'top' {
96
+ border-left: $size solid transparent;
97
+ border-right: $size solid transparent;
98
+ border-bottom: $size solid $color;
99
+ } @else if $direction == 'right' {
100
+ border-top: $size solid transparent;
101
+ border-bottom: $size solid transparent;
102
+ border-left: $size solid $color;
103
+ } @else if $direction == 'bottom' {
104
+ border-top: $size solid $color;
105
+ border-right: $size solid transparent;
106
+ border-left: $size solid transparent;
107
+ } @else if $direction == 'left' {
108
+ border-top: $size solid transparent;
109
+ border-right: $size solid $color;
110
+ border-bottom: $size solid transparent;
111
+ } @else if $direction == 'top-left' {
112
+ border-top: $size solid $color;
113
+ border-right: $size solid transparent;
114
+ } @else if $direction == 'top-right' {
115
+ border-top: $size solid $color;
116
+ border-left: $size solid transparent;
117
+ } @else if $direction == 'bottom-left' {
118
+ border-bottom: $size solid $color;
119
+ border-right: $size solid transparent;
120
+ } @else if $direction == 'bottom-right' {
121
+ border-bottom: $size solid $color;
122
+ border-left: $size solid transparent;
123
+ }
124
+ }
125
+
126
+ // clear-fix
127
+ @mixin clear-fix {
128
+ &::after {
129
+ clear: both;
130
+ content: '';
131
+ display: table;
132
+ }
133
+ }
134
+
135
+
136
+ @mixin keyframes($animation) {
137
+ @-webkit-keyframes #{$animation} {
138
+ @content;
139
+ }
140
+
141
+ @-moz-keyframes #{$animation} {
142
+ @content;
143
+ }
144
+
145
+ @keyframes #{$animation} {
146
+ @content;
147
+ }
148
+ }
149
+
150
+
151
+ @mixin animation($values) {
152
+ @include prefix(animation, $values);
153
+ }
@@ -0,0 +1,53 @@
1
+ /// Outputs eric meyers CSS reset.
2
+ /// @example scss - Output
3
+ /// @import reset;
4
+ @mixin reset {
5
+ /* http://meyerweb.com/eric/tools/css/reset/
6
+ v2.0 | 20110126
7
+ License: none (public domain)
8
+ */
9
+
10
+ html, body, div, span, applet, object, iframe,
11
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
12
+ a, abbr, acronym, address, big, cite, code,
13
+ del, dfn, em, img, ins, kbd, q, s, samp,
14
+ small, strike, strong, sub, sup, tt, var,
15
+ b, u, i, center,
16
+ dl, dt, dd, ol, ul, li,
17
+ fieldset, form, label, legend,
18
+ table, caption, tbody, tfoot, thead, tr, th, td,
19
+ article, aside, canvas, details, embed,
20
+ figure, figcaption, footer, header, hgroup,
21
+ menu, nav, output, ruby, section, summary,
22
+ time, mark, audio, video {
23
+ margin: 0;
24
+ padding: 0;
25
+ border: 0;
26
+ font-size: 100%;
27
+ vertical-align: baseline;
28
+ }
29
+ /* HTML5 display-role reset for older browsers */
30
+ article, aside, details, figcaption, figure,
31
+ footer, header, hgroup, menu, nav, section {
32
+ display: block;
33
+ }
34
+ body {
35
+ line-height: 1;
36
+ }
37
+ ol, ul {
38
+ list-style: none;
39
+ }
40
+ blockquote, q {
41
+ quotes: none;
42
+ }
43
+ blockquote:before, blockquote:after,
44
+ q:before, q:after {
45
+ content: '';
46
+ content: none;
47
+ }
48
+ table {
49
+ border-collapse: collapse;
50
+ border-spacing: 0;
51
+ }
52
+ * { box-sizing: border-box; }
53
+ }
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sakura_toolkit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Thomas Cullen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.19'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.19'
41
+ description: A lightweight SASS framework that lets you keep control
42
+ email:
43
+ - thomascullen92@gmail.com
44
+ executables:
45
+ - sakura
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - MIT-LICENSE
50
+ - Rakefile
51
+ - bin/sakura
52
+ - lib/sakura_toolkit.rb
53
+ - lib/sakura_toolkit/cli.rb
54
+ - lib/sakura_toolkit/engine.rb
55
+ - lib/sakura_toolkit/version.rb
56
+ - toolkit/sakura.scss
57
+ - toolkit/sakura/_animation.scss
58
+ - toolkit/sakura/_ui.scss
59
+ - toolkit/sakura/_utilities.scss
60
+ - toolkit/sakura/_variables.scss
61
+ - toolkit/sakura/animation/_slides.scss
62
+ - toolkit/sakura/animation/_transitions.scss
63
+ - toolkit/sakura/ui/_base.scss
64
+ - toolkit/sakura/ui/_components.scss
65
+ - toolkit/sakura/ui/_grid.scss
66
+ - toolkit/sakura/ui/_recipes.scss
67
+ - toolkit/sakura/ui/_typography.scss
68
+ - toolkit/sakura/ui/components/_buttons.scss
69
+ - toolkit/sakura/ui/components/_forms.scss
70
+ - toolkit/sakura/ui/components/_icons.scss
71
+ - toolkit/sakura/ui/icons.svg
72
+ - toolkit/sakura/ui/recipes/_cards.scss
73
+ - toolkit/sakura/ui/recipes/_modals.scss
74
+ - toolkit/sakura/ui/recipes/_notifications.scss
75
+ - toolkit/sakura/utilities/_functions.scss
76
+ - toolkit/sakura/utilities/_media_queries.scss
77
+ - toolkit/sakura/utilities/_mixins.scss
78
+ - toolkit/sakura/utilities/_reset.scss
79
+ homepage: https://github.com/thomascullen/sakura
80
+ licenses:
81
+ - MIT
82
+ metadata: {}
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 2.5.1
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: The Sakura Toolkit
103
+ test_files: []