archetype 0.0.1.pre.1 → 0.0.1.pre.3.00dfd9a
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/CHANGELOG.md +88 -0
- data/LICENSE +16 -0
- data/README.md +87 -1
- data/VERSION.yml +6 -0
- data/lib/README.rdoc +4 -0
- data/lib/archetype.rb +45 -0
- data/lib/archetype/functions.rb +9 -0
- data/lib/archetype/functions/hash.rb +149 -0
- data/lib/archetype/functions/helpers.rb +125 -0
- data/lib/archetype/functions/styleguide_memoizer.rb +61 -0
- data/lib/archetype/sass_extensions.rb +6 -0
- data/lib/archetype/sass_extensions/functions.rb +14 -0
- data/lib/archetype/sass_extensions/functions/environment.rb +14 -0
- data/lib/archetype/sass_extensions/functions/lists.rb +284 -0
- data/lib/archetype/sass_extensions/functions/locale.rb +77 -0
- data/lib/archetype/sass_extensions/functions/numbers.rb +19 -0
- data/lib/archetype/sass_extensions/functions/styleguide.rb +406 -0
- data/lib/archetype/sass_extensions/functions/ui.rb +59 -0
- data/lib/archetype/sass_extensions/functions/version.rb +95 -0
- data/lib/archetype/version.rb +75 -0
- data/stylesheets/_archetype.scss +2 -0
- data/stylesheets/archetype/_base.scss +46 -0
- data/stylesheets/archetype/_config.scss +366 -0
- data/stylesheets/archetype/_grid.scss +3 -0
- data/stylesheets/archetype/_hacks.scss +72 -0
- data/stylesheets/archetype/_init.scss +23 -0
- data/stylesheets/archetype/_styleguide.scss +6 -0
- data/stylesheets/archetype/_ui.scss +326 -0
- data/stylesheets/archetype/_util.scss +12 -0
- data/stylesheets/archetype/base/_h5bp.scss +307 -0
- data/stylesheets/archetype/base/_hybrid.scss +25 -0
- data/stylesheets/archetype/base/_normalize.scss +595 -0
- data/stylesheets/archetype/base/_reset.scss +72 -0
- data/stylesheets/archetype/grid/_config.scss +14 -0
- data/stylesheets/archetype/grid/_grid.scss +391 -0
- data/stylesheets/archetype/styleguide/_components.scss +25 -0
- data/stylesheets/archetype/styleguide/_helpers.scss +215 -0
- data/stylesheets/archetype/styleguide/_primitives.scss +10 -0
- data/stylesheets/archetype/styleguide/_styleguide.scss +41 -0
- data/stylesheets/archetype/styleguide/components/_alerts.scss +59 -0
- data/stylesheets/archetype/styleguide/components/_annotations.scss +27 -0
- data/stylesheets/archetype/styleguide/components/_bristol.scss +15 -0
- data/stylesheets/archetype/styleguide/components/_button_groups.scss +47 -0
- data/stylesheets/archetype/styleguide/components/_button_toolbars.scss +17 -0
- data/stylesheets/archetype/styleguide/components/_buttons.scss +338 -0
- data/stylesheets/archetype/styleguide/components/_canvas.scss +15 -0
- data/stylesheets/archetype/styleguide/components/_carets.scss +336 -0
- data/stylesheets/archetype/styleguide/components/_closes.scss +63 -0
- data/stylesheets/archetype/styleguide/components/_container.scss +27 -0
- data/stylesheets/archetype/styleguide/components/_copy.scss +85 -0
- data/stylesheets/archetype/styleguide/components/_flyouts.scss +52 -0
- data/stylesheets/archetype/styleguide/components/_headings.scss +33 -0
- data/stylesheets/archetype/styleguide/components/_headlines.scss +63 -0
- data/stylesheets/archetype/styleguide/components/_hovercards.scss +27 -0
- data/stylesheets/archetype/styleguide/components/_icons.scss +17 -0
- data/stylesheets/archetype/styleguide/components/_identities.scss +34 -0
- data/stylesheets/archetype/styleguide/components/_links.scss +66 -0
- data/stylesheets/archetype/styleguide/components/_loaders.scss +154 -0
- data/stylesheets/archetype/styleguide/components/_menu_items.scss +31 -0
- data/stylesheets/archetype/styleguide/components/_module.scss +15 -0
- data/stylesheets/archetype/styleguide/components/_pullquotes.scss +29 -0
- data/stylesheets/archetype/styleguide/components/_punchcut.scss +18 -0
- data/stylesheets/archetype/styleguide/components/_tooltips.scss +28 -0
- data/stylesheets/archetype/styleguide/primitives/_animations.scss +17 -0
- data/stylesheets/archetype/styleguide/primitives/_dimensions.scss +50 -0
- data/stylesheets/archetype/styleguide/primitives/_glyphs.scss +11 -0
- data/stylesheets/archetype/styleguide/primitives/_misc.scss +8 -0
- data/stylesheets/archetype/styleguide/primitives/_palettes.scss +94 -0
- data/stylesheets/archetype/styleguide/primitives/_shadows.scss +23 -0
- data/stylesheets/archetype/styleguide/primitives/_sprites.scss +46 -0
- data/stylesheets/archetype/styleguide/primitives/_textures.scss +10 -0
- data/stylesheets/archetype/styleguide/primitives/_typography.scss +56 -0
- data/stylesheets/archetype/util/_debug.scss +40 -0
- data/stylesheets/archetype/util/_lists.scss +57 -0
- data/stylesheets/archetype/util/_misc.scss +108 -0
- data/stylesheets/archetype/util/_rtl.scss +279 -0
- data/stylesheets/archetype/util/_spacing.scss +78 -0
- data/stylesheets/archetype/util/_styles.scss +466 -0
- data/stylesheets/archetype/util/_targeting.scss +210 -0
- data/stylesheets/archetype/util/_units.scss +18 -0
- data/templates/example/index.html +40 -0
- data/templates/example/manifest.rb +13 -0
- data/templates/example/screen.scss +99 -0
- data/templates/example/vendor/archetype/animations/loaders/large/large.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/large/large_dark.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/large/large_dark_static.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/large/large_static.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/medium/medium.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/medium/medium_dark.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/medium/medium_dark_static.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/medium/medium_static.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/small/small.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/small/small_dark.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/small/small_dark_static.png +0 -0
- data/templates/example/vendor/archetype/animations/loaders/small/small_static.png +0 -0
- data/templates/example/vendor/archetype/fontawesome-webfont.eot +0 -0
- data/templates/example/vendor/archetype/fontawesome-webfont.svg +255 -0
- data/templates/example/vendor/archetype/fontawesome-webfont.ttf +0 -0
- data/templates/example/vendor/archetype/fontawesome-webfont.woff +0 -0
- data/templates/project/manifest.rb +9 -0
- data/templates/project/screen.scss +1 -0
- data/templates/project/vendor/archetype/animations/loaders/large/large.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/large/large_dark.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/large/large_dark_static.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/large/large_static.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/medium/medium.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/medium/medium_dark.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/medium/medium_dark_static.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/medium/medium_static.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/small/small.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/small/small_dark.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/small/small_dark_static.png +0 -0
- data/templates/project/vendor/archetype/animations/loaders/small/small_static.png +0 -0
- data/templates/project/vendor/archetype/fontawesome-webfont.eot +0 -0
- data/templates/project/vendor/archetype/fontawesome-webfont.svg +255 -0
- data/templates/project/vendor/archetype/fontawesome-webfont.ttf +0 -0
- data/templates/project/vendor/archetype/fontawesome-webfont.woff +0 -0
- data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.eot +0 -0
- data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.svg +255 -0
- data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.woff +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large_dark.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large_dark_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium_dark.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium_dark_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small_dark.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small_dark_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small_static.png +0 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/sprites/hovercard_tip.png +0 -0
- data/test/fixtures/stylesheets/archetype/config.rb +19 -0
- data/test/fixtures/stylesheets/archetype/expected/b.css +14 -0
- data/test/fixtures/stylesheets/archetype/expected/base.css +349 -0
- data/test/fixtures/stylesheets/archetype/expected/hacks/ie_pseudo.css +11 -0
- data/test/fixtures/stylesheets/archetype/expected/locale.css +23 -0
- data/test/fixtures/stylesheets/archetype/expected/styleguide/buttons.css +2091 -0
- data/test/fixtures/stylesheets/archetype/expected/styleguide/fallback_styles.css +9 -0
- data/test/fixtures/stylesheets/archetype/expected/styleguide/nested_styleguides.css +24 -0
- data/test/fixtures/stylesheets/archetype/expected/styleguide/selective_state.css +174 -0
- data/test/fixtures/stylesheets/archetype/expected/ui/glyph_icon.css +37 -0
- data/test/fixtures/stylesheets/archetype/expected/ui/hide_element.css +8 -0
- data/test/fixtures/stylesheets/archetype/expected/ui/stroke.css +17 -0
- data/test/fixtures/stylesheets/archetype/expected/ui/triangle.css +35 -0
- data/test/fixtures/stylesheets/archetype/expected/utilities/associative.css +9 -0
- data/test/fixtures/stylesheets/archetype/expected/utilities/if-set.css +9 -0
- data/test/fixtures/stylesheets/archetype/expected/utilities/spacing/horizontal-spacing.css +29 -0
- data/test/fixtures/stylesheets/archetype/expected/utilities/spacing/vertical-spacing.css +29 -0
- data/test/fixtures/stylesheets/archetype/expected/utilities/styles/filter.css +11 -0
- data/test/fixtures/stylesheets/archetype/expected/utilities/styles/font-family.css +16 -0
- data/test/fixtures/stylesheets/archetype/expected/utilities/styles/z-index.css +15 -0
- data/test/fixtures/stylesheets/archetype/expected/utilities/targeting/target-browser.css +100 -0
- data/test/fixtures/stylesheets/archetype/expected/utilities/targeting/target-os.css +55 -0
- data/test/fixtures/stylesheets/archetype/source/b.scss +9 -0
- data/test/fixtures/stylesheets/archetype/source/base.scss +3 -0
- data/test/fixtures/stylesheets/archetype/source/hacks/ie_pseudo.scss +13 -0
- data/test/fixtures/stylesheets/archetype/source/locale.scss +43 -0
- data/test/fixtures/stylesheets/archetype/source/styleguide/buttons.scss +18 -0
- data/test/fixtures/stylesheets/archetype/source/styleguide/fallback_styles.scss +22 -0
- data/test/fixtures/stylesheets/archetype/source/styleguide/nested_styleguides.scss +40 -0
- data/test/fixtures/stylesheets/archetype/source/styleguide/selective_state.scss +22 -0
- data/test/fixtures/stylesheets/archetype/source/ui/glyph_icon.scss +13 -0
- data/test/fixtures/stylesheets/archetype/source/ui/hide_element.scss +5 -0
- data/test/fixtures/stylesheets/archetype/source/ui/stroke.scss +13 -0
- data/test/fixtures/stylesheets/archetype/source/ui/triangle.scss +13 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/associative.scss +24 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/if-set.scss +16 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/spacing/horizontal-spacing.scss +27 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/spacing/vertical-spacing.scss +27 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/styles/filter.scss +9 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/styles/font-family.scss +9 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/styles/z-index.scss +18 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-browser.scss +70 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-os.scss +42 -0
- data/test/helpers/diff.rb +49 -0
- data/test/helpers/io.rb +36 -0
- data/test/helpers/test_case.rb +62 -0
- data/test/integrations/archetype_test.rb +126 -0
- data/test/test_helper.rb +26 -0
- data/test/units/sass_extensions_test.rb +207 -0
- metadata +303 -15
@@ -0,0 +1,72 @@
|
|
1
|
+
// @category base
|
2
|
+
|
3
|
+
// leverage the Compass reset functions
|
4
|
+
// this is an adaptation of global-reset()
|
5
|
+
// @mixin base-reset
|
6
|
+
// @param $exclude {List} the list of features to exclude from the reset [html5|page|lists|typography|quotes|embeds|quotes|ime]
|
7
|
+
// @link http://compass-style.org/reference/compass/reset/utilities/#mixin-global-reset
|
8
|
+
@mixin base-reset($exclude: ()) {
|
9
|
+
html, body, div, span, applet, object, iframe,
|
10
|
+
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
11
|
+
a, abbr, acronym, address, big, cite, code,
|
12
|
+
del, dfn, em, img, ins, kbd, q, s, samp,
|
13
|
+
small, strike, strong, sub, sup, tt, var,
|
14
|
+
b, u, i, center,
|
15
|
+
dl, dt, dd, ol, ul, li,
|
16
|
+
fieldset, form, label, legend,
|
17
|
+
table, caption, tbody, tfoot, thead, tr, th, td,
|
18
|
+
article, aside, canvas, details, embed,
|
19
|
+
figure, figcaption, footer, header, hgroup,
|
20
|
+
menu, nav, output, ruby, section, summary,
|
21
|
+
time, mark, audio, video {
|
22
|
+
// PAGE
|
23
|
+
@if(not index($exclude, reset-page)) {
|
24
|
+
@include reset-box-model();
|
25
|
+
}
|
26
|
+
// TYPOGRAPHY
|
27
|
+
@if(not index($exclude, reset-typography)) {
|
28
|
+
@include reset-font();
|
29
|
+
}
|
30
|
+
}
|
31
|
+
// PAGE
|
32
|
+
@if(not index($exclude, reset-page)) {
|
33
|
+
body {
|
34
|
+
@include reset-body();
|
35
|
+
}
|
36
|
+
}
|
37
|
+
// LISTS
|
38
|
+
@if(not index($exclude, reset-lists)) {
|
39
|
+
ol, ul {
|
40
|
+
@include reset-list-style();
|
41
|
+
}
|
42
|
+
}
|
43
|
+
// TABLES
|
44
|
+
@if(not index($exclude, reset-tables)) {
|
45
|
+
table {
|
46
|
+
@include reset-table();
|
47
|
+
}
|
48
|
+
caption, th, td {
|
49
|
+
@include reset-table-cell();
|
50
|
+
}
|
51
|
+
}
|
52
|
+
// QUOTES
|
53
|
+
@if(not index($exclude, reset-quotes)) {
|
54
|
+
q, blockquote {
|
55
|
+
@include reset-quotation();
|
56
|
+
}
|
57
|
+
}
|
58
|
+
// EMBEDS
|
59
|
+
@if(not index($exclude, reset-embeds)) {
|
60
|
+
a img {
|
61
|
+
@include reset-image-anchor-border();
|
62
|
+
}
|
63
|
+
}
|
64
|
+
// HTML5
|
65
|
+
@if(not index($exclude, reset-html5)) {
|
66
|
+
@include reset-html5();
|
67
|
+
}
|
68
|
+
// IME
|
69
|
+
@if(not index($exclude, reset-ime)) {
|
70
|
+
@include base-normalize-ime();
|
71
|
+
}
|
72
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
@import "../config";
|
2
|
+
|
3
|
+
// grids
|
4
|
+
$CONFIG_GRID_COLUMN: 31px !default; // column width
|
5
|
+
$CONFIG_GRID_GUTTER: 10px !default; // gutter width (margin)
|
6
|
+
$CONFIG_GRID_MAX_COLUMNS: 24 !default; // max number of columns on the grid
|
7
|
+
$CONFIG_GRID_MIN_THRESHOLD: 1.0 !default; // minimum threshold for fractional columns
|
8
|
+
$CONFIG_GRID_ALLOWED_DIVISORS: (3) !default; // allowed list of divisors e.g. (3, 4, 5) => (1/3, 2/3, 1/4, 2/4, 3/4, 1/5, 2/5, 3/5, 4/5)
|
9
|
+
$CONFIG_GRID_ALLOWED_DIVISABLE: (8, 10, 12, 14, 16, 18, 20, $CONFIG_GRID_MAX_COLUMNS) !default; // list of specific column widths
|
10
|
+
$CONFIG_GRID_OFFSET_METHOD: margin !default; // offset method to use [padding|margin|position]
|
11
|
+
$CONFIG_GRID_ALIGN_METHOD: float !default; // alignment method [float|inline-block|table-cell] (NOTE: table-cell doesn't work in all cases
|
12
|
+
$CONFIG_GRID_DIRECTION: reading-direction() !default; // direction of grid
|
13
|
+
$CONFIG_GRID_DEBUG: false !default; // debugging mode
|
14
|
+
$CONFIG_GRID_SPACING_FACTOR: 4 !default; // the factor to use when converting grid indents/outdents to horizontal units
|
@@ -0,0 +1,391 @@
|
|
1
|
+
// this is the grid framework
|
2
|
+
// @category grid
|
3
|
+
@import "config";
|
4
|
+
@import "compass";
|
5
|
+
@import "../util";
|
6
|
+
|
7
|
+
// calculate the width of a grid block
|
8
|
+
// @function _getGridWidth
|
9
|
+
// @private
|
10
|
+
// @param $columns {Number} the number or fraction of columns to span, if fraction, must specify $of
|
11
|
+
// @param $of {Number} the total number of columns spanned, only use with fractional $columns
|
12
|
+
// @param $indent {List} total indent for both left and right sides (needed to adjust for box-model padding)
|
13
|
+
// @return $width {Number} calculated width
|
14
|
+
// @usage:
|
15
|
+
// _getGridWidth(5) => width of 5 columns
|
16
|
+
// _getGridWidth(1/3, $of: 8) => splits an 8 column grid into 1/3
|
17
|
+
// _getGridWidth(5, $indent: (10px 0px)) => subtracts the $indent from the total width
|
18
|
+
@function _getGridWidth($columns, $of: false, $indent: false) {
|
19
|
+
$width: 0;
|
20
|
+
// if we're doing 1/3, 2/3, etc...
|
21
|
+
@if($of or $columns < 1) {
|
22
|
+
@if(type-of($of) != number) {
|
23
|
+
$of: $CONFIG_GRID_MAX_COLUMNS;
|
24
|
+
}
|
25
|
+
|
26
|
+
// check if the divisors conform to our restrictions
|
27
|
+
@if($CONFIG_GRID_ALLOWED_DIVISORS) {
|
28
|
+
$allowed-column-factors: ();
|
29
|
+
@each $divisor in $CONFIG_GRID_ALLOWED_DIVISORS {
|
30
|
+
$numerator: $divisor;
|
31
|
+
@while($numerator > 0) {
|
32
|
+
$numerator: ($numerator - 1);
|
33
|
+
$allowed-column-factors: append($allowed-column-factors, ($numerator / $divisor));
|
34
|
+
}
|
35
|
+
}
|
36
|
+
@if(not index($allowed-column-factors, $columns)) {
|
37
|
+
@warn "you can't divide a block into #{columns}";
|
38
|
+
$columns: 1;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
// check if the specified columns are valid
|
42
|
+
@if($CONFIG_GRID_ALLOWED_DIVISABLE) {
|
43
|
+
@if(not index($CONFIG_GRID_ALLOWED_DIVISABLE, $of)) {
|
44
|
+
@warn "you can't divide #{of} columns";
|
45
|
+
$of: $CONFIG_GRID_MAX_COLUMNS;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
49
|
+
$columns: ($columns * $of);
|
50
|
+
@if($columns < $CONFIG_GRID_MIN_THRESHOLD and $columns > 0) {
|
51
|
+
@warn "#{$columns} of #{$of} columns is too small. Use a larger column size";
|
52
|
+
$columns: $CONFIG_GRID_MIN_THRESHOLD;
|
53
|
+
}
|
54
|
+
}
|
55
|
+
// calculate
|
56
|
+
$width: ($columns * $CONFIG_GRID_COLUMN) + (($columns - 1) * $CONFIG_GRID_GUTTER);
|
57
|
+
|
58
|
+
@if(length($indent) == 2) {
|
59
|
+
$width: ($width - nth($indent,1) - nth($indent,2));
|
60
|
+
}
|
61
|
+
@return $width;
|
62
|
+
}
|
63
|
+
|
64
|
+
// abstract function to indent or outdent a grid block
|
65
|
+
// @function _gridDent
|
66
|
+
// @private
|
67
|
+
// @param $list {List} list of dents
|
68
|
+
// @param $left {Number} the number of units to dent left
|
69
|
+
// @param $right {Number} the number of units to dent right
|
70
|
+
// @param $direction {String} [in|out] the direction to dent
|
71
|
+
// @param $abuse {Bool} @see _getUnit
|
72
|
+
// @return $dent {List} list of dents
|
73
|
+
@function _gridDent($list: false, $left: 0, $right: 0, $direction: in, $abuse: false) {
|
74
|
+
$factor: if($direction == out, -1, 1) * $CONFIG_GRID_SPACING_FACTOR;
|
75
|
+
$dent: ();
|
76
|
+
$list: get-collection($list, ($left $right), $min: 2);
|
77
|
+
|
78
|
+
@each $unit in $list {
|
79
|
+
$unit: ($factor * $unit);
|
80
|
+
$dent: append($dent, horizontal-spacing($unit, $abuse: $abuse), space);
|
81
|
+
}
|
82
|
+
|
83
|
+
@if(length($dent) == 1) {
|
84
|
+
$dent: append($dent, $dent);
|
85
|
+
}
|
86
|
+
|
87
|
+
@return $dent;
|
88
|
+
}
|
89
|
+
|
90
|
+
// calculate indents on a grid block
|
91
|
+
// @function grid-indent
|
92
|
+
// @param $list {List} list of indents
|
93
|
+
// @param $left {Number} the number of units to indent left
|
94
|
+
// @param $right {Number} the number of units to indent right
|
95
|
+
// @param $abuse {Bool} @see _getUnit
|
96
|
+
// @return {List} list of indents
|
97
|
+
@function grid-indent($list: false, $left: 0, $right: 0, $abuse: false) {
|
98
|
+
@return _gridDent($list, $left, $right, $direction: in, $abuse: $abuse);
|
99
|
+
}
|
100
|
+
|
101
|
+
// calculate outdents on a grid block
|
102
|
+
// @function grid-outdent
|
103
|
+
// @param $list {List} list of outdents
|
104
|
+
// @param $left {Number} the number of units to outdent left
|
105
|
+
// @param $right {Number} the number of units to outdent right
|
106
|
+
// @param $abuse {Bool} @see _getUnit
|
107
|
+
// @return {List} list of outdents
|
108
|
+
@function grid-outdent($list: false, $left: 0, $right: 0, $abuse: false) {
|
109
|
+
@return _gridDent($list, $left, $right, $direction: out, $abuse: $abuse);
|
110
|
+
}
|
111
|
+
|
112
|
+
// generate the negative margins needed for a grid-outdent
|
113
|
+
// @mixin grid-outdent
|
114
|
+
// @param $list {List} list of outdents
|
115
|
+
// @param $left {Number} the number of units to outdent left
|
116
|
+
// @param $right {Number} the number of units to outdent right
|
117
|
+
@mixin grid-outdent($list: false, $left: 0, $right: 0) {
|
118
|
+
$outdent: grid-outdent($list, $left, $right);
|
119
|
+
@include grid-output-left-right(margin, $outdent);
|
120
|
+
@include hack-negative-margin();
|
121
|
+
}
|
122
|
+
|
123
|
+
// calculate offsets for a grid block
|
124
|
+
// @function grid-offset
|
125
|
+
// @param $list {List} list of offsets
|
126
|
+
// @param $left {Number} the number of columns to offset left
|
127
|
+
// @param $right {Number} the number of columns to offset right
|
128
|
+
// @param $of {Number} the total number of columns, used if $left/$right are fractional
|
129
|
+
// @return {List} list of offsets
|
130
|
+
@function grid-offset($list: false, $left: 0, $right: 0, $of: false) {
|
131
|
+
$list: get-collection($list, ($left, $right), $min: 2);
|
132
|
+
$left: nth($list,1);
|
133
|
+
$left: if($left > 0, _getGridWidth($columns: $left, $of: $of) + $CONFIG_GRID_GUTTER, 0);
|
134
|
+
$right: nth($list,2);
|
135
|
+
$right: if($right > 0, _getGridWidth($columns: $right, $of: $of) + $CONFIG_GRID_GUTTER, 0);
|
136
|
+
@return ($left, $right);
|
137
|
+
}
|
138
|
+
// convenience mixin for grid-offset
|
139
|
+
@mixin grid-offset($list: false, $left: 0, $right: 0, $of: false, $first: false, $method: $CONFIG_GRID_OFFSET_METHOD) {
|
140
|
+
$offset: grid-offset($list: $list, $left: $left, $right: $right, $of: $of);
|
141
|
+
@if($method == position) {
|
142
|
+
@include grid-offset-position($offset: $offset);
|
143
|
+
}
|
144
|
+
@else {
|
145
|
+
@include grid-offset-margin($offset: $offset, $first: $first);
|
146
|
+
}
|
147
|
+
}
|
148
|
+
// convenience method for using the position offset method
|
149
|
+
@mixin grid-offset-position($offset) {
|
150
|
+
position: relative;
|
151
|
+
@include grid-output-left-right($values: $offset);
|
152
|
+
}
|
153
|
+
// convenience method for using the margin offset method
|
154
|
+
@mixin grid-offset-margin($offset, $first: false, $outdent: false) {
|
155
|
+
$outdent: get-collection($outdent, 0, $min: 2);
|
156
|
+
$gutter: if($first, 0, $CONFIG_GRID_GUTTER);
|
157
|
+
@include grid-output-left-right(margin, list-add($outdent, list-add($offset, ($gutter $gutter))), $ignore: ($gutter));
|
158
|
+
@include hack-negative-margin();
|
159
|
+
}
|
160
|
+
|
161
|
+
// calculate push (offset) for a grid block
|
162
|
+
// @function grid-push
|
163
|
+
// @param $columns {List} the number of columns to offset left
|
164
|
+
// @param $of {Number} the total number of columns, used if $left is fractional
|
165
|
+
// @return {List} list of pushes
|
166
|
+
@function grid-push($columns: 0, $of: false) {
|
167
|
+
@return grid-offset($left: $columns, $of: $of);
|
168
|
+
}
|
169
|
+
// convenience mixin for grid-push
|
170
|
+
@mixin grid-push($columns:0, $of: false, $first: false, $method: position) {
|
171
|
+
@include grid-offset($left: $columns, $of: $of, $first: false, $method: $method);
|
172
|
+
}
|
173
|
+
|
174
|
+
// calculate pull (offset) for a grid block
|
175
|
+
// @function grid-pull
|
176
|
+
// @param $columns {List} the number of columns to offset right
|
177
|
+
// @param $of {Number} the total number of columns, used if $right is fractional
|
178
|
+
// @return {List} list of pulls
|
179
|
+
@function grid-pull($columns: 0, $of: false) {
|
180
|
+
@return grid-offset($right: $columns, $of: $of);
|
181
|
+
}
|
182
|
+
// convenience mixin for grid-push
|
183
|
+
@mixin grid-pull($columns: 0, $of: false, $first: false, $method: position) {
|
184
|
+
@include grid-offset($right: $columns, $of: $of, $first: false, $method: $method);
|
185
|
+
}
|
186
|
+
|
187
|
+
// this makes it possible to undo $first: true
|
188
|
+
// @mixin grid-not-first
|
189
|
+
@mixin grid-not-first() {
|
190
|
+
margin-#{rtl(left, $CONFIG_GRID_DIRECTION)}: $CONFIG_GRID_GUTTER;
|
191
|
+
}
|
192
|
+
|
193
|
+
// this makes it possible to force a non first-column to behave as a first-column
|
194
|
+
// @mixin grid-is-first
|
195
|
+
@mixin grid-is-first() {
|
196
|
+
margin-#{rtl(left, $CONFIG_GRID_DIRECTION)}: 0;
|
197
|
+
}
|
198
|
+
|
199
|
+
// given a set of values, output the left and right properties
|
200
|
+
// @mixin grid-output-left-right
|
201
|
+
// @param $property {String} prefix [margin|padding|border|etc] if false, no prefix is used
|
202
|
+
// @param $values {List} the list of values to output e.g. (10px 5px). if only one value (10px), it's used for both left and right
|
203
|
+
// @param $ignore {List} list of values to ignore, @see if-set
|
204
|
+
@mixin grid-output-left-right($property: false, $values: false, $ignore: false) {
|
205
|
+
$property: if($property, unquote('#{$property}-'), unquote(''));
|
206
|
+
$left: 0;
|
207
|
+
@if(length($values) > 0) {
|
208
|
+
$left: nth($values,1);
|
209
|
+
}
|
210
|
+
$right: 0;
|
211
|
+
@if(length($values) > 1) {
|
212
|
+
$right: nth($values,2);
|
213
|
+
}
|
214
|
+
@include if-set(#{$property}#{rtl(left, $CONFIG_GRID_DIRECTION)}, $left, $ignore: $ignore);
|
215
|
+
@include if-set(#{$property}#{rtl(right, $CONFIG_GRID_DIRECTION)}, $right, $ignore: $ignore);
|
216
|
+
}
|
217
|
+
|
218
|
+
// this lets rows clear the floated containers
|
219
|
+
// @mixin grid-row
|
220
|
+
// @param $debug {Bool} use debug stylings
|
221
|
+
@mixin grid-row($debug: false) {
|
222
|
+
@include grid-block(true);
|
223
|
+
@include debug-hover-box(rgb(255, 0, 255), $if: ($debug or $CONFIG_GRID_DEBUG));
|
224
|
+
}
|
225
|
+
|
226
|
+
// output the block methods
|
227
|
+
// @mixin grid-block
|
228
|
+
// @param $row {Bool} is this block a row
|
229
|
+
@mixin grid-block($row: false) {
|
230
|
+
// FLOAT
|
231
|
+
@if($CONFIG_GRID_ALIGN_METHOD == float){
|
232
|
+
@if($row) {
|
233
|
+
@include legacy-pie-clearfix();
|
234
|
+
}
|
235
|
+
@else {
|
236
|
+
// make it a floater
|
237
|
+
float: #{rtl(left, $CONFIG_GRID_DIRECTION)};
|
238
|
+
}
|
239
|
+
}
|
240
|
+
// INLINE-BLOCK
|
241
|
+
@else if($CONFIG_GRID_ALIGN_METHOD == inline-block) {
|
242
|
+
@if($row) {
|
243
|
+
// if the reading direction is different from the grid direction,
|
244
|
+
// we have to switch the direction of the individual rows
|
245
|
+
@if(reading-direction() != $CONFIG_GRID_DIRECTION) {
|
246
|
+
direction: $CONFIG_GRID_DIRECTION;
|
247
|
+
}
|
248
|
+
// fix to collapse white space between inline-block elements
|
249
|
+
letter-spacing: -0.313em; // webkit
|
250
|
+
@if($legacy-support-for-ie6 or $legacy-support-for-ie7) {
|
251
|
+
*letter-spacing: normal; // restore for IE6/7
|
252
|
+
}
|
253
|
+
word-spacing: -0.438em; // IE/firefox
|
254
|
+
// other methods: no browsers support this yet
|
255
|
+
// http://dev.w3.org/csswg/css3-text/#white-space-collapsing
|
256
|
+
//white-space-collapse: discard;
|
257
|
+
//text-space-collapse: collapse;
|
258
|
+
}
|
259
|
+
@else {
|
260
|
+
// if reading direction is differernt from the grid direction,
|
261
|
+
// reset the reading direction of the inner container
|
262
|
+
@if(reading-direction() != $CONFIG_GRID_DIRECTION) {
|
263
|
+
direction: reading-direction();
|
264
|
+
}
|
265
|
+
@include inline-block();
|
266
|
+
vertical-align: top;
|
267
|
+
// restore spacing @see grid-row
|
268
|
+
letter-spacing: normal;
|
269
|
+
word-spacing: normal;
|
270
|
+
}
|
271
|
+
}
|
272
|
+
// TABLE-CELL (doesn't work well)
|
273
|
+
@else if($CONFIG_GRID_ALIGN_METHOD == table-cell) {
|
274
|
+
@warn "table-cell method doesn't work yet!";
|
275
|
+
@if($row) {
|
276
|
+
// if the reading direction is different from the grid direction,
|
277
|
+
// we have to switch the direction of the individual rows
|
278
|
+
@if(reading-direction() != $CONFIG_GRID_DIRECTION) {
|
279
|
+
direction: $CONFIG_GRID_DIRECTION;
|
280
|
+
}
|
281
|
+
display: table;
|
282
|
+
// table cells don't respect margin, so we have to use border-spacing
|
283
|
+
border-spacing: $CONFIG_GRID_GUTTER 0;
|
284
|
+
}
|
285
|
+
@else {
|
286
|
+
// if reading direction is differernt from the grid direction,
|
287
|
+
// reset the reading direction of the inner container
|
288
|
+
@if(reading-direction() != $CONFIG_GRID_DIRECTION) {
|
289
|
+
direction: reading-direction();
|
290
|
+
}
|
291
|
+
@if($legacy-support-for-ie6 or $legacy-support-for-ie7) {
|
292
|
+
*display: inline;
|
293
|
+
}
|
294
|
+
display: table-cell;
|
295
|
+
vertical-align: top;
|
296
|
+
@include has-layout();
|
297
|
+
}
|
298
|
+
}
|
299
|
+
}
|
300
|
+
|
301
|
+
// convenience method for creating a grid canvas, @see grid
|
302
|
+
// @mixin grid-canvas
|
303
|
+
// @param $columns {Number} the number or fraction of columns to span, if fraction, must specify $of
|
304
|
+
// @param $of {Number} the total number of columns spanned, only use with fractional $columns
|
305
|
+
// @param $debug {Bool} use debug stylings
|
306
|
+
@mixin grid-canvas($columns: false, $of: false, $debug: false) {
|
307
|
+
@include grid($columns: $columns, $of: $of, $debug: $debug, $canvas: true);
|
308
|
+
}
|
309
|
+
|
310
|
+
// the main grid mixin
|
311
|
+
// @mixin grid
|
312
|
+
// @param $columns {Number} the number or fraction of columns to span, if fraction, must specify $of
|
313
|
+
// @param $first {Bool} is this the first grid block of a row
|
314
|
+
// @param $of {Number} the total number of columns spanned, only use with fractional $columns
|
315
|
+
// @param $indent {List} the grid indents @see grid-indent
|
316
|
+
// @param $outdent {List} the grid outdents @see grid-outdent
|
317
|
+
// @param $offset {List} the grid offsets @see grid-offset, grid-push, grid-pull
|
318
|
+
// @param $canvas {Bool} treat this grid block as a canvas; a canvas is a non-floated, centered grid-block
|
319
|
+
// @param $row {Bool} @see grid-row
|
320
|
+
// @param $center {Bool} whether or not to center the grid block
|
321
|
+
// @param $debug {Bool} use debug stylings
|
322
|
+
@mixin grid($columns: false, $first: false, $of: false, $indent: false, $outdent: false, $offset: false, $offset-method: $CONFIG_GRID_OFFSET_METHOD, $canvas: false, $row: false, $center: false, $debug: false) {
|
323
|
+
@if($row) {
|
324
|
+
@include grid-row($debug: $debug);
|
325
|
+
}
|
326
|
+
@else {
|
327
|
+
@if(not $columns) {
|
328
|
+
$columns: $CONFIG_GRID_MAX_COLUMNS;
|
329
|
+
}
|
330
|
+
|
331
|
+
$width: _getGridWidth($columns, $of, $indent);
|
332
|
+
|
333
|
+
// margin
|
334
|
+
@if(not ($first or $canvas or $center)) {
|
335
|
+
@include grid-not-first();
|
336
|
+
}
|
337
|
+
|
338
|
+
@if($canvas or $center) {
|
339
|
+
// center it
|
340
|
+
margin-left: auto;
|
341
|
+
margin-right: auto;
|
342
|
+
|
343
|
+
// debug
|
344
|
+
@if(is-debug-enabled($debug or $CONFIG_GRID_DEBUG)) {
|
345
|
+
@include column-grid-background($CONFIG_GRID_MAX_COLUMNS, $CONFIG_GRID_COLUMN, $CONFIG_GRID_GUTTER);
|
346
|
+
}
|
347
|
+
|
348
|
+
@if($CONFIG_GRID_ALIGN_METHOD == inline-block) {
|
349
|
+
// the inline-block method needs to use horizontal overflow on the canvas to prevent an unwanted scrollbar
|
350
|
+
//overflow-x: hidden;
|
351
|
+
}
|
352
|
+
}
|
353
|
+
@else {
|
354
|
+
// align the block
|
355
|
+
@include grid-block();
|
356
|
+
// debug
|
357
|
+
@include debug-hover-box($if: ($debug or $CONFIG_GRID_DEBUG));
|
358
|
+
}
|
359
|
+
|
360
|
+
// offset (push, pull)
|
361
|
+
@if($offset) {
|
362
|
+
// ... with positioning
|
363
|
+
@if($offset-method == position) {
|
364
|
+
@include grid-offset-position($offset);
|
365
|
+
}
|
366
|
+
// ... with margin (adjust outdent)
|
367
|
+
@else if($offset-method == margin) {
|
368
|
+
@include grid-offset-margin($offset: $offset, $first: $first, $outdent: $outdent);
|
369
|
+
$outdent: false;
|
370
|
+
}
|
371
|
+
// ... with padding (adjust indent)
|
372
|
+
@else {
|
373
|
+
$indent: list-add(get-collection($indent, 0, $min: 2), $offset);
|
374
|
+
}
|
375
|
+
}
|
376
|
+
|
377
|
+
// indent
|
378
|
+
@if($indent) {
|
379
|
+
@include grid-output-left-right(padding, $indent);
|
380
|
+
}
|
381
|
+
|
382
|
+
// outdent
|
383
|
+
@if($outdent) {
|
384
|
+
@include grid-output-left-right(margin, $outdent);
|
385
|
+
@include hack-negative-margin();
|
386
|
+
}
|
387
|
+
|
388
|
+
// width
|
389
|
+
width: $width;
|
390
|
+
}
|
391
|
+
}
|