archetype 0.0.1.pre.1 → 0.0.1.pre.3.00dfd9a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (185) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +88 -0
  3. data/LICENSE +16 -0
  4. data/README.md +87 -1
  5. data/VERSION.yml +6 -0
  6. data/lib/README.rdoc +4 -0
  7. data/lib/archetype.rb +45 -0
  8. data/lib/archetype/functions.rb +9 -0
  9. data/lib/archetype/functions/hash.rb +149 -0
  10. data/lib/archetype/functions/helpers.rb +125 -0
  11. data/lib/archetype/functions/styleguide_memoizer.rb +61 -0
  12. data/lib/archetype/sass_extensions.rb +6 -0
  13. data/lib/archetype/sass_extensions/functions.rb +14 -0
  14. data/lib/archetype/sass_extensions/functions/environment.rb +14 -0
  15. data/lib/archetype/sass_extensions/functions/lists.rb +284 -0
  16. data/lib/archetype/sass_extensions/functions/locale.rb +77 -0
  17. data/lib/archetype/sass_extensions/functions/numbers.rb +19 -0
  18. data/lib/archetype/sass_extensions/functions/styleguide.rb +406 -0
  19. data/lib/archetype/sass_extensions/functions/ui.rb +59 -0
  20. data/lib/archetype/sass_extensions/functions/version.rb +95 -0
  21. data/lib/archetype/version.rb +75 -0
  22. data/stylesheets/_archetype.scss +2 -0
  23. data/stylesheets/archetype/_base.scss +46 -0
  24. data/stylesheets/archetype/_config.scss +366 -0
  25. data/stylesheets/archetype/_grid.scss +3 -0
  26. data/stylesheets/archetype/_hacks.scss +72 -0
  27. data/stylesheets/archetype/_init.scss +23 -0
  28. data/stylesheets/archetype/_styleguide.scss +6 -0
  29. data/stylesheets/archetype/_ui.scss +326 -0
  30. data/stylesheets/archetype/_util.scss +12 -0
  31. data/stylesheets/archetype/base/_h5bp.scss +307 -0
  32. data/stylesheets/archetype/base/_hybrid.scss +25 -0
  33. data/stylesheets/archetype/base/_normalize.scss +595 -0
  34. data/stylesheets/archetype/base/_reset.scss +72 -0
  35. data/stylesheets/archetype/grid/_config.scss +14 -0
  36. data/stylesheets/archetype/grid/_grid.scss +391 -0
  37. data/stylesheets/archetype/styleguide/_components.scss +25 -0
  38. data/stylesheets/archetype/styleguide/_helpers.scss +215 -0
  39. data/stylesheets/archetype/styleguide/_primitives.scss +10 -0
  40. data/stylesheets/archetype/styleguide/_styleguide.scss +41 -0
  41. data/stylesheets/archetype/styleguide/components/_alerts.scss +59 -0
  42. data/stylesheets/archetype/styleguide/components/_annotations.scss +27 -0
  43. data/stylesheets/archetype/styleguide/components/_bristol.scss +15 -0
  44. data/stylesheets/archetype/styleguide/components/_button_groups.scss +47 -0
  45. data/stylesheets/archetype/styleguide/components/_button_toolbars.scss +17 -0
  46. data/stylesheets/archetype/styleguide/components/_buttons.scss +338 -0
  47. data/stylesheets/archetype/styleguide/components/_canvas.scss +15 -0
  48. data/stylesheets/archetype/styleguide/components/_carets.scss +336 -0
  49. data/stylesheets/archetype/styleguide/components/_closes.scss +63 -0
  50. data/stylesheets/archetype/styleguide/components/_container.scss +27 -0
  51. data/stylesheets/archetype/styleguide/components/_copy.scss +85 -0
  52. data/stylesheets/archetype/styleguide/components/_flyouts.scss +52 -0
  53. data/stylesheets/archetype/styleguide/components/_headings.scss +33 -0
  54. data/stylesheets/archetype/styleguide/components/_headlines.scss +63 -0
  55. data/stylesheets/archetype/styleguide/components/_hovercards.scss +27 -0
  56. data/stylesheets/archetype/styleguide/components/_icons.scss +17 -0
  57. data/stylesheets/archetype/styleguide/components/_identities.scss +34 -0
  58. data/stylesheets/archetype/styleguide/components/_links.scss +66 -0
  59. data/stylesheets/archetype/styleguide/components/_loaders.scss +154 -0
  60. data/stylesheets/archetype/styleguide/components/_menu_items.scss +31 -0
  61. data/stylesheets/archetype/styleguide/components/_module.scss +15 -0
  62. data/stylesheets/archetype/styleguide/components/_pullquotes.scss +29 -0
  63. data/stylesheets/archetype/styleguide/components/_punchcut.scss +18 -0
  64. data/stylesheets/archetype/styleguide/components/_tooltips.scss +28 -0
  65. data/stylesheets/archetype/styleguide/primitives/_animations.scss +17 -0
  66. data/stylesheets/archetype/styleguide/primitives/_dimensions.scss +50 -0
  67. data/stylesheets/archetype/styleguide/primitives/_glyphs.scss +11 -0
  68. data/stylesheets/archetype/styleguide/primitives/_misc.scss +8 -0
  69. data/stylesheets/archetype/styleguide/primitives/_palettes.scss +94 -0
  70. data/stylesheets/archetype/styleguide/primitives/_shadows.scss +23 -0
  71. data/stylesheets/archetype/styleguide/primitives/_sprites.scss +46 -0
  72. data/stylesheets/archetype/styleguide/primitives/_textures.scss +10 -0
  73. data/stylesheets/archetype/styleguide/primitives/_typography.scss +56 -0
  74. data/stylesheets/archetype/util/_debug.scss +40 -0
  75. data/stylesheets/archetype/util/_lists.scss +57 -0
  76. data/stylesheets/archetype/util/_misc.scss +108 -0
  77. data/stylesheets/archetype/util/_rtl.scss +279 -0
  78. data/stylesheets/archetype/util/_spacing.scss +78 -0
  79. data/stylesheets/archetype/util/_styles.scss +466 -0
  80. data/stylesheets/archetype/util/_targeting.scss +210 -0
  81. data/stylesheets/archetype/util/_units.scss +18 -0
  82. data/templates/example/index.html +40 -0
  83. data/templates/example/manifest.rb +13 -0
  84. data/templates/example/screen.scss +99 -0
  85. data/templates/example/vendor/archetype/animations/loaders/large/large.png +0 -0
  86. data/templates/example/vendor/archetype/animations/loaders/large/large_dark.png +0 -0
  87. data/templates/example/vendor/archetype/animations/loaders/large/large_dark_static.png +0 -0
  88. data/templates/example/vendor/archetype/animations/loaders/large/large_static.png +0 -0
  89. data/templates/example/vendor/archetype/animations/loaders/medium/medium.png +0 -0
  90. data/templates/example/vendor/archetype/animations/loaders/medium/medium_dark.png +0 -0
  91. data/templates/example/vendor/archetype/animations/loaders/medium/medium_dark_static.png +0 -0
  92. data/templates/example/vendor/archetype/animations/loaders/medium/medium_static.png +0 -0
  93. data/templates/example/vendor/archetype/animations/loaders/small/small.png +0 -0
  94. data/templates/example/vendor/archetype/animations/loaders/small/small_dark.png +0 -0
  95. data/templates/example/vendor/archetype/animations/loaders/small/small_dark_static.png +0 -0
  96. data/templates/example/vendor/archetype/animations/loaders/small/small_static.png +0 -0
  97. data/templates/example/vendor/archetype/fontawesome-webfont.eot +0 -0
  98. data/templates/example/vendor/archetype/fontawesome-webfont.svg +255 -0
  99. data/templates/example/vendor/archetype/fontawesome-webfont.ttf +0 -0
  100. data/templates/example/vendor/archetype/fontawesome-webfont.woff +0 -0
  101. data/templates/project/manifest.rb +9 -0
  102. data/templates/project/screen.scss +1 -0
  103. data/templates/project/vendor/archetype/animations/loaders/large/large.png +0 -0
  104. data/templates/project/vendor/archetype/animations/loaders/large/large_dark.png +0 -0
  105. data/templates/project/vendor/archetype/animations/loaders/large/large_dark_static.png +0 -0
  106. data/templates/project/vendor/archetype/animations/loaders/large/large_static.png +0 -0
  107. data/templates/project/vendor/archetype/animations/loaders/medium/medium.png +0 -0
  108. data/templates/project/vendor/archetype/animations/loaders/medium/medium_dark.png +0 -0
  109. data/templates/project/vendor/archetype/animations/loaders/medium/medium_dark_static.png +0 -0
  110. data/templates/project/vendor/archetype/animations/loaders/medium/medium_static.png +0 -0
  111. data/templates/project/vendor/archetype/animations/loaders/small/small.png +0 -0
  112. data/templates/project/vendor/archetype/animations/loaders/small/small_dark.png +0 -0
  113. data/templates/project/vendor/archetype/animations/loaders/small/small_dark_static.png +0 -0
  114. data/templates/project/vendor/archetype/animations/loaders/small/small_static.png +0 -0
  115. data/templates/project/vendor/archetype/fontawesome-webfont.eot +0 -0
  116. data/templates/project/vendor/archetype/fontawesome-webfont.svg +255 -0
  117. data/templates/project/vendor/archetype/fontawesome-webfont.ttf +0 -0
  118. data/templates/project/vendor/archetype/fontawesome-webfont.woff +0 -0
  119. data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.eot +0 -0
  120. data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.svg +255 -0
  121. data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.ttf +0 -0
  122. data/test/fixtures/stylesheets/archetype/assets/fonts/fontawesome-webfont.woff +0 -0
  123. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large.png +0 -0
  124. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large_dark.png +0 -0
  125. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large_dark_static.png +0 -0
  126. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/large/large_static.png +0 -0
  127. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium.png +0 -0
  128. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium_dark.png +0 -0
  129. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium_dark_static.png +0 -0
  130. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/medium/medium_static.png +0 -0
  131. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small.png +0 -0
  132. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small_dark.png +0 -0
  133. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small_dark_static.png +0 -0
  134. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders/small/small_static.png +0 -0
  135. data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/sprites/hovercard_tip.png +0 -0
  136. data/test/fixtures/stylesheets/archetype/config.rb +19 -0
  137. data/test/fixtures/stylesheets/archetype/expected/b.css +14 -0
  138. data/test/fixtures/stylesheets/archetype/expected/base.css +349 -0
  139. data/test/fixtures/stylesheets/archetype/expected/hacks/ie_pseudo.css +11 -0
  140. data/test/fixtures/stylesheets/archetype/expected/locale.css +23 -0
  141. data/test/fixtures/stylesheets/archetype/expected/styleguide/buttons.css +2091 -0
  142. data/test/fixtures/stylesheets/archetype/expected/styleguide/fallback_styles.css +9 -0
  143. data/test/fixtures/stylesheets/archetype/expected/styleguide/nested_styleguides.css +24 -0
  144. data/test/fixtures/stylesheets/archetype/expected/styleguide/selective_state.css +174 -0
  145. data/test/fixtures/stylesheets/archetype/expected/ui/glyph_icon.css +37 -0
  146. data/test/fixtures/stylesheets/archetype/expected/ui/hide_element.css +8 -0
  147. data/test/fixtures/stylesheets/archetype/expected/ui/stroke.css +17 -0
  148. data/test/fixtures/stylesheets/archetype/expected/ui/triangle.css +35 -0
  149. data/test/fixtures/stylesheets/archetype/expected/utilities/associative.css +9 -0
  150. data/test/fixtures/stylesheets/archetype/expected/utilities/if-set.css +9 -0
  151. data/test/fixtures/stylesheets/archetype/expected/utilities/spacing/horizontal-spacing.css +29 -0
  152. data/test/fixtures/stylesheets/archetype/expected/utilities/spacing/vertical-spacing.css +29 -0
  153. data/test/fixtures/stylesheets/archetype/expected/utilities/styles/filter.css +11 -0
  154. data/test/fixtures/stylesheets/archetype/expected/utilities/styles/font-family.css +16 -0
  155. data/test/fixtures/stylesheets/archetype/expected/utilities/styles/z-index.css +15 -0
  156. data/test/fixtures/stylesheets/archetype/expected/utilities/targeting/target-browser.css +100 -0
  157. data/test/fixtures/stylesheets/archetype/expected/utilities/targeting/target-os.css +55 -0
  158. data/test/fixtures/stylesheets/archetype/source/b.scss +9 -0
  159. data/test/fixtures/stylesheets/archetype/source/base.scss +3 -0
  160. data/test/fixtures/stylesheets/archetype/source/hacks/ie_pseudo.scss +13 -0
  161. data/test/fixtures/stylesheets/archetype/source/locale.scss +43 -0
  162. data/test/fixtures/stylesheets/archetype/source/styleguide/buttons.scss +18 -0
  163. data/test/fixtures/stylesheets/archetype/source/styleguide/fallback_styles.scss +22 -0
  164. data/test/fixtures/stylesheets/archetype/source/styleguide/nested_styleguides.scss +40 -0
  165. data/test/fixtures/stylesheets/archetype/source/styleguide/selective_state.scss +22 -0
  166. data/test/fixtures/stylesheets/archetype/source/ui/glyph_icon.scss +13 -0
  167. data/test/fixtures/stylesheets/archetype/source/ui/hide_element.scss +5 -0
  168. data/test/fixtures/stylesheets/archetype/source/ui/stroke.scss +13 -0
  169. data/test/fixtures/stylesheets/archetype/source/ui/triangle.scss +13 -0
  170. data/test/fixtures/stylesheets/archetype/source/utilities/associative.scss +24 -0
  171. data/test/fixtures/stylesheets/archetype/source/utilities/if-set.scss +16 -0
  172. data/test/fixtures/stylesheets/archetype/source/utilities/spacing/horizontal-spacing.scss +27 -0
  173. data/test/fixtures/stylesheets/archetype/source/utilities/spacing/vertical-spacing.scss +27 -0
  174. data/test/fixtures/stylesheets/archetype/source/utilities/styles/filter.scss +9 -0
  175. data/test/fixtures/stylesheets/archetype/source/utilities/styles/font-family.scss +9 -0
  176. data/test/fixtures/stylesheets/archetype/source/utilities/styles/z-index.scss +18 -0
  177. data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-browser.scss +70 -0
  178. data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-os.scss +42 -0
  179. data/test/helpers/diff.rb +49 -0
  180. data/test/helpers/io.rb +36 -0
  181. data/test/helpers/test_case.rb +62 -0
  182. data/test/integrations/archetype_test.rb +126 -0
  183. data/test/test_helper.rb +26 -0
  184. data/test/units/sass_extensions_test.rb +207 -0
  185. metadata +303 -15
@@ -0,0 +1,23 @@
1
+ // ==========
2
+ // SHADOWS
3
+ // ==========
4
+
5
+ // containers
6
+ $CONFIG_SHADOW_FLYOUT: (1px 1px 3px rgba(0,0,0, .25)) !default;
7
+ $CONFIG_SHADOW_CONTAINER: (0 2px 2px rgba(0,0,0, 0.25)) !default;
8
+ $CONFIG_SHADOW_CONTAINER_ALT: (ie lte 8, border-bottom, 2px solid #CCCCCC) !default;
9
+ $CONFIG_SHADOW_TOOLTIP: (0 1px 2px rgba(0,0,0, 0.1)) !default;
10
+ $CONFIG_SHADOW_HOVERCARD: (0 1px 2px rgba(0,0,0, 0.2)) !default;
11
+ $CONFIG_SHADOW_PUNCHCUT_INSET: (0 0 43px rgba(0,0,0, .75) inset) !default;
12
+ $CONFIG_SHADOW_ALERT: (0 1px 2px rgba(0,0,0, .45)) !default;
13
+
14
+ // text
15
+ $CONFIG_SHADOW_COPY: (nil (1px 1px 1px rgba(0,0,0, .75))) !default;
16
+ $CONFIG_SHADOW_CLOSES: (1px 1px 1px rgba(0,0,0, .35)) !default;
17
+ $CONFIG_SHADOW_BREADCRUMB: (1px 1px 1px rgba(255, 255, 255, .5)) !default;
18
+
19
+ // buttons
20
+ $CONFIG_SHADOW_BUTTON_TEXT: (0 -1px 0 rgba(0,0,0, 0.25)) !default;
21
+ $CONFIG_SHADOW_BUTTON_TEXT_INVERTED: (0 -1px 0 rgba(255,255,255, 0.25)) !default;
22
+ $CONFIG_SHADOW_BUTTON_HOVER: (0 0 8px rgba(0,0,0, 0.15)) !default;
23
+ $CONFIG_SHADOW_BUTTON_ACTIVE: (0 1px 3px rgba(0,0,0, .25) inset) !default;
@@ -0,0 +1,46 @@
1
+ // ==========
2
+ // SPRITE MAPS
3
+ // ==========
4
+
5
+ // LOADERS
6
+ $CONFIG_SPRITE_LOADERS: false !default;
7
+ @if _shouldSetSprite($CONFIG_SPRITE_LOADERS) {
8
+ $CONFIG_SPRITE_LOADERS: sprite-map("vendor/archetype/animations/loaders/**/*.png");
9
+ }
10
+ $CONFIG_IMG_LOADERS_SMALL: (small small_dark) !default;
11
+ $CONFIG_IMG_LOADERS_SMALL_STATIC: (small_static small_dark_static) !default;
12
+ $CONFIG_IMG_LOADERS_MEDIUM: (medium medium_dark) !default;
13
+ $CONFIG_IMG_LOADERS_MEDIUM_STATIC: (medium_static medium_dark_static) !default;
14
+ $CONFIG_IMG_LOADERS_LARGE: (large large_dark) !default;
15
+ $CONFIG_IMG_LOADERS_LARGE_STATIC: (large_static large_dark_static) !default;
16
+ $CONFIG_LOADERS: (
17
+ (medium, (
18
+ default $CONFIG_IMG_LOADERS_MEDIUM,
19
+ static $CONFIG_IMG_LOADERS_MEDIUM_STATIC,
20
+ steps $CONFIG_ANIM_LOADERS_MEDIUM_STEP,
21
+ delay $CONFIG_ANIM_LOADERS_MEDIUM_DELAY,
22
+ iterations $CONFIG_ANIM_LOADERS_MEDIUM_ITERATIONS,
23
+ duration $CONFIG_ANIM_LOADERS_MEDIUM_DURATION
24
+ )),
25
+ (small, (
26
+ default $CONFIG_IMG_LOADERS_SMALL,
27
+ static $CONFIG_IMG_LOADERS_SMALL_STATIC,
28
+ steps $CONFIG_ANIM_LOADERS_SMALL_STEP,
29
+ delay $CONFIG_ANIM_LOADERS_SMALL_DELAY,
30
+ iterations $CONFIG_ANIM_LOADERS_SMALL_ITERATIONS,
31
+ duration $CONFIG_ANIM_LOADERS_SMALL_DURATION
32
+ )),
33
+ (large, (
34
+ default $CONFIG_IMG_LOADERS_LARGE,
35
+ static $CONFIG_IMG_LOADERS_LARGE_STATIC,
36
+ steps $CONFIG_ANIM_LOADERS_LARGE_STEP,
37
+ delay $CONFIG_ANIM_LOADERS_LARGE_DELAY,
38
+ iterations $CONFIG_ANIM_LOADERS_LARGE_ITERATIONS,
39
+ duration $CONFIG_ANIM_LOADERS_LARGE_DURATION
40
+ )),
41
+
42
+ nil
43
+ ) !default;
44
+ @if $CONFIG_KEYFRAMES_AUTO {
45
+ @include generate-loader-keyframes();
46
+ }
@@ -0,0 +1,10 @@
1
+ // ==========
2
+ // TEXTURES
3
+ // ==========
4
+
5
+ $CONFIG_TEXTURE_HEADING: (#FEFEFE) !default;
6
+ $CONFIG_TEXTURE_MODULE: (#EEEEEE) !default;
7
+ $CONFIG_TEXTURE_CONTAINER: (#FFFFFF #000000) !default;
8
+ $CONFIG_TEXTURE_BRISTOL: (#2C2C2C) !default;
9
+ $CONFIG_TEXTURE_CANVAS: (#CCCCCC) !default;
10
+ $CONFIG_TEXTURE_PUNCHCUT: (#333333) !default;
@@ -0,0 +1,56 @@
1
+ // ==========
2
+ // TYPOGRAPHY
3
+ // ==========
4
+
5
+ // HEADLINES
6
+ $CONFIG_FONT_HEADLINE_XXLARGE: (24px 26px) !default; // XXLarge headline
7
+ $CONFIG_FONT_HEADLINE_XLARGE: (22px 24px) !default; // XLarge headline
8
+ $CONFIG_FONT_HEADLINE_LARGE: (18px 22px) !default; // Large headline
9
+ $CONFIG_FONT_HEADLINE_MEDIUM: (16px 18px) !default; // Medium headline
10
+ $CONFIG_FONT_HEADLINE_SMALL: (14px 16px) !default; // Small headline
11
+ $CONFIG_FONT_HEADLINE_XSMALL: (13px 17px) !default; // XSmall headline
12
+
13
+ // GENERIC COPY
14
+ $CONFIG_FONT_COPY_LARGE: (16px 20px) !default; // Large copy
15
+ $CONFIG_FONT_COPY_MEDIUM: (13px 17px) !default; // Medium copy
16
+ $CONFIG_FONT_COPY_SMALL: (12px 14px) !default; // Small copy
17
+ // unused
18
+ $CONFIG_FONT_COPY_XSMALL: $CONFIG_FONT_COPY_SMALL !default; // XSmall copy
19
+ $CONFIG_FONT_COPY_XLARGE: $CONFIG_FONT_COPY_LARGE !default; // XLarge copy
20
+ $CONFIG_FONT_COPY_XXLARGE: $CONFIG_FONT_COPY_XLARGE !default; // XXLarge copy
21
+
22
+ // NOTICE COPY
23
+ $CONFIG_FONT_NOTICE: (15px 20px) !default; // notice copy
24
+
25
+ // PULLQUOTES
26
+ $CONFIG_FONT_PULLQUOTE_MEDIUM: (22px 24px) !default; // Medium pullquote
27
+ // unused
28
+ $CONFIG_FONT_PULLQUOTE_SMALL: $CONFIG_FONT_PULLQUOTE_MEDIUM !default; // Small pullquote
29
+ $CONFIG_FONT_PULLQUOTE_XSMALL: $CONFIG_FONT_PULLQUOTE_SMALL !default; // XSmall pullquote
30
+ $CONFIG_FONT_PULLQUOTE_LARGE: $CONFIG_FONT_PULLQUOTE_MEDIUM !default; // Large pullquote
31
+ $CONFIG_FONT_PULLQUOTE_XLARGE: $CONFIG_FONT_PULLQUOTE_LARGE !default; // XLarge pullquote
32
+ $CONFIG_FONT_PULLQUOTE_XXLARGE: $CONFIG_FONT_PULLQUOTE_XLARGE !default; // XXLarge pullquote
33
+
34
+ // ANNOTATIONS
35
+ $CONFIG_FONT_ANNOTATION_MEDIUM: (12px 14px) !default; // Medium annotation
36
+ // unused
37
+ $CONFIG_FONT_ANNOTATION_SMALL: $CONFIG_FONT_ANNOTATION_MEDIUM !default; // Sall annotation
38
+ $CONFIG_FONT_ANNOTATION_XSMALL: $CONFIG_FONT_ANNOTATION_SMALL !default; // XSmall annotation
39
+ $CONFIG_FONT_ANNOTATION_LARGE: $CONFIG_FONT_ANNOTATION_MEDIUM !default; // Large annotation
40
+ $CONFIG_FONT_ANNOTATION_XLARGE: $CONFIG_FONT_ANNOTATION_LARGE !default; // XLarge annotation
41
+ $CONFIG_FONT_ANNOTATION_XXLARGE: $CONFIG_FONT_ANNOTATION_XLARGE !default; // XXLarge annotation
42
+
43
+ // BUTTONS
44
+ // (font-size, vertical-padding, horizontal-padding)
45
+ $CONFIG_FONT_BUTTON_LARGE: (16px vertical-spacing(1.8, $abuse: true) horizontal-spacing(3)) !default;
46
+ $CONFIG_FONT_BUTTON_MEDIUM: (13px vertical-spacing(1.6, $abuse: true) horizontal-spacing(2.6, $abuse: true)) !default;
47
+ $CONFIG_FONT_BUTTON_SMALL: (12px vertical-spacing(1.2, $abuse: true) horizontal-spacing(2)) !default;
48
+
49
+ // CARETS
50
+ $CONFIG_FONT_CARET_LARGE: 6px !default;
51
+ $CONFIG_FONT_CARET_MEDIUM: 5px !default;
52
+ $CONFIG_FONT_CARET_SMALL: 4px !default;
53
+
54
+ // BREADCRUMBS
55
+ $CONFIG_FONT_BREADCRUMB: 13px !default;
56
+ $CONFIG_FONT_WEIGHT_BREADCRUMB: bold !default;
@@ -0,0 +1,40 @@
1
+ // @category utilities/debug
2
+
3
+ // check if debug is enabled
4
+ // @function is-debug-enabled
5
+ // @param $if {Bool} optional override for $CONFIG_DEBUG
6
+ // @return {Bool} 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
+ }
12
+
13
+ // a debug helper, print out a message
14
+ // @mixin debug-message
15
+ // @param $message {String} the message to output
16
+ // @param $if {Bool} override $CONFIG_DEBUG
17
+ @mixin debug-message($message, $if: nil) {
18
+ @if(is-debug-enabled($if)) {
19
+ @if archetype-version('sass >= 3.2') {
20
+ /* #{$message} */
21
+ }
22
+ @else {
23
+ -archetype-debug: quote($message);
24
+ }
25
+ }
26
+ }
27
+
28
+ // a debug helper, draws a "border" around the container when hovered and change opacity
29
+ // @mixin debug-hover-box
30
+ // @param $color {String} the color to draw the border
31
+ // @param $opacity {Number}
32
+ // @param $if {Bool} override $CONFIG_DEBUG
33
+ @mixin debug-hover-box($color: rgb(0, 255, 255), $opacity: 0.9, $if: nil) {
34
+ @if(is-debug-enabled($if)) {
35
+ &:hover {
36
+ @include opacity($opacity);
37
+ @include box-shadow(0 0 3px 0 $color);
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,57 @@
1
+ // @category utilities/lists
2
+
3
+ // remove an index from a list
4
+ // @function list-remove
5
+ // @param $list {List} the list to remove from
6
+ // @param $idx {Number} the index to remove
7
+ // @param $separator {String} the separator to use [auto|comma|space]
8
+ // @return $new-list {Bool} the list with removed index
9
+ @function list-remove($list: (), $idx: false, $separator: auto) {
10
+ @return list-replace($list: $list, $idx: $idx, $value: nil, $separator: $separator);
11
+ }
12
+
13
+ // replace an index in a list
14
+ // @function list-replace
15
+ // @param $list {List} the list to replace from
16
+ // @param $value {*} the value to replace (if nil, it's a removal)
17
+ // @param $idx {Number} the index to replace
18
+ // @param $separator {String} the separator to use [auto|comma|space]
19
+ // @return $new-list {List} the list with replaced index
20
+ @function list-replace($list: (), $idx: false, $value: nil, $separator: auto) {
21
+ $list: -compass-list($list);
22
+ // if no index was provided, just return the original list
23
+ @if($idx == false) {
24
+ @return $list;
25
+ }
26
+ $new-list: ();
27
+ @for $i from 1 through length($list) {
28
+ @if $i != $idx {
29
+ $new-list: append($new-list, nth($list, $i), $separator);
30
+ }
31
+ @else if($value != nil) {
32
+ $new-list: append($new-list, $value, $separator);
33
+ }
34
+ }
35
+ @return $new-list;
36
+ }
37
+
38
+ // map collection items to conform to a well defined collection
39
+ // this is primarily used to convert shorthand notations into symmetrical longhand notations
40
+ // @function get-collection
41
+ // @private
42
+ // @param $list {List} input list
43
+ // @param $components {List} list of components
44
+ // @param $min {Number} the minimum length of the collection
45
+ // @return $list {List} formatted collection
46
+ // @usage:
47
+ // $padding: get-collection(10px, $min: 2) => 10px 10px
48
+ // $offset: get-collection($components: (1 2), $min: 4) => 1 2 1 2
49
+ @function get-collection($list: false, $components: false, $min: 1) {
50
+ @if($list == false) {
51
+ $list: $components;
52
+ }
53
+ @while(length($list) < $min) {
54
+ $list: $list $list;
55
+ }
56
+ @return $list;
57
+ }
@@ -0,0 +1,108 @@
1
+ // @category utilities
2
+
3
+ // simplify checking if a value is defined before outputting it to a property
4
+ // @mixin if-set
5
+ // @param $property {String} css property to define
6
+ // @param $value {String} a valid css value for property
7
+ // @param $ignore {List} a list of "falsy" values
8
+ // @usage
9
+ // =if-set(margin, $margin, $ignore: (5px 10px)); // will only output margin if it is not 5px or 10px
10
+ @mixin if-set($property, $value: false, $ignore: false) {
11
+ @if($ignore == false) {
12
+ $ignore: (0 0px);
13
+ }
14
+ @if($value != false and not index(-compass-list($ignore), $value)) {
15
+ #{$property}: $value;
16
+ }
17
+ }
18
+
19
+ $REGISTRY_DO_ONCE: () !default;
20
+ // a function to prevent routines from executing multiple times
21
+ // @function do-once
22
+ // @param $name {String} name of the identifier
23
+ // @return {Bool} true if the first time invoked, false otherwise
24
+ @function do-once($name) {
25
+ @if index($REGISTRY_DO_ONCE, $name) {
26
+ @return false;
27
+ }
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
+ }
60
+
61
+ // wrapper for sprite-position()
62
+ // @function styleguide-sprite-position
63
+ // @param $map {SpriteMap} the sprite map
64
+ // @param $sprite {Sprite} the sprite name
65
+ // @param $offset-x {Number} the horizontal offset of the sprite position
66
+ // @param $offset-y {Number} the vertical offset of the sprite position
67
+ // @return {List} the sprite position or nil
68
+ @function styleguide-sprite-position($map, $sprite, $offset-x: 0, $offset-y: 0) {
69
+ @if not styleguide-check-sprite($map) { @return nil; }
70
+ @return sprite-position($map, $sprite, $offset-x, $offset-y);
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);
99
+ }
100
+
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
+ }
@@ -0,0 +1,279 @@
1
+ // @category utilities/rtl
2
+
3
+ // augment the direction
4
+ // @function rtl
5
+ // @param $value {List|String} [*|left|right] the value to augment
6
+ // @param $method {String} [border-radius|background]
7
+ // @param $force {String} [ltr|rtl] allows you to ignore reading-direction()
8
+ // @return {Bool|List|String} the augmented value
9
+ @function rtl($value: false, $method: false, $force: false) {
10
+ $dir: if($force, $force, reading-direction());
11
+ @if($value == false) {
12
+ @return $dir == rtl;
13
+ }
14
+ @if($value == nil) {
15
+ @return nil;
16
+ }
17
+ @if $dir == rtl {
18
+ // if it's a left/right value, flip it (all cases)
19
+ $value: -compass-list($value);
20
+ @for $idx from 1 through length($value) {
21
+ $item: nth($value, $idx);
22
+ @if(index(left right, $item)) {
23
+ $value: list-replace($value, $idx, opposite-position($item), space);
24
+ }
25
+ }
26
+ // if it's shorthand, swap 2nd with 4th (all cases except `border-radius`)
27
+ @if($method != border-radius and length($value) >= 4) {
28
+ @return nth($value, 1) nth($value, 4) nth($value, 3) nth($value, 2);
29
+ }
30
+ // if it's border-radius, do some magic (if Compass doesn't support RLT yet)
31
+ @if($method == border-radius and not $COMPASS_RTL_SUPPORT) {
32
+ // swap 1st with 2nd, 3rd with 4th
33
+ @if(length($value) >= 4) {
34
+ @return nth($value, 2) nth($value, 1) nth($value, 4) nth($value, 3);
35
+ }
36
+ // swap 1st with 2nd, append 2nd to end
37
+ @else if(length($value) == 3) {
38
+ @return nth($value, 2) nth($value, 1) nth($value, 3) nth($value, 2);
39
+ }
40
+ // swap 1st with 2nd
41
+ @else if(length($value) == 2) {
42
+ @return nth($value, 2) nth($value, 1);
43
+ }
44
+ }
45
+ // invert percentage background positions
46
+ @else if($method == background-position) {
47
+ $first: first-value-of($value);
48
+ @if type-of($first) == number and (unit($first) == "%" or strip-units($first) == 0) {
49
+ @return list-replace($value, 1, (100% - $first), space);
50
+ }
51
+ }
52
+ }
53
+ @if(length($value) == 1) {
54
+ $value: first-value-of($value);
55
+ }
56
+ // if we get here, just return
57
+ @return $value;
58
+ }
59
+
60
+
61
+ $CORE_CSS_RTL_VALUE_SUPPORT: (margin padding border-width border-color border-style clear float text-align background-position);
62
+ // convenience wrapper for RTL support
63
+ // @mixin wrapper-rtl
64
+ // @param $value {String|Number|List} the value to augment
65
+ // @param $method {String} the method (property) to use
66
+ // @param $direction {String} the direction to apply
67
+ @mixin wrapper-rtl($value, $method: margin, $direction: false) {
68
+ @if($direction) {
69
+ #{$method}-#{rtl($direction)}: $value;
70
+ }
71
+ @else {
72
+ #{$method}: rtl($value);
73
+ }
74
+ }
75
+
76
+ // RTL wrapper for `margin`
77
+ // @mixin margin
78
+ // @param $value {List} margin
79
+ // @param $direction {String} the direction to apply
80
+ @mixin margin($value, $direction: false) {
81
+ @include wrapper-rtl($value, margin, $direction);
82
+ }
83
+ // RTL wrapper for `margin-left`
84
+ // @mixin margin-left
85
+ // @param $value {Number} margin
86
+ @mixin margin-left($value) {
87
+ @include margin($value, left);
88
+ }
89
+ // RTL wrapper for `margin-right`
90
+ // @mixin margin-right
91
+ // @param $value {Number} margin
92
+ @mixin margin-right($value) {
93
+ @include margin($value, right);
94
+ }
95
+ // RTL wrapper for `margin-top` (not necessary but here for consistency)
96
+ // @mixin margin-top
97
+ // @param $value {Number} margin
98
+ @mixin margin-top($value) {
99
+ @include margin($value, top);
100
+ }
101
+ // RTL wrapper for `margin-bottom` (not necessary but here for consistency)
102
+ // @mixin margin-bottom
103
+ // @param $value {Number} margin
104
+ @mixin margin-bottom($value) {
105
+ @include margin($value, bottom);
106
+ }
107
+
108
+ // RTL wrapper for `padding`
109
+ // @mixin padding
110
+ // @param $value {List} padding
111
+ // @param $direction {String} the direction to apply
112
+ @mixin padding($value, $direction: false) {
113
+ @include wrapper-rtl($value, padding, $direction);
114
+ }
115
+ // RTL wrapper for `padding-left`
116
+ // @mixin padding-left
117
+ // @param $value {Number} padding
118
+ @mixin padding-left($value) {
119
+ @include padding($value, left);
120
+ }
121
+ // RTL wrapper for `padding-right`
122
+ // @mixin padding-right
123
+ // @param $value {Number} padding
124
+ @mixin padding-right($value) {
125
+ @include padding($value, right);
126
+ }
127
+ // RTL wrapper for `padding-top` (not necessary but here for consistency)
128
+ // @mixin padding-top
129
+ // @param $value {Number} padding
130
+ @mixin padding-top($value) {
131
+ @include padding($value, top);
132
+ }
133
+ // RTL wrapper for `padding-bottom` (not necessary but here for consistency)
134
+ // @mixin padding-bottom
135
+ // @param $value {Number} padding
136
+ @mixin padding-bottom($value) {
137
+ @include padding($value, bottom);
138
+ }
139
+
140
+ // RTL wrapper for `border-width`
141
+ // @mixin border-width
142
+ // @param $value {List} width
143
+ // @param $direction {String} the direction to apply
144
+ @mixin border-width($value, $direction: false) {
145
+ $direction: if($direction, rtl($direction) + '-', '');
146
+ @include wrapper-rtl($value, border-#{$direction}width);
147
+ }
148
+ // RTL wrapper for `border-left-width`
149
+ // @mixin border-left-width
150
+ // @param $value {List} width
151
+ @mixin border-left-width($value) {
152
+ @include border-width($value, left);
153
+ }
154
+ // RTL wrapper for `border-right-width`
155
+ // @mixin border-right-width
156
+ // @param $value {List} width
157
+ @mixin border-right-width($value) {
158
+ @include border-width($value, right);
159
+ }
160
+ // RTL wrapper for `border-top-width` (not necessary but here for consistency)
161
+ // @mixin border-top-width
162
+ // @param $value {List} width
163
+ @mixin border-top-width($value) {
164
+ @include border-width($value, top);
165
+ }
166
+ // RTL wrapper for `border-bottom-width` (not necessary but here for consistency)
167
+ // @mixin border-bottom-width
168
+ // @param $value {List} width
169
+ @mixin border-bottom-width($value) {
170
+ @include border-width($value, bottom);
171
+ }
172
+
173
+ // RTL wrapper for `border-color`
174
+ // @mixin border-color
175
+ // @param $value {List} color
176
+ // @param $direction {String} the direction to apply
177
+ @mixin border-color($value, $direction: false) {
178
+ $direction: if($direction, rtl($direction) + '-', '');
179
+ @include wrapper-rtl($value, border-#{$direction}color);
180
+ }
181
+ // RTL wrapper for `border-left-color`
182
+ // @mixin border-left-color
183
+ // @param $value {List} color
184
+ @mixin border-left-color($value) {
185
+ @include border-color($value, left);
186
+ }
187
+ // RTL wrapper for `border-right-color`
188
+ // @mixin border-right-color
189
+ // @param $value {List} color
190
+ @mixin border-right-color($value) {
191
+ @include border-color($value, right);
192
+ }
193
+ // RTL wrapper for `border-top-color` (not necessary but here for consistency)
194
+ // @mixin border-top-color
195
+ // @param $value {List} color
196
+ @mixin border-top-color($value) {
197
+ @include border-color($value, top);
198
+ }
199
+ // RTL wrapper for `border-bottom-color` (not necessary but here for consistency)
200
+ // @mixin border-bottom-color
201
+ // @param $value {List} color
202
+ @mixin border-bottom-color($value) {
203
+ @include border-color($value, bottom);
204
+ }
205
+
206
+ // RTL wrapper for `border-style`
207
+ // @mixin border-style
208
+ // @param $value {List} style
209
+ // @param $direction {String} the direction to apply
210
+ @mixin border-style($value, $direction: false) {
211
+ $direction: if($direction, rtl($direction) + '-', '');
212
+ @include wrapper-rtl($value, border-#{$direction}style);
213
+ }
214
+ // RTL wrapper for `border-left-style`
215
+ // @mixin border-left-style
216
+ // @param $value {List} style
217
+ @mixin border-left-style($value) {
218
+ @include border-style($value, left);
219
+ }
220
+ // RTL wrapper for `border-right-style`
221
+ // @mixin border-right-style
222
+ // @param $value {List} style
223
+ @mixin border-right-style($value) {
224
+ @include border-style($value, right);
225
+ }
226
+ // RTL wrapper for `border-top-style` (not necessary but here for consistency)
227
+ // @mixin border-top-style
228
+ // @param $value {List} style
229
+ @mixin border-top-style($value) {
230
+ @include border-style($value, top);
231
+ }
232
+ // RTL wrapper for `border-bottom-style` (not necessary but here for consistency)
233
+ // @mixin border-bottom-style
234
+ // @param $value {List} style
235
+ @mixin border-bottom-style($value) {
236
+ @include border-style($value, bottom);
237
+ }
238
+
239
+ // an RTL wrapper for `clear`
240
+ // @mixin float
241
+ // @param $value {String} the direction to clear
242
+ @mixin clear($value: left) {
243
+ clear: rtl($value);
244
+ }
245
+
246
+ // an RTL wrapper for `float`
247
+ // @mixin float
248
+ // @param $value {String} the float direction
249
+ @mixin float($value: left) {
250
+ float: rtl($value);
251
+ }
252
+
253
+ // an RTL wrapper for `text-align`
254
+ // @mixin text-align
255
+ // @param $value {String} the alignment
256
+ @mixin text-align($value: left) {
257
+ text-align: rtl($value);
258
+ }
259
+
260
+ // an RTL wrapper for `left`
261
+ // @mixin left
262
+ // @param $value {Number} the position
263
+ @mixin left($value: auto) {
264
+ #{rtl(left)}: $value;
265
+ }
266
+
267
+ // an RTL wrapper for `right`
268
+ // @mixin right
269
+ // @param $value {Number} the position
270
+ @mixin right($value: auto) {
271
+ #{rtl(right)}: $value;
272
+ }
273
+
274
+ // an RTL wrapper for `background-position`
275
+ // @mixin background-position
276
+ // @param $value {List} the background position coordinates
277
+ @mixin background-position($value) {
278
+ background-position: rtl($value, background-position);
279
+ }