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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ }