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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +34 -0
- data/bin/sakura +3 -0
- data/lib/sakura_toolkit.rb +3 -0
- data/lib/sakura_toolkit/cli.rb +27 -0
- data/lib/sakura_toolkit/engine.rb +5 -0
- data/lib/sakura_toolkit/version.rb +3 -0
- data/toolkit/sakura.scss +7 -0
- data/toolkit/sakura/_animation.scss +2 -0
- data/toolkit/sakura/_ui.scss +9 -0
- data/toolkit/sakura/_utilities.scss +4 -0
- data/toolkit/sakura/_variables.scss +2 -0
- data/toolkit/sakura/animation/_slides.scss +18 -0
- data/toolkit/sakura/animation/_transitions.scss +63 -0
- data/toolkit/sakura/ui/_base.scss +7 -0
- data/toolkit/sakura/ui/_components.scss +8 -0
- data/toolkit/sakura/ui/_grid.scss +39 -0
- data/toolkit/sakura/ui/_recipes.scss +3 -0
- data/toolkit/sakura/ui/_typography.scss +38 -0
- data/toolkit/sakura/ui/components/_buttons.scss +49 -0
- data/toolkit/sakura/ui/components/_forms.scss +0 -0
- data/toolkit/sakura/ui/components/_icons.scss +11 -0
- data/toolkit/sakura/ui/icons.svg +12 -0
- data/toolkit/sakura/ui/recipes/_cards.scss +10 -0
- data/toolkit/sakura/ui/recipes/_modals.scss +0 -0
- data/toolkit/sakura/ui/recipes/_notifications.scss +44 -0
- data/toolkit/sakura/utilities/_functions.scss +3 -0
- data/toolkit/sakura/utilities/_media_queries.scss +64 -0
- data/toolkit/sakura/utilities/_mixins.scss +153 -0
- data/toolkit/sakura/utilities/_reset.scss +53 -0
- metadata +103 -0
checksums.yaml
ADDED
@@ -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
|
data/MIT-LICENSE
ADDED
@@ -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.
|
data/Rakefile
ADDED
@@ -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
|
data/bin/sakura
ADDED
@@ -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
|
data/toolkit/sakura.scss
ADDED
@@ -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,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,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
|
+
}
|
File without changes
|
@@ -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>
|
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,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: []
|