archetype 0.0.1.pre.13 → 1.0.0.alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +97 -24
- data/README.md +11 -5
- data/VERSION +1 -0
- data/lib/archetype.rb +30 -18
- data/lib/archetype/actions/migrate.rb +152 -0
- data/lib/archetype/actions/theme.rb +6 -7
- data/lib/archetype/executor.rb +21 -7
- data/lib/archetype/extensions.rb +57 -0
- data/lib/archetype/functions.rb +2 -3
- data/lib/archetype/functions/css.rb +70 -0
- data/lib/archetype/functions/css/constants.rb +247 -0
- data/lib/archetype/functions/css/helpers.rb +265 -0
- data/lib/archetype/functions/css/routers.rb +28 -0
- data/lib/archetype/functions/css/routers/animation.rb +55 -0
- data/lib/archetype/functions/css/routers/background.rb +38 -0
- data/lib/archetype/functions/css/routers/border.rb +151 -0
- data/lib/archetype/functions/css/routers/list.rb +63 -0
- data/lib/archetype/functions/css/routers/margin_padding.rb +40 -0
- data/lib/archetype/functions/css/routers/outline.rb +56 -0
- data/lib/archetype/functions/css/routers/overflow.rb +11 -0
- data/lib/archetype/functions/css/routers/target.rb +38 -0
- data/lib/archetype/functions/css/routers/transition.rb +48 -0
- data/lib/archetype/functions/css/shorthands.rb +43 -0
- data/lib/archetype/functions/css/shorthands/animation.rb +18 -0
- data/lib/archetype/functions/css/shorthands/background.rb +68 -0
- data/lib/archetype/functions/css/shorthands/border.rb +102 -0
- data/lib/archetype/functions/hash.rb +3 -149
- data/lib/archetype/functions/hash/extend.rb +74 -0
- data/lib/archetype/functions/hash/shim.rb +48 -0
- data/lib/archetype/functions/helpers.rb +231 -22
- data/lib/archetype/functions/styleguide_memoizer.rb +18 -1
- data/lib/archetype/sass_extensions.rb +1 -3
- data/lib/archetype/sass_extensions/functions.rb +15 -1
- data/lib/archetype/sass_extensions/functions/environment.rb +152 -1
- data/lib/archetype/sass_extensions/functions/lists.rb +95 -45
- data/lib/archetype/sass_extensions/functions/locale.rb +107 -28
- data/lib/archetype/sass_extensions/functions/numbers.rb +118 -4
- data/lib/archetype/sass_extensions/functions/strings.rb +53 -0
- data/lib/archetype/sass_extensions/functions/styleguide.rb +43 -375
- data/lib/archetype/sass_extensions/functions/styleguide/components.rb +25 -0
- data/lib/archetype/sass_extensions/functions/styleguide/constants.rb +27 -0
- data/lib/archetype/sass_extensions/functions/styleguide/grammar.rb +80 -0
- data/lib/archetype/sass_extensions/functions/styleguide/helpers.rb +36 -0
- data/lib/archetype/sass_extensions/functions/styleguide/resolve.rb +159 -0
- data/lib/archetype/sass_extensions/functions/styleguide/styles.rb +146 -0
- data/lib/archetype/sass_extensions/functions/styleguide/themes.rb +40 -0
- data/lib/archetype/sass_extensions/functions/ui.rb +7 -57
- data/lib/archetype/sass_extensions/functions/ui/glyphs.rb +118 -0
- data/lib/archetype/sass_extensions/functions/ui/scopes.rb +96 -0
- data/lib/archetype/sass_extensions/functions/util.rb +14 -0
- data/lib/archetype/sass_extensions/functions/util/debug.rb +22 -0
- data/lib/archetype/sass_extensions/functions/util/hacks.rb +44 -0
- data/lib/archetype/sass_extensions/functions/util/images.rb +132 -0
- data/lib/archetype/sass_extensions/functions/util/misc.rb +220 -0
- data/lib/archetype/sass_extensions/functions/util/spacing.rb +83 -0
- data/lib/archetype/sass_extensions/functions/version.rb +12 -17
- data/lib/archetype/version.rb +1 -1
- data/stylesheets/archetype/_config.scss +1 -389
- data/stylesheets/archetype/_core.scss +15 -0
- data/stylesheets/archetype/_hacks.scss +4 -120
- data/stylesheets/archetype/_init.scss +4 -22
- data/stylesheets/archetype/_required.scss +3 -0
- data/stylesheets/archetype/_reset.scss +3 -0
- data/stylesheets/archetype/_styleguide.scss +2 -6
- data/stylesheets/archetype/_ui.scss +2 -358
- data/stylesheets/archetype/_util.scss +3 -10
- data/stylesheets/archetype/config/_core.scss +14 -0
- data/stylesheets/archetype/config/_environment.scss +19 -0
- data/stylesheets/archetype/config/_formatting.scss +63 -0
- data/stylesheets/archetype/config/_glyphs.scss +252 -0
- data/stylesheets/archetype/config/_resets.scss +7 -0
- data/stylesheets/archetype/config/_resolution.scss +3 -0
- data/stylesheets/archetype/config/_spacing.scss +5 -0
- data/stylesheets/archetype/config/_targeting.scss +18 -0
- data/stylesheets/archetype/config/_theme.scss +3 -0
- data/stylesheets/archetype/config/_typography.scss +56 -0
- data/stylesheets/archetype/config/_units.scss +2 -0
- data/stylesheets/archetype/config/_vars.scss +10 -0
- data/stylesheets/archetype/hacks/_core.scss +4 -0
- data/stylesheets/archetype/hacks/_hacks.scss +160 -0
- data/stylesheets/archetype/hacks/_init.scss +2 -0
- data/stylesheets/archetype/styleguide/_core.scss +4 -0
- data/stylesheets/archetype/styleguide/_init.scss +1 -0
- data/stylesheets/archetype/styleguide/_styleguide.scss +41 -18
- data/stylesheets/archetype/ui/_accessibility.scss +41 -0
- data/stylesheets/archetype/ui/_breakpoints.scss +19 -0
- data/stylesheets/archetype/ui/_core.scss +10 -0
- data/stylesheets/archetype/ui/_elements.scss +98 -0
- data/stylesheets/archetype/ui/_glyphs.scss +244 -0
- data/stylesheets/archetype/ui/_init.scss +5 -0
- data/stylesheets/archetype/ui/_layout.scss +37 -0
- data/stylesheets/archetype/ui/_locale.scss +12 -0
- data/stylesheets/archetype/ui/_scopes.scss +42 -0
- data/stylesheets/archetype/util/_core.scss +8 -0
- data/stylesheets/archetype/util/_debug.scss +9 -21
- data/stylesheets/archetype/util/_init.scss +1 -0
- data/stylesheets/archetype/util/_misc.scss +21 -86
- data/stylesheets/archetype/util/_spacing.scss +9 -40
- data/stylesheets/archetype/util/_styles.scss +189 -178
- data/stylesheets/archetype/util/_targeting.scss +51 -68
- data/templates/example/manifest.rb +2 -2
- data/templates/example/screen.scss +0 -1
- data/templates/project/manifest.rb +3 -8
- metadata +93 -263
- data/bin/archetype +0 -3
- data/lib/archetype/sass_extensions/monkey_patches.rb +0 -3
- data/lib/archetype/sass_extensions/monkey_patches/handle_include_loop.rb +0 -13
- data/stylesheets/archetype/_base.scss +0 -54
- data/stylesheets/archetype/_grid.scss +0 -3
- data/stylesheets/archetype/base/_h5bp.scss +0 -307
- data/stylesheets/archetype/base/_hybrid.scss +0 -25
- data/stylesheets/archetype/base/_normalize.scss +0 -634
- data/stylesheets/archetype/base/_reset.scss +0 -72
- data/stylesheets/archetype/grid/_config.scss +0 -14
- data/stylesheets/archetype/grid/_grid.scss +0 -391
- data/stylesheets/archetype/styleguide/_components.scss +0 -25
- data/stylesheets/archetype/styleguide/_helpers.scss +0 -215
- data/stylesheets/archetype/styleguide/_primitives.scss +0 -10
- data/stylesheets/archetype/styleguide/components/_alerts.scss +0 -59
- data/stylesheets/archetype/styleguide/components/_annotations.scss +0 -27
- data/stylesheets/archetype/styleguide/components/_bristol.scss +0 -15
- data/stylesheets/archetype/styleguide/components/_button_groups.scss +0 -47
- data/stylesheets/archetype/styleguide/components/_button_toolbars.scss +0 -17
- data/stylesheets/archetype/styleguide/components/_buttons.scss +0 -339
- data/stylesheets/archetype/styleguide/components/_canvas.scss +0 -15
- data/stylesheets/archetype/styleguide/components/_carets.scss +0 -336
- data/stylesheets/archetype/styleguide/components/_closes.scss +0 -63
- data/stylesheets/archetype/styleguide/components/_container.scss +0 -27
- data/stylesheets/archetype/styleguide/components/_copy.scss +0 -85
- data/stylesheets/archetype/styleguide/components/_flyouts.scss +0 -52
- data/stylesheets/archetype/styleguide/components/_headings.scss +0 -33
- data/stylesheets/archetype/styleguide/components/_headlines.scss +0 -64
- data/stylesheets/archetype/styleguide/components/_hovercards.scss +0 -27
- data/stylesheets/archetype/styleguide/components/_icons.scss +0 -17
- data/stylesheets/archetype/styleguide/components/_identities.scss +0 -34
- data/stylesheets/archetype/styleguide/components/_links.scss +0 -68
- data/stylesheets/archetype/styleguide/components/_loaders.scss +0 -154
- data/stylesheets/archetype/styleguide/components/_menu_items.scss +0 -31
- data/stylesheets/archetype/styleguide/components/_module.scss +0 -15
- data/stylesheets/archetype/styleguide/components/_pullquotes.scss +0 -29
- data/stylesheets/archetype/styleguide/components/_punchcut.scss +0 -18
- data/stylesheets/archetype/styleguide/components/_tooltips.scss +0 -28
- data/stylesheets/archetype/styleguide/primitives/_animations.scss +0 -17
- data/stylesheets/archetype/styleguide/primitives/_dimensions.scss +0 -50
- data/stylesheets/archetype/styleguide/primitives/_glyphs.scss +0 -11
- data/stylesheets/archetype/styleguide/primitives/_misc.scss +0 -8
- data/stylesheets/archetype/styleguide/primitives/_palettes.scss +0 -94
- data/stylesheets/archetype/styleguide/primitives/_shadows.scss +0 -23
- data/stylesheets/archetype/styleguide/primitives/_sprites.scss +0 -46
- data/stylesheets/archetype/styleguide/primitives/_textures.scss +0 -10
- data/stylesheets/archetype/styleguide/primitives/_typography.scss +0 -56
- data/stylesheets/archetype/util/_lists.scss +0 -57
- data/stylesheets/archetype/util/_rtl.scss +0 -279
- data/stylesheets/archetype/util/_units.scss +0 -18
- data/templates/project/screen.scss +0 -1
- 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 +0 -255
- 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 +0 -255
- 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-s7889ccc8c1.png +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 +0 -21
- data/test/fixtures/stylesheets/archetype/source/b.scss +0 -9
- data/test/fixtures/stylesheets/archetype/source/base.scss +0 -3
- data/test/fixtures/stylesheets/archetype/source/hacks/ie_pseudo.scss +0 -13
- data/test/fixtures/stylesheets/archetype/source/hacks/transparent_focusable.scss +0 -5
- data/test/fixtures/stylesheets/archetype/source/locale.scss +0 -43
- data/test/fixtures/stylesheets/archetype/source/styleguide/alerts.scss +0 -21
- data/test/fixtures/stylesheets/archetype/source/styleguide/buttons.scss +0 -18
- data/test/fixtures/stylesheets/archetype/source/styleguide/drop.scss +0 -101
- data/test/fixtures/stylesheets/archetype/source/styleguide/extend.scss +0 -24
- data/test/fixtures/stylesheets/archetype/source/styleguide/fallback_styles.scss +0 -23
- data/test/fixtures/stylesheets/archetype/source/styleguide/invalid_structures.scss +0 -85
- data/test/fixtures/stylesheets/archetype/source/styleguide/multi_value.scss +0 -18
- data/test/fixtures/stylesheets/archetype/source/styleguide/nested_styleguides.scss +0 -40
- data/test/fixtures/stylesheets/archetype/source/styleguide/selective_state.scss +0 -22
- data/test/fixtures/stylesheets/archetype/source/ui/glyph_icon.scss +0 -35
- data/test/fixtures/stylesheets/archetype/source/ui/hide_element.scss +0 -5
- data/test/fixtures/stylesheets/archetype/source/ui/stroke.scss +0 -13
- data/test/fixtures/stylesheets/archetype/source/ui/triangle.scss +0 -13
- data/test/fixtures/stylesheets/archetype/source/utilities/associative.scss +0 -24
- data/test/fixtures/stylesheets/archetype/source/utilities/custom_output_styler.scss +0 -22
- data/test/fixtures/stylesheets/archetype/source/utilities/if-set.scss +0 -16
- data/test/fixtures/stylesheets/archetype/source/utilities/spacing/horizontal-spacing.scss +0 -27
- data/test/fixtures/stylesheets/archetype/source/utilities/spacing/vertical-spacing.scss +0 -27
- data/test/fixtures/stylesheets/archetype/source/utilities/styles/filter.scss +0 -9
- data/test/fixtures/stylesheets/archetype/source/utilities/styles/font-family.scss +0 -9
- data/test/fixtures/stylesheets/archetype/source/utilities/styles/z-index.scss +0 -18
- data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-browser.scss +0 -77
- data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-os.scss +0 -42
- data/test/fixtures/stylesheets/archetype/tmp/b.css +0 -14
- data/test/fixtures/stylesheets/archetype/tmp/base.css +0 -349
- data/test/fixtures/stylesheets/archetype/tmp/hacks/ie_pseudo.css +0 -11
- data/test/fixtures/stylesheets/archetype/tmp/hacks/transparent_focusable.css +0 -4
- data/test/fixtures/stylesheets/archetype/tmp/locale.css +0 -23
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/alerts.css +0 -711
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/buttons.css +0 -2119
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/drop.css +0 -63
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/extend.css +0 -11
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/fallback_styles.css +0 -10
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/invalid_structures.css +0 -21
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/multi_value.css +0 -13
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/nested_styleguides.css +0 -28
- data/test/fixtures/stylesheets/archetype/tmp/styleguide/selective_state.css +0 -177
- data/test/fixtures/stylesheets/archetype/tmp/ui/glyph_icon.css +0 -127
- data/test/fixtures/stylesheets/archetype/tmp/ui/hide_element.css +0 -8
- data/test/fixtures/stylesheets/archetype/tmp/ui/stroke.css +0 -17
- data/test/fixtures/stylesheets/archetype/tmp/ui/triangle.css +0 -35
- data/test/fixtures/stylesheets/archetype/tmp/utilities/associative.css +0 -9
- data/test/fixtures/stylesheets/archetype/tmp/utilities/custom_output_styler.css +0 -8
- data/test/fixtures/stylesheets/archetype/tmp/utilities/if-set.css +0 -9
- data/test/fixtures/stylesheets/archetype/tmp/utilities/spacing/horizontal-spacing.css +0 -29
- data/test/fixtures/stylesheets/archetype/tmp/utilities/spacing/vertical-spacing.css +0 -29
- data/test/fixtures/stylesheets/archetype/tmp/utilities/styles/filter.css +0 -11
- data/test/fixtures/stylesheets/archetype/tmp/utilities/styles/font-family.css +0 -16
- data/test/fixtures/stylesheets/archetype/tmp/utilities/styles/z-index.css +0 -15
- data/test/fixtures/stylesheets/archetype/tmp/utilities/targeting/target-browser.css +0 -105
- data/test/fixtures/stylesheets/archetype/tmp/utilities/targeting/target-os.css +0 -55
- data/test/helpers/diff.rb +0 -49
- data/test/helpers/io.rb +0 -36
- data/test/helpers/test_case.rb +0 -62
- data/test/integrations/archetype_test.rb +0 -126
- data/test/test_helper.rb +0 -26
- data/test/units/sass_extensions_test.rb +0 -200
@@ -0,0 +1,37 @@
|
|
1
|
+
// @category ui/layout
|
2
|
+
|
3
|
+
// throw an error if archetype/ui has not been registered
|
4
|
+
$a-blackhole: require-archetype-modules(archetype/ui);
|
5
|
+
|
6
|
+
// additional non-standard compass features required in this module
|
7
|
+
@import "compass/layout/stretching";
|
8
|
+
|
9
|
+
// makes your element centered vertically and horizontally in a parent element
|
10
|
+
// @mixin centered-box
|
11
|
+
@mixin centered-box() {
|
12
|
+
@include stretch();
|
13
|
+
margin: auto;
|
14
|
+
}
|
15
|
+
|
16
|
+
// mixin for generating a fade box which fades from transparent to white
|
17
|
+
// @mixin fade-box
|
18
|
+
// @param $width {String} the width of the overlay
|
19
|
+
// @param $height {String} the height of the overlay
|
20
|
+
// @param $direction {String} top=vertical left=horizontal
|
21
|
+
// @param $from {Color} the start color
|
22
|
+
// @param $to {Color} the end color
|
23
|
+
@mixin fade-box($width: 100%, $height: 100%, $direction: top, $from: rgba(255,255,255,0.4), $to: rgba(255,255,255,1)) {
|
24
|
+
@if support-legacy-browser('ie', '8', $threshold: $critical-usage-threshold) {
|
25
|
+
@if $direction == left {
|
26
|
+
@include ie-filter(gradient(startColorstr=ie-hex-str($from), endColorstr=ie-hex-str($to), GradientType=1));
|
27
|
+
}
|
28
|
+
@else {
|
29
|
+
@include ie-filter(gradient(startColorstr=ie-hex-str($from), endColorstr=ie-hex-str($to)));
|
30
|
+
}
|
31
|
+
}
|
32
|
+
@include background-image(linear-gradient($direction, $from, $to) );
|
33
|
+
@include pseudo-element($width: $width, $height: $height, $position: absolute);
|
34
|
+
text-align: center;
|
35
|
+
bottom: 0;
|
36
|
+
#{if($direction == left, right, left)}: 0;
|
37
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// @category ui/locale
|
2
|
+
|
3
|
+
// temporarily switch the interface locale
|
4
|
+
// @mixin switch-locale
|
5
|
+
// @param $locale {String} the locale code to switch to
|
6
|
+
// @content
|
7
|
+
@mixin switch-locale($locale) {
|
8
|
+
// keep track of the current locale, and switch
|
9
|
+
$tmp: switch-locale($locale);
|
10
|
+
@content;
|
11
|
+
$tmp: switch-locale($tmp);
|
12
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
// @category ui/scopes
|
2
|
+
|
3
|
+
// a mixin to output the current context in a BEM style selector
|
4
|
+
// @link http://bem.info/method/
|
5
|
+
// @mixin BEM
|
6
|
+
// @param $element {String} the element name
|
7
|
+
// @param $modifier {String} the modifier
|
8
|
+
// @content
|
9
|
+
@mixin bem($element: null, $modifier: null) {
|
10
|
+
@at-root #{bem-selector("#{'&'}", $element, $modifier)} {
|
11
|
+
@content;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
// scopes content block for high resolution (HiDPI/Retina) displays
|
16
|
+
// @mixin high-resolution
|
17
|
+
// @param $resolution {Number} the resolution to use (either a ratio, dpi, dpcm, or dppx)
|
18
|
+
// @content
|
19
|
+
@mixin high-resolution($resolution: $CONFIG_RESOLUTION_HIGH) {
|
20
|
+
@if $resolution {
|
21
|
+
$ratio: resolution-to-ratio($resolution);
|
22
|
+
$query: ();
|
23
|
+
|
24
|
+
$queries: (
|
25
|
+
if(support-legacy-browser('firefox', '16', $threshold: $critical-usage-threshold), '(min--moz-device-pixel-ratio: #{$ratio})', null),
|
26
|
+
'(-webkit-min-device-pixel-ratio: #{$ratio})',
|
27
|
+
'(-o-min-device-pixel-ratio: #{to-fraction($ratio)})',
|
28
|
+
'(min-resolution: #{resolution-to-dpi($resolution)})',
|
29
|
+
'(min-resolution: #{resolution-to-dppx($resolution)})'
|
30
|
+
);
|
31
|
+
|
32
|
+
@each $q in $queries {
|
33
|
+
@if $q {
|
34
|
+
$query: append($query, unquote('only screen and #{$q}'), comma);
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
@media #{$query} {
|
39
|
+
@content;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
@@ -1,27 +1,15 @@
|
|
1
1
|
// @category utilities/debug
|
2
2
|
|
3
|
-
//
|
4
|
-
|
5
|
-
// @param $if {Boolean} optional override for $CONFIG_DEBUG
|
6
|
-
// @return {Boolean} whether or not debug is enabled
|
7
|
-
@function is-debug-enabled($if: nil) {
|
8
|
-
// debug is only available in DEV environments, so check that first
|
9
|
-
// then check if the debug flag/override is truthy
|
10
|
-
@return (index($CONFIG_DEBUG_ENVS, archetype-env()) and if($if == nil, $CONFIG_DEBUG, $if));
|
11
|
-
}
|
3
|
+
// throw an error if archetype/core has not been registered
|
4
|
+
$a-blackhole: require-archetype-modules(archetype/util);
|
12
5
|
|
13
6
|
// a debug helper, print out a message
|
14
7
|
// @mixin debug-message
|
15
8
|
// @param $message {String} the message to output
|
16
|
-
// @param $
|
17
|
-
@mixin debug-message($message, $
|
18
|
-
@if(is-debug-enabled($
|
19
|
-
|
20
|
-
/* #{$message} */
|
21
|
-
}
|
22
|
-
@else {
|
23
|
-
-archetype-debug: quote($message);
|
24
|
-
}
|
9
|
+
// @param $iff {Boolean} override $CONFIG_DEBUG
|
10
|
+
@mixin debug-message($message, $iff: null) {
|
11
|
+
@if(is-debug-enabled($iff)) {
|
12
|
+
/* #{$message} */
|
25
13
|
}
|
26
14
|
}
|
27
15
|
|
@@ -29,9 +17,9 @@
|
|
29
17
|
// @mixin debug-hover-box
|
30
18
|
// @param $color {String} the color to draw the border
|
31
19
|
// @param $opacity {Number}
|
32
|
-
// @param $
|
33
|
-
@mixin debug-hover-box($color: rgb(0, 255, 255), $opacity: 0.9, $
|
34
|
-
@if(is-debug-enabled($
|
20
|
+
// @param $iff {Boolean} override $CONFIG_DEBUG
|
21
|
+
@mixin debug-hover-box($color: rgb(0, 255, 255), $opacity: 0.9, $iff: null) {
|
22
|
+
@if(is-debug-enabled($iff)) {
|
35
23
|
&:hover {
|
36
24
|
@include opacity($opacity);
|
37
25
|
@include box-shadow(0 0 3px 0 $color);
|
@@ -0,0 +1 @@
|
|
1
|
+
$a-blackhole: require-archetype-modules(archetype/util);
|
@@ -1,5 +1,8 @@
|
|
1
1
|
// @category utilities
|
2
2
|
|
3
|
+
// throw an error if archetype/util has not been registered
|
4
|
+
$a-blackhole: require-archetype-modules(archetype/util);
|
5
|
+
|
3
6
|
// simplify checking if a value is defined before outputting it to a property
|
4
7
|
// @mixin if-set
|
5
8
|
// @param $property {String} css property to define
|
@@ -11,98 +14,30 @@
|
|
11
14
|
@if($ignore == false) {
|
12
15
|
$ignore: (0 0px);
|
13
16
|
}
|
14
|
-
@if($value != false and not index(-
|
17
|
+
@if($value != false and $value != null and not index(-archetype-list($ignore), $value)) {
|
15
18
|
#{$property}: $value;
|
16
19
|
}
|
17
20
|
}
|
18
21
|
|
19
|
-
|
20
|
-
//
|
21
|
-
// @
|
22
|
-
|
23
|
-
|
24
|
-
@
|
25
|
-
@if index($REGISTRY_DO_ONCE, $name) {
|
26
|
-
@return false;
|
22
|
+
// a mixin that prevents a given block from executing multiple times
|
23
|
+
// @mixin do-once
|
24
|
+
// @param $name {String} identifier to check/register
|
25
|
+
@mixin do-once($name) {
|
26
|
+
@if do-once($name) {
|
27
|
+
@content;
|
27
28
|
}
|
28
|
-
$REGISTRY_DO_ONCE: append($REGISTRY_DO_ONCE, $name);
|
29
|
-
@return true;
|
30
|
-
}
|
31
|
-
|
32
|
-
// helper to determine if a sprite is already set or sprites are disabled
|
33
|
-
// @function _shouldSetSprite
|
34
|
-
// @private
|
35
|
-
// @param $sprite {SpriteMap} the sprite map to check against
|
36
|
-
// @return {Boolean} should the sprite be set
|
37
|
-
@function _shouldSetSprite($sprite) {
|
38
|
-
@return not $CONFIG_DISABLE_STYLEGUIDE_SPRITES and not $sprite;
|
39
|
-
}
|
40
|
-
|
41
|
-
// check that a sprite isn't nil or false
|
42
|
-
// @function styleguide-check-sprite
|
43
|
-
// @param $map {SpriteMap} the sprite map to check against
|
44
|
-
// @return {Boolean} is the sprite set
|
45
|
-
@function styleguide-check-sprite($map) {
|
46
|
-
@return not ($CONFIG_DISABLE_STYLEGUIDE_SPRITES and index(false nil, $map));
|
47
|
-
}
|
48
|
-
|
49
|
-
// wrapper for sprite()
|
50
|
-
// @function styleguide-sprite
|
51
|
-
// @param $map {SpriteMap} the sprite map
|
52
|
-
// @param $sprite {Sprite} the sprite name
|
53
|
-
// @param $offset-x {Number} the horizontal offset of the sprite position
|
54
|
-
// @param $offset-y {Number} the vertical offset of the sprite position
|
55
|
-
// @return {Sprite} the sprite object or nil
|
56
|
-
@function styleguide-sprite($map, $sprite, $offset-x: 0, $offset-y: 0) {
|
57
|
-
@if not styleguide-check-sprite($map) { @return nil; }
|
58
|
-
@return sprite($map, $sprite, $offset-x, $offset-y);
|
59
29
|
}
|
60
30
|
|
61
|
-
//
|
62
|
-
// @
|
63
|
-
// @param $
|
64
|
-
// @
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
}
|
72
|
-
|
73
|
-
// wrapper for sprite-url()
|
74
|
-
// @function styleguide-sprite-url
|
75
|
-
// @param $map {SpriteMap} the sprite map
|
76
|
-
// @return {String} the sprite URL or nil
|
77
|
-
@function styleguide-sprite-url($map) {
|
78
|
-
@if not styleguide-check-sprite($map) { @return nil; }
|
79
|
-
@return sprite-url($map);
|
80
|
-
}
|
81
|
-
|
82
|
-
// wrapper for sprite-file()
|
83
|
-
// @function styleguide-sprite-file
|
84
|
-
// @param $map {SpriteMap} the sprite map
|
85
|
-
// @param $sprite {Sprite} the sprite name
|
86
|
-
// @return {ImageFile} the image or nil
|
87
|
-
@function styleguide-sprite-file($map, $sprite) {
|
88
|
-
@if not styleguide-check-sprite($map) { @return nil; }
|
89
|
-
@return sprite-file($map, $sprite);
|
90
|
-
}
|
91
|
-
|
92
|
-
// wrapper for image-width()
|
93
|
-
// @function styleguide-image-width
|
94
|
-
// @param $image {ImageFile} the image
|
95
|
-
// @return {Number} the width of the image or nil
|
96
|
-
@function styleguide-image-width($image) {
|
97
|
-
@if $image == nil { @return nil; }
|
98
|
-
@return image-width($image);
|
31
|
+
// helper mixin for iterating over a meta object that contains multiple values
|
32
|
+
// @mixin with-each-value
|
33
|
+
// @param $values {*} the value or meta object of values to iterate over
|
34
|
+
// @content
|
35
|
+
@mixin with-each-value($values) {
|
36
|
+
$values: if(has-multiple-values($values), map-get($values, values), append((), $values));
|
37
|
+
@each $value in $values {
|
38
|
+
$archetype-current-value: $value !global;
|
39
|
+
@content;
|
40
|
+
$archetype-current-value: null !global;
|
41
|
+
}
|
99
42
|
}
|
100
43
|
|
101
|
-
// wrapper for image-height()
|
102
|
-
// @function styleguide-image-height
|
103
|
-
// @param $image {ImageFile} the image
|
104
|
-
// @return {Number} the height of the image or nil
|
105
|
-
@function styleguide-image-height($image) {
|
106
|
-
@if $image == nil { @return nil; }
|
107
|
-
@return image-height($image);
|
108
|
-
}
|
@@ -1,38 +1,7 @@
|
|
1
1
|
// @category utilities/spacing
|
2
2
|
|
3
|
-
//
|
4
|
-
|
5
|
-
// @private
|
6
|
-
// @param $unit {Number} unit of measurement
|
7
|
-
// @param $direction {String} [horizontal|vertical] spacing
|
8
|
-
// @param $abuse {Boolean} @see _getUnit
|
9
|
-
// @return {String} the calculated spacing
|
10
|
-
@function _spacing($unit: nil, $direction: horizontal, $abuse: false) {
|
11
|
-
@if $unit == nil {
|
12
|
-
@return nil;
|
13
|
-
}
|
14
|
-
$unit: _getUnit($unit, $abuse);
|
15
|
-
$spacing: if($direction == vertical, $CONFIG_VERTICAL_SPACING, $CONFIG_HORIZONTAL_SPACING);
|
16
|
-
@return ($unit * $spacing);
|
17
|
-
}
|
18
|
-
|
19
|
-
// horizonatl spacing calculations
|
20
|
-
// @function horizontal-spacing
|
21
|
-
// @param $unit {Number} unit of measurement
|
22
|
-
// @param $abuse {Boolean} @see _getUnit
|
23
|
-
// @return {String} the calculated horizontal spacing
|
24
|
-
@function horizontal-spacing($unit, $abuse: false) {
|
25
|
-
@return _spacing($unit, $abuse: $abuse);
|
26
|
-
}
|
27
|
-
|
28
|
-
// vertical spacing calculations
|
29
|
-
// @function vertical-spacing
|
30
|
-
// @param $unit {Number} unit of measurement
|
31
|
-
// @param $abuse {Boolean} @see _getUnit
|
32
|
-
// @return {String} the calculated vertical spacing
|
33
|
-
@function vertical-spacing($unit, $abuse: false) {
|
34
|
-
@return _spacing($unit, $direction: vertical, $abuse: $abuse);
|
35
|
-
}
|
3
|
+
// throw an error if archetype/util has not been registered
|
4
|
+
$a-blackhole: require-archetype-modules(archetype/util);
|
36
5
|
|
37
6
|
// generate the vertical spacing offset
|
38
7
|
// @mixin vertical-spacing
|
@@ -40,8 +9,8 @@
|
|
40
9
|
// @param $top {Number} the units to offset from the top
|
41
10
|
// @param $bottom {Number} the units to offset from the bottom
|
42
11
|
// @param $method {String} [margin|padding] offset method
|
43
|
-
// @param $abuse {Boolean} @see
|
44
|
-
@mixin vertical-spacing($list: false, $top:
|
12
|
+
// @param $abuse {Boolean} @see _archetype_integerize
|
13
|
+
@mixin vertical-spacing($list: false, $top: null, $bottom: null, $method: false, $abuse: false) {
|
45
14
|
$list: get-collection($list, ($top $bottom), $min: 2);
|
46
15
|
@include _spacing($list, vertical, $method: $method, $abuse: $abuse);
|
47
16
|
}
|
@@ -51,8 +20,8 @@
|
|
51
20
|
// @param $left {Number} the units to offset from the left
|
52
21
|
// @param $right {Number} the units to offset from the right
|
53
22
|
// @param $method {String} [margin|padding] offset method
|
54
|
-
// @param $abuse {Boolean} @see
|
55
|
-
@mixin horizontal-spacing($list: false, $left:
|
23
|
+
// @param $abuse {Boolean} @see _archetype_integerize
|
24
|
+
@mixin horizontal-spacing($list: false, $left: null, $right: null, $method: false, $abuse: false) {
|
56
25
|
$list: get-collection($list, ($left $right), $min: 2);
|
57
26
|
@include _spacing($list, $method: $method, $abuse: $abuse);
|
58
27
|
}
|
@@ -62,7 +31,7 @@
|
|
62
31
|
// @private
|
63
32
|
// @param $units {List} the list of units e.g. (1) => $left:1 $right:1; (1 0) => $left:1 $right:0;
|
64
33
|
// @param $method {String} [margin|padding] offset method
|
65
|
-
// @param $abuse {Boolean} @see
|
34
|
+
// @param $abuse {Boolean} @see _archetype_integerize
|
66
35
|
@mixin _spacing($units, $direction: horizontal, $method: false, $abuse: false) {
|
67
36
|
@if(not $method) {
|
68
37
|
$method: $CONFIG_SPACING_METHOD;
|
@@ -72,7 +41,7 @@
|
|
72
41
|
@include if-set(#{$method}-bottom, vertical-spacing(nth($units,2), $abuse: $abuse), $ignore: nil);
|
73
42
|
}
|
74
43
|
@else {
|
75
|
-
@include if-set(#{$method}
|
76
|
-
@include if-set(#{$method}
|
44
|
+
@include if-set(#{$method}-left, horizontal-spacing(nth($units,1), $abuse: $abuse), $ignore: nil);
|
45
|
+
@include if-set(#{$method}-right, horizontal-spacing(nth($units,2), $abuse: $abuse), $ignore: nil);
|
77
46
|
}
|
78
47
|
}
|
@@ -1,19 +1,17 @@
|
|
1
|
-
@import "compass/layout/stretching";
|
2
|
-
|
3
1
|
// @category utilities/styles
|
4
2
|
|
3
|
+
// throw an error if archetype/util has not been registered
|
4
|
+
$a-blackhole: require-archetype-modules(archetype/util);
|
5
|
+
|
5
6
|
// this is a proxy for output-style
|
6
|
-
//
|
7
|
+
// this contains mixins that will eventually call output-style in one form or another
|
7
8
|
// @mixin _outputStyle
|
8
9
|
// @private
|
9
10
|
// @param $property {String} the CSS property to output
|
10
11
|
// @param $value {*} the CSS value to output
|
11
|
-
@mixin _outputStyle($property, $value:
|
12
|
-
@if($value
|
13
|
-
@if($property ==
|
14
|
-
@include round-button-ie-support($value)
|
15
|
-
}
|
16
|
-
@else if($property == target-browser) {
|
12
|
+
@mixin _outputStyle($property, $value: null) {
|
13
|
+
@if not is-null($value) {
|
14
|
+
@if($property == target-browser) {
|
17
15
|
@include target-browser(nth($value,1), nth($value,2), nth($value,3));
|
18
16
|
}
|
19
17
|
@else if($property == font-family) {
|
@@ -22,98 +20,89 @@
|
|
22
20
|
@else if($property == font-style) {
|
23
21
|
@include font-style($value);
|
24
22
|
}
|
25
|
-
@else if($property == hide-element) {
|
26
|
-
@include hide-element();
|
27
|
-
}
|
28
|
-
@else if($property == unstyled-button) {
|
29
|
-
@include unstyled-button();
|
30
|
-
}
|
31
23
|
@else {
|
32
24
|
@include output-style($property, $value);
|
33
25
|
}
|
34
26
|
}
|
35
27
|
}
|
36
28
|
|
29
|
+
@function check-for-custom-styler($property, $value, $method: pre) {
|
30
|
+
@return mixin-exists('custom-output-styler') and function-exits('has-custom-output-styler') and has-custom-output-styler($property, $value, $method);
|
31
|
+
}
|
32
|
+
|
37
33
|
// output a property or augment it to use a mixin
|
38
34
|
// @mixin output-style
|
39
35
|
// @param $property {String} the CSS property to output
|
40
36
|
// @param $value {*} the CSS value to output
|
41
|
-
@mixin output-style($property, $value:
|
42
|
-
|
43
|
-
|
37
|
+
@mixin output-style($property, $value: null) {
|
38
|
+
@if type-of($property) == map {
|
39
|
+
@include to-styles($property);
|
40
|
+
}
|
41
|
+
@elseif( not is-null($property) and length(-archetype-list($value)) > 0 and not is-null(first-value-of(-archetype-list($value))) and not index($CONFIG_DISABLED_CSS, $property)) {
|
44
42
|
// for mixins, we need to do some custom work
|
45
43
|
// check to see if we have a custom output styler (pre)
|
46
|
-
@if
|
44
|
+
@if check-for-custom-styler($property, $value, pre) {
|
47
45
|
@include custom-output-styler($property, $value, $method: pre);
|
48
46
|
}
|
47
|
+
// we're going to assume that any mixins that get invoked here have been properly imported
|
48
|
+
// if not, they will simply throw a compilation error
|
49
49
|
// border-radius
|
50
|
-
@else if($property == border-radius)
|
50
|
+
@else if($property == border-radius) { @include border-radius($value...); }
|
51
51
|
// box-sizing
|
52
|
-
@else if($property == box-sizing) { @include box-sizing($value); }
|
52
|
+
@else if($property == box-sizing) { @include box-sizing($value...); }
|
53
53
|
// box-shadow
|
54
|
-
@else if($property == box-shadow) { @include box-shadow($value); }
|
54
|
+
@else if($property == box-shadow) { @include box-shadow($value...); }
|
55
55
|
// text-shadow
|
56
56
|
@else if($property == text-shadow) { @include text-shadow($value); }
|
57
57
|
// filter-gradient
|
58
|
-
@else if($property == filter-gradient) { @include filter-gradient(
|
58
|
+
@else if($property == filter-gradient) { @include filter-gradient($value...); }
|
59
59
|
// background
|
60
|
-
@else if($property == background) { @include background($value); }
|
60
|
+
@else if($property == background) { @include background($value...); }
|
61
61
|
// background-image
|
62
|
-
@else if($property == background-image
|
62
|
+
@else if($property == background-image) { @include background-image($value...); }
|
63
63
|
// background-clip
|
64
|
-
@else if($property == background-clip) { @include background-clip($value); }
|
64
|
+
@else if($property == background-clip) { @include background-clip($value...); }
|
65
65
|
// background-size
|
66
|
-
@else if($property == background-size) { @include background-size($value); }
|
66
|
+
@else if($property == background-size) { @include background-size($value...); }
|
67
67
|
// background-origin
|
68
|
-
@else if($property == background-origin)
|
68
|
+
@else if($property == background-origin) { @include background-origin($value...); }
|
69
69
|
// IE filters
|
70
|
-
@else if($property == ie-filter) { @include ie-filter($value); }
|
70
|
+
@else if($property == ie-filter) { @include ie-filter($value...); }
|
71
71
|
// hide-text
|
72
|
-
@else if($property == hide-text) { @include hide-text($direction: if($value == true, $hide-text-direction, $value)); }
|
72
|
+
@else if($property == hide-text) { @include hide-text($direction: if($value == true, $hide-text-direction, $value...)); }
|
73
73
|
// inline-block
|
74
|
-
@else if($property == inline-block) { @include inline-block(); }
|
74
|
+
@else if($property == inline-block) { @include inline-block($value...); }
|
75
75
|
// opacity
|
76
|
-
@else if($property == opacity) { @include opacity($value); }
|
76
|
+
@else if($property == opacity) { @include opacity($value...); }
|
77
77
|
// min-width
|
78
|
-
@else if($property == min-width) { @include min-width($value); }
|
78
|
+
@else if($property == min-width) { @include min-width($value...); }
|
79
79
|
// min-height
|
80
|
-
@else if($property == min-height) { @include min-height($value); }
|
80
|
+
@else if($property == min-height) { @include min-height($value...); }
|
81
81
|
// max-width
|
82
|
-
@else if($property == max-width) { @include max-width($value); }
|
82
|
+
@else if($property == max-width) { @include max-width($value...); }
|
83
83
|
// max-height
|
84
|
-
@else if($property == max-height) { @include max-height($value); }
|
84
|
+
@else if($property == max-height) { @include max-height($value...); }
|
85
85
|
// stretch
|
86
|
-
@else if($property == stretch) { @include stretch(); }
|
86
|
+
@else if($property == stretch) { @include stretch($value...); }
|
87
87
|
// appearance
|
88
|
-
@else if($property == appearance) { @include appearance($value); }
|
88
|
+
@else if($property == appearance) { @include appearance($value...); }
|
89
89
|
// unhide-element
|
90
|
-
@else if($property == unhide-element) { @include unhide-element(); }
|
90
|
+
@else if($property == unhide-element) { @include unhide-element($value...); }
|
91
91
|
// ellipsis
|
92
|
-
@else if($property == ellipsis) { @include ellipsis(); }
|
92
|
+
@else if($property == ellipsis) { @include ellipsis($value...); }
|
93
93
|
// scale
|
94
|
-
@else if($property == scale) { @include scale($value); }
|
95
|
-
|
96
|
-
@else if($property ==
|
94
|
+
@else if($property == scale) { @include scale($value...); }
|
95
|
+
// z-index
|
96
|
+
@else if($property == z-index) { @include z-index($value...); }
|
97
|
+
@else if($property == glyph-icon) { @include glyph-icon($value...); }
|
98
|
+
@else if($property == extend) {
|
99
|
+
@each $v in -archetype-list($value) {
|
100
|
+
@extend #{$v};
|
101
|
+
}
|
102
|
+
}
|
97
103
|
// animations
|
98
104
|
@else if($property == animation) {
|
99
|
-
@
|
100
|
-
@include animation($value);
|
101
|
-
}
|
102
|
-
@else {
|
103
|
-
@if $experimental-support-for-webkit {
|
104
|
-
-webkit-animation: $value;
|
105
|
-
}
|
106
|
-
@if $experimental-support-for-mozilla {
|
107
|
-
-moz-animation: $value;
|
108
|
-
}
|
109
|
-
@if $experimental-support-for-microsoft {
|
110
|
-
-ms-animation: $value;
|
111
|
-
}
|
112
|
-
@if $experimental-support-for-opera {
|
113
|
-
-o-animation: $value;
|
114
|
-
}
|
115
|
-
animation: $value;
|
116
|
-
}
|
105
|
+
@include animation($value...);
|
117
106
|
}
|
118
107
|
// hasLayout
|
119
108
|
@else if($property == has-layout) {
|
@@ -122,7 +111,7 @@
|
|
122
111
|
@include has-layout();
|
123
112
|
}
|
124
113
|
@else {
|
125
|
-
@include has-layout($value);
|
114
|
+
@include has-layout($value...);
|
126
115
|
}
|
127
116
|
}
|
128
117
|
// clearfix
|
@@ -137,15 +126,9 @@
|
|
137
126
|
@include clearfix();
|
138
127
|
}
|
139
128
|
}
|
140
|
-
// z-index
|
141
|
-
@else if($property == z-index) {
|
142
|
-
$value: -compass-list($value);
|
143
|
-
@if(length($value) > 1) { @include z-index(nth($value, 1), nth($value, 2)); }
|
144
|
-
@else { @include z-index($value); }
|
145
|
-
}
|
146
129
|
// :before/:after
|
147
130
|
@else if($property == ie-pseudo-before or $property == ie-pseudo-after) {
|
148
|
-
$value: -
|
131
|
+
$value: -archetype-list($value);
|
149
132
|
$content: false;
|
150
133
|
$tag: '';
|
151
134
|
@if length($value) > 1 {
|
@@ -161,10 +144,8 @@
|
|
161
144
|
@include ie-pseudo-after(nth($value, 1), $content, $tag);
|
162
145
|
}
|
163
146
|
}
|
164
|
-
//ellipsis
|
165
|
-
@else if($property == ellipsis) { @include ellipsis(); }
|
166
147
|
// check to see if we have a custom output styler (post)
|
167
|
-
@else if
|
148
|
+
@else if check-for-custom-styler($property, $value, post) {
|
168
149
|
@include custom-output-styler($property, $value, $method: post);
|
169
150
|
}
|
170
151
|
// otherwise just use a key-value pair
|
@@ -172,67 +153,147 @@
|
|
172
153
|
}
|
173
154
|
}
|
174
155
|
|
156
|
+
// outputs @content into a placeholder, and then extends it,
|
157
|
+
// if the placeholder already exists, just extend it
|
158
|
+
// @mixin archetype-smart-content
|
159
|
+
// @param $placeholder {String} the placeholder
|
160
|
+
// @param $extend {Boolean} if false, will only create the placeholder, but not extend it
|
161
|
+
// @param $here {Boolean} if true, will force the content to be output in the current context, and not extended
|
162
|
+
// @content
|
163
|
+
@mixin archetype-smart-content($placeholder, $extend: true, $here: null) {
|
164
|
+
@if $CONFIG_USE_SMART_CONTENT and not $here {
|
165
|
+
// if we haven't already registered this placeholder...
|
166
|
+
@if not index($archetype-placeholder-registry, $placeholder) {
|
167
|
+
// create it...
|
168
|
+
@at-root #{$placeholder} {
|
169
|
+
@content;
|
170
|
+
}
|
171
|
+
// and register it...
|
172
|
+
$archetype-placeholder-registry: append($archetype-placeholder-registry, $placeholder) !global;
|
173
|
+
}
|
174
|
+
@if $extend {
|
175
|
+
@extend #{$placeholder} !optional;
|
176
|
+
}
|
177
|
+
}
|
178
|
+
@elseif $extend {
|
179
|
+
@content;
|
180
|
+
}
|
181
|
+
}
|
182
|
+
|
175
183
|
// convert a list of key-value pairs into CSS rules
|
176
184
|
// @mixin to-styles
|
177
|
-
// @param $
|
185
|
+
// @param $map {Map} a of styles
|
178
186
|
// @param $states {Boolean|List} if true, output all states; if false, output no states; if a list, output only the states in the list
|
179
187
|
// @param $exclude {List} a list of styles to exclude from output
|
180
|
-
@
|
181
|
-
|
182
|
-
|
183
|
-
$
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
188
|
+
// @param $here {Boolean} if true, will force the content to be output in the current context, and not extended
|
189
|
+
// @content
|
190
|
+
@mixin to-styles($map: (), $states: true, $selectors: true, $exclude: (), $meta: (), $here: null) {
|
191
|
+
@if $map {
|
192
|
+
$exclude: -archetype-list($exclude);
|
193
|
+
$placeholder: (
|
194
|
+
map: $map,
|
195
|
+
states: $states,
|
196
|
+
selectors: $selectors,
|
197
|
+
exclude: $exclude
|
198
|
+
);
|
199
|
+
|
200
|
+
$message: meta-message($map, map-merge($meta, (phase: begin, origin: $archetype-origin-function or styles)));
|
201
|
+
@if $message { /* #{$message} */ }
|
202
|
+
|
203
|
+
$placeholder: unquote("%#{tokenize($placeholder)}");
|
204
|
+
// register a placeholder if needed
|
205
|
+
@include archetype-smart-content($placeholder, $here: $here) {
|
206
|
+
@each $property, $value in $map {
|
207
|
+
@include with-each-value($value) {
|
208
|
+
// get the expected value given any runtime locale context
|
209
|
+
$value: get-runtime-locale-value($archetype-current-value);
|
210
|
+
@if not (index($exclude, $property) or $property == '-archetype-meta') {
|
211
|
+
// deal with the states
|
212
|
+
@if($property == states and $states != false and length($value) > 0) {
|
213
|
+
@each $state, $val in $value {
|
214
|
+
@if(index(-archetype-list($states), $state) or $states == true) {
|
215
|
+
// get the state selector mappings
|
216
|
+
$selector-map: _getStateSelectorMap($state);
|
217
|
+
// output the state selectors if we're not using _only_ BEM style
|
218
|
+
@if($CONFIG_STATE_BEM != only) {
|
219
|
+
$selector: map-get($selector-map, selector);
|
220
|
+
// if the selector is valid...
|
221
|
+
@if($selector != null) {
|
222
|
+
// output it
|
223
|
+
#{$selector} {
|
224
|
+
@include to-styles($val, true, true, $exclude);
|
225
|
+
}
|
226
|
+
}
|
227
|
+
}
|
228
|
+
// if BEM style states are enabled...
|
229
|
+
@if($CONFIG_STATE_BEM) {
|
230
|
+
// get the BEM states
|
231
|
+
$bem-states: map-get($selector-map, states);
|
232
|
+
// for each BEM state
|
233
|
+
@each $bem-state in $bem-states {
|
234
|
+
// output it (this looks scarier than it really is...)
|
235
|
+
@include bem($modifier: $bem-state) {
|
236
|
+
@include to-styles($val, true, true, $exclude);
|
237
|
+
}
|
238
|
+
}
|
239
|
+
}
|
240
|
+
}
|
197
241
|
}
|
198
242
|
}
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
243
|
+
// deal with the nested selectors
|
244
|
+
@else if($property == selectors and $selectors != false and length($value) > 0) {
|
245
|
+
@each $selector, $val in $value {
|
246
|
+
@if(index(-archetype-list($selectors), $selector) or $selectors == true) {
|
247
|
+
$sel: _getSelectorSelector($selector);
|
248
|
+
@if str-index($sel, '%bem ') == 1 {
|
249
|
+
$sel: str-replace($sel, '%bem ', '');
|
250
|
+
@include bem($element: $sel) {
|
251
|
+
@include to-styles($val, true, true, $exclude);
|
252
|
+
}
|
253
|
+
}
|
254
|
+
@else {
|
255
|
+
#{$sel} {
|
256
|
+
@include to-styles($val, true, true, $exclude);
|
257
|
+
}
|
258
|
+
}
|
259
|
+
}
|
207
260
|
}
|
208
261
|
}
|
262
|
+
// otherwise, just output it
|
263
|
+
@else if($selectors == true and $states == true ) {
|
264
|
+
@include _outputStyle($property, $value);
|
265
|
+
}
|
209
266
|
}
|
210
267
|
}
|
211
|
-
// otherwise, just output it
|
212
|
-
@else if($selectors == true and $states == true ) {
|
213
|
-
@include _outputStyle($property, $value);
|
214
|
-
|
215
|
-
}
|
216
268
|
}
|
217
269
|
}
|
270
|
+
|
271
|
+
$message: meta-message($map, map-merge($meta, (phase: end, origin: $archetype-origin-function or styles)));
|
272
|
+
@if $message { /* #{$message} */ }
|
273
|
+
|
274
|
+
// any original block content passed in...
|
275
|
+
@content;
|
218
276
|
}
|
219
277
|
}
|
220
278
|
|
221
279
|
// helper function to compute the selector for various states
|
222
|
-
// @function
|
280
|
+
// @function _getStateSelectorMap
|
223
281
|
// @private
|
224
282
|
// @param $state {String} the state to select
|
225
283
|
// @param $prefix {String} the prefix to append to the state (for class names only)
|
226
|
-
@function
|
227
|
-
$
|
228
|
-
@if $
|
229
|
-
$
|
284
|
+
@function _getStateSelectorMap($state, $prefix: $CONFIG_STATE_PREFIX) {
|
285
|
+
$map: map-get($CONFIG_STATE_MAPPINGS, $state);
|
286
|
+
@if $map == null or length($map) == 0 {
|
287
|
+
$map: (
|
288
|
+
selector : '&.#{if(index(-archetype-list($CONFIG_STATE_NO_PREFIX), $state), $prefix, "")}#{$state}',
|
289
|
+
states : ($state)
|
290
|
+
);
|
230
291
|
}
|
231
|
-
@return $
|
292
|
+
@return $map;
|
232
293
|
}
|
233
294
|
|
234
295
|
@function _getSelectorSelector($selector) {
|
235
|
-
$selector: first-value-of(-
|
296
|
+
$selector: first-value-of(-archetype-list($selector));
|
236
297
|
@if $selector == $CORE_GLYPH_SELECTOR_VAR {
|
237
298
|
$selector: $archetype-glyph-selector;
|
238
299
|
}
|
@@ -244,13 +305,13 @@
|
|
244
305
|
|
245
306
|
// mixin for outputting filters in legacy IE
|
246
307
|
// @mixin ie-filter
|
247
|
-
// @param $value {String|List} a set of filters to output
|
308
|
+
// @param $value {String|List} a set of filters to output
|
248
309
|
@mixin ie-filter($value, $use-prefix: false) {
|
249
310
|
$out: false;
|
250
|
-
$value: -
|
311
|
+
$value: -archetype-list($value);
|
251
312
|
$ms-filter-prefix: 'progid:DXImageTransform.Microsoft.';
|
252
313
|
@each $item in $value {
|
253
|
-
@if($item != none) {
|
314
|
+
@if($item != none and str-index($item, $ms-filter-prefix) != 1) {
|
254
315
|
$item: #{$ms-filter-prefix}#{$item};
|
255
316
|
}
|
256
317
|
$out: if($out, '#{$out},#{$item}', '#{$item}');
|
@@ -280,61 +341,23 @@
|
|
280
341
|
@include if-set(position, $position);
|
281
342
|
}
|
282
343
|
|
283
|
-
// this is a helper for simple gradients when a direction is desired in degrees,
|
284
|
-
// but we still want to support old webkit browsers
|
285
|
-
// @mixin gradient-with-deg
|
286
|
-
// @param $deg {Number} the direction degree
|
287
|
-
// @param $start {Color} the start color
|
288
|
-
// @param $end {Color} the end color
|
289
|
-
@mixin gradient-with-deg($deg, $start, $end) {
|
290
|
-
// make sure it's a deg
|
291
|
-
$deg: if(unitless($deg), $deg * 1deg, $deg);
|
292
|
-
// we'll divide the circle into sections
|
293
|
-
$sector: (360deg / 8);
|
294
|
-
// offset it for calculations
|
295
|
-
$tmp: $deg - ($sector / 2);
|
296
|
-
$map: (
|
297
|
-
(right top),
|
298
|
-
(right),
|
299
|
-
(right bottom),
|
300
|
-
(bottom),
|
301
|
-
(left bottom),
|
302
|
-
(left),
|
303
|
-
(left top),
|
304
|
-
(top)
|
305
|
-
);
|
306
|
-
// compute the region it falls in
|
307
|
-
$region: nth($map, ceil(if($tmp < 0deg, 360 - $tmp, $tmp) / $sector));
|
308
|
-
// NOTE: we temporarily disable old webkit gradients as they don't support degrees
|
309
|
-
// this is a fallback for old webkit
|
310
|
-
@if($support-for-original-webkit-gradients) {
|
311
|
-
background-image: -owg(linear-gradient($region, $start, $end));
|
312
|
-
}
|
313
|
-
$tmp: $support-for-original-webkit-gradients;
|
314
|
-
$support-for-original-webkit-gradients: false;
|
315
|
-
// now the others
|
316
|
-
@include background-image(linear-gradient($deg, $start, $end));
|
317
|
-
// restore the old webkit value
|
318
|
-
$support-for-original-webkit-gradients: $tmp;
|
319
|
-
}
|
320
|
-
|
321
344
|
// abstract common issues and generate safe styles
|
322
|
-
@mixin safe($property:
|
323
|
-
@if($property
|
345
|
+
@mixin safe($property: null, $value: null) {
|
346
|
+
@if not is-null($property) and not is-null($value) {
|
324
347
|
// os friendly font stacks
|
325
348
|
@if($property == font-family) {
|
326
|
-
$stack:
|
327
|
-
@if($stack
|
349
|
+
$stack: map-get($CONFIG_SAFE_FONTS, $value);
|
350
|
+
@if($stack and length($stack) > 0) {
|
328
351
|
// first, step through the list of os safe fonts
|
329
352
|
@each $collection in $stack {
|
330
353
|
@if(length($collection) > 1) {
|
331
|
-
$default:
|
354
|
+
$default: null;
|
332
355
|
$os: nth($collection, 1);
|
333
356
|
$fonts: nth($collection, 2);
|
334
|
-
$family:
|
357
|
+
$family: null;
|
335
358
|
// next, step through the list of lang safe fonts
|
336
359
|
@each $item in $fonts {
|
337
|
-
@if($item
|
360
|
+
@if not is-null($item) {
|
338
361
|
$lang: nth($item, 1);
|
339
362
|
$font: nth($item, 2);
|
340
363
|
// check if the language matches or it's the default
|
@@ -346,13 +369,13 @@
|
|
346
369
|
$default: $font;
|
347
370
|
}
|
348
371
|
// if the keyword `default` is in the font-stack, substitute it with the default font-stack
|
349
|
-
$family: list-replace($family, index(-
|
372
|
+
$family: list-replace($family, index(-archetype-list($family), default), $default, comma);
|
350
373
|
}
|
351
374
|
}
|
352
375
|
@include target-os($os, font-family, $family);
|
353
376
|
}
|
354
377
|
}
|
355
|
-
$value:
|
378
|
+
$value: null;
|
356
379
|
}
|
357
380
|
}
|
358
381
|
// text-transform: uppercase isn't friendly to turkish
|
@@ -360,18 +383,18 @@
|
|
360
383
|
// TODO - more investigation, this may affect other locales as well
|
361
384
|
// @link http://www.w3.org/International/tests/html-css/text-transform/results-text-transform
|
362
385
|
// @link https://developer.mozilla.org/en/CSS/text-transform
|
363
|
-
$value:
|
386
|
+
$value: null;
|
364
387
|
}
|
365
388
|
@else if($property == font-variant and $value == small-caps and lang(tr_TR)) {
|
366
389
|
// TODO - more investigation, this may affect other locales as well
|
367
390
|
// @link https://developer.mozilla.org/en/CSS/font-variant
|
368
|
-
$value:
|
391
|
+
$value: null;
|
369
392
|
}
|
370
393
|
// italics aren't pretty in CJK
|
371
394
|
@else if($property == font-style and $value == italic and lang(CJK)) {
|
372
|
-
$value:
|
395
|
+
$value: null;
|
373
396
|
}
|
374
|
-
// if $value was set to `
|
397
|
+
// if $value was set to `null`, this does nothing
|
375
398
|
@include output-style($property, $value);
|
376
399
|
}
|
377
400
|
}
|
@@ -379,7 +402,7 @@
|
|
379
402
|
// web-safe font stacks, if no safe fonts are found, use the raw `$family` as output
|
380
403
|
// @mixin font-family
|
381
404
|
// @param $family {String} the font stack to output
|
382
|
-
@mixin font-family($family:
|
405
|
+
@mixin font-family($family: null) {
|
383
406
|
@include safe(font-family, $family);
|
384
407
|
}
|
385
408
|
|
@@ -398,7 +421,7 @@
|
|
398
421
|
// safely use font-style without localization issues
|
399
422
|
// @mixin font-style
|
400
423
|
// @param $style {String} the style
|
401
|
-
@mixin font-style($style:
|
424
|
+
@mixin font-style($style: null) {
|
402
425
|
@include safe(font-style, $style);
|
403
426
|
}
|
404
427
|
|
@@ -413,15 +436,3 @@
|
|
413
436
|
}
|
414
437
|
z-index: ($value + $layer);
|
415
438
|
}
|
416
|
-
|
417
|
-
// generate a tag name with a prefix
|
418
|
-
// @function prefixed-tag
|
419
|
-
// @param $tag {String} the tag to prefix
|
420
|
-
// @param $prefix {String} the prefix to prepend to the tag
|
421
|
-
// @return {String} the prefix joined with the tag
|
422
|
-
@function prefixed-tag($tag: '', $prefix: $CONFIG_GENERATED_TAG_PREFIX) {
|
423
|
-
@if $tag != '' {
|
424
|
-
$tag: '-#{$tag}';
|
425
|
-
}
|
426
|
-
@return '#{$prefix}#{$tag}';
|
427
|
-
}
|