livingstyleguide 2.0.0.alpha.10 → 2.0.0.alpha.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/bin/livingstyleguide +5 -6
  3. data/lib/livingstyleguide.rb +18 -12
  4. data/lib/livingstyleguide/command_line_interface.rb +5 -6
  5. data/lib/livingstyleguide/commands.rb +39 -0
  6. data/lib/livingstyleguide/commands/add_wrapper_class.rb +4 -0
  7. data/lib/livingstyleguide/commands/coffee_script.rb +5 -0
  8. data/lib/livingstyleguide/{filters → commands}/colors.rb +1 -1
  9. data/lib/livingstyleguide/{filters → commands}/css.rb +1 -1
  10. data/lib/livingstyleguide/{filters → commands}/data.rb +1 -1
  11. data/lib/livingstyleguide/{filters → commands}/default.rb +1 -1
  12. data/lib/livingstyleguide/{filters → commands}/font_example.rb +2 -2
  13. data/lib/livingstyleguide/commands/full_width.rb +4 -0
  14. data/lib/livingstyleguide/commands/haml.rb +4 -0
  15. data/lib/livingstyleguide/{filters → commands}/import_and_use.rb +5 -5
  16. data/lib/livingstyleguide/{filters → commands}/javascript.rb +1 -1
  17. data/lib/livingstyleguide/{filters → commands}/layout.rb +4 -4
  18. data/lib/livingstyleguide/commands/markdown.rb +4 -0
  19. data/lib/livingstyleguide/{filters → commands}/options.rb +3 -3
  20. data/lib/livingstyleguide/commands/require.rb +4 -0
  21. data/lib/livingstyleguide/{filters → commands}/sass.rb +4 -2
  22. data/lib/livingstyleguide/commands/search_box.rb +10 -0
  23. data/lib/livingstyleguide/{filters → commands}/style.rb +1 -1
  24. data/lib/livingstyleguide/commands/syntax.rb +4 -0
  25. data/lib/livingstyleguide/commands/toggle_code.rb +4 -0
  26. data/lib/livingstyleguide/commands/type.rb +4 -0
  27. data/lib/livingstyleguide/document.rb +29 -26
  28. data/lib/livingstyleguide/integration.rb +4 -4
  29. data/lib/livingstyleguide/integration/compass.rb +2 -3
  30. data/lib/livingstyleguide/integration/rails.rb +3 -6
  31. data/lib/livingstyleguide/integration/sass.rb +1 -1
  32. data/lib/livingstyleguide/integration/sprockets.rb +2 -3
  33. data/lib/livingstyleguide/markdown_extensions.rb +9 -9
  34. data/lib/livingstyleguide/templates/code.html.erb +1 -1
  35. data/lib/livingstyleguide/templates/example.html.erb +1 -1
  36. data/lib/livingstyleguide/templates/javascript.html.erb +1 -1
  37. data/lib/livingstyleguide/templates/layout.html.erb +13 -1
  38. data/lib/livingstyleguide/templates/scripts/copy.js.erb +24 -0
  39. data/lib/livingstyleguide/templates/scripts/copy_code.js.erb +19 -0
  40. data/lib/livingstyleguide/templates/scripts/copy_colors.js.erb +36 -0
  41. data/lib/livingstyleguide/templates/scripts/search.js.erb +66 -0
  42. data/lib/livingstyleguide/templates/scripts/toggle_code.js.erb +53 -0
  43. data/lib/livingstyleguide/templates/search-box.html.erb +1 -68
  44. data/lib/livingstyleguide/templates/toggle-code.html.erb +1 -0
  45. data/lib/livingstyleguide/version.rb +1 -1
  46. data/stylesheets/_livingstyleguide.scss +6 -3
  47. data/stylesheets/livingstyleguide/_before.scss +10 -0
  48. data/stylesheets/livingstyleguide/_code.scss +4 -7
  49. data/stylesheets/livingstyleguide/_color-swatches.scss +15 -16
  50. data/stylesheets/livingstyleguide/_content.scss +5 -5
  51. data/stylesheets/livingstyleguide/_layout.scss +4 -3
  52. data/stylesheets/livingstyleguide/_reset.scss +2 -1
  53. data/stylesheets/livingstyleguide/_toggle-code.scss +21 -0
  54. data/stylesheets/livingstyleguide/_variables.scss +5 -1
  55. metadata +46 -29
  56. data/assets/javascripts/livingstyleguide.js +0 -75
  57. data/lib/livingstyleguide/engine.rb +0 -194
  58. data/lib/livingstyleguide/filters.rb +0 -38
  59. data/lib/livingstyleguide/filters/add_wrapper_class.rb +0 -4
  60. data/lib/livingstyleguide/filters/coffee_script.rb +0 -5
  61. data/lib/livingstyleguide/filters/full_width.rb +0 -4
  62. data/lib/livingstyleguide/filters/haml.rb +0 -4
  63. data/lib/livingstyleguide/filters/markdown.rb +0 -4
  64. data/lib/livingstyleguide/filters/require.rb +0 -4
  65. data/lib/livingstyleguide/filters/search_box.rb +0 -9
  66. data/lib/livingstyleguide/filters/syntax.rb +0 -4
  67. data/lib/livingstyleguide/filters/type.rb +0 -4
  68. data/lib/livingstyleguide/templates/code-example.html.erb +0 -21
  69. data/lib/livingstyleguide/templates/colors-example.html.erb +0 -38
  70. data/lib/livingstyleguide/templates/javascript-copy.html.erb +0 -26
  71. data/stylesheets/livingstyleguide/_search.scss +0 -8
@@ -1,4 +1,4 @@
1
- require 'livingstyleguide/integration/compass'
2
- require 'livingstyleguide/integration/rails'
3
- require 'livingstyleguide/integration/sprockets'
4
- require 'livingstyleguide/integration/sass'
1
+ require "livingstyleguide/integration/compass"
2
+ require "livingstyleguide/integration/rails"
3
+ require "livingstyleguide/integration/sprockets"
4
+ require "livingstyleguide/integration/sass"
@@ -1,5 +1,4 @@
1
1
  if defined?(Compass)
2
- base_directory = File.join(File.dirname(__FILE__), '..', '..', '..')
3
- Compass::Frameworks.register 'livingstyleguide', path: base_directory
2
+ base_directory = File.join(File.dirname(__FILE__), "..", "..", "..")
3
+ Compass::Frameworks.register "livingstyleguide", path: base_directory
4
4
  end
5
-
@@ -1,12 +1,9 @@
1
1
  if defined?(Rails) and defined?(Rails::Railtie)
2
-
3
- require 'rails'
2
+ require "rails"
4
3
  class LivingStyleGuideRailtie < Rails::Railtie
5
- initializer 'living_style_guide.assets' do
6
- Rails.application.assets.register_engine('.lsg', ::LivingStyleGuide::Document)
4
+ initializer "living_style_guide.assets" do
5
+ Rails.application.assets.register_engine(".lsg", ::LivingStyleGuide::Document)
7
6
  LivingStyleGuide.default_options[:scss_template] = ::Sass::Rails::ScssTemplate
8
7
  end
9
8
  end
10
-
11
9
  end
12
-
@@ -1,4 +1,4 @@
1
- sass_directory = File.join(File.dirname(__FILE__), '..', '..', '..', 'stylesheets')
1
+ sass_directory = File.join(File.dirname(__FILE__), "..", "..", "..", "stylesheets")
2
2
  if ENV.has_key?("SASS_PATH")
3
3
  ENV["SASS_PATH"] = ENV["SASS_PATH"] + File::PATH_SEPARATOR + sass_directory
4
4
  else
@@ -1,6 +1,5 @@
1
1
  begin
2
- require 'sprockets'
3
- Sprockets.register_engine('.lsg', ::LivingStyleGuide::Document)
2
+ require "sprockets"
3
+ Sprockets.register_engine(".lsg", ::LivingStyleGuide::Document)
4
4
  rescue LoadError
5
5
  end
6
-
@@ -1,7 +1,7 @@
1
- require 'redcarpet'
2
- require 'tilt'
3
- require 'minisyntax'
4
- require 'erb'
1
+ require "redcarpet"
2
+ require "tilt"
3
+ require "minisyntax"
4
+ require "erb"
5
5
 
6
6
  module LivingStyleGuide
7
7
  REDCARPET_RENDER_OPTIONS = {
@@ -16,7 +16,7 @@ module LivingStyleGuide
16
16
  class RedcarpetHTML < ::Redcarpet::Render::HTML
17
17
  def initialize(options = {}, document)
18
18
  @options = options
19
- @options[:prefix] ||= 'lsg--'
19
+ @options[:prefix] ||= "lsg--"
20
20
  @document = document
21
21
  @header = nil
22
22
  @ids = {}
@@ -45,7 +45,7 @@ module LivingStyleGuide
45
45
 
46
46
  def block_code(code, language)
47
47
  language = language.to_s.strip.to_sym
48
- language = @options[:default_language] if language == :''
48
+ language = @options[:default_language] if language == :""
49
49
  document = Document.new(livingstyleguide: @document) { code }
50
50
  document.id = document_id
51
51
  document.type = language == :example ? @document.defaults[:global][:type] : language
@@ -60,10 +60,10 @@ module LivingStyleGuide
60
60
 
61
61
  private
62
62
  def slug(text)
63
- require 'active_support/core_ext/string/inflections'
64
- ::ActiveSupport::Inflector.parameterize(text, '-')
63
+ require "active_support/core_ext/string/inflections"
64
+ ::ActiveSupport::Inflector.parameterize(text, "-")
65
65
  rescue LoadError
66
- text.downcase.gsub(/[ _\.\-!\?\(\)\[\]]+/, '-').gsub(/^-|-$/, '')
66
+ text.downcase.gsub(/[ _\.\-!\?\(\)\[\]]+/, "-").gsub(/^-|-$/, "")
67
67
  end
68
68
 
69
69
  private
@@ -1,3 +1,3 @@
1
- <section class="<%= classes.join(' ') %>" id="<%= id %>">
1
+ <section class="<%= classes.join(" ") %>" id="<%= id %>">
2
2
  <pre class="lsg--code-block"><code class="lsg--code"><%= highlighted_source %></code></pre>
3
3
  </section>
@@ -1,4 +1,4 @@
1
- <section class="<%= classes.join(' ') %>" id="<%= id %>">
1
+ <section class="<%= classes.join(" ") %>" id="<%= id %>">
2
2
  <div class="lsg--html">
3
3
  <%= html %>
4
4
  </div>
@@ -1,4 +1,4 @@
1
- <section class="<%= classes.join(' ') %>" id="<%= id %>">
1
+ <section class="<%= classes.join(" ") %>" id="<%= id %>">
2
2
  <script><%= html %></script>
3
3
  <pre class="lsg--code-block"><code class="lsg--code"><%= highlighted_source %></code></pre>
4
4
  </section>
@@ -9,7 +9,8 @@
9
9
  <title><%= ERB::Util.h(title) %></title>
10
10
  <script>
11
11
  // see: http://www.hagenburger.net/BLOG/Simple-HTML5-Fix-for-IE.html
12
- for(var e,l='article aside footer header nav section time picture'.split(' ');e=l.pop();document.createElement(e));
12
+ for(var e,l="article aside footer header nav section time picture".split(" ");e=l.pop();document.createElement(e));
13
+ <%= javascript %>
13
14
  </script>
14
15
  <style>
15
16
  <%= css %>
@@ -19,9 +20,20 @@ for(var e,l='article aside footer header nav section time picture'.split(' ');e=
19
20
 
20
21
  <body class="livingstyleguide">
21
22
  <%= header %>
23
+ <% unless before.empty? %>
24
+ <section class="lsg--before">
25
+ <%= before %>
26
+ </section>
27
+ <% end %>
22
28
  <div class="lsg--container">
23
29
  <%= html %>
24
30
  </div>
31
+ <% unless after.empty? %>
32
+ <section class="lsg--after">
33
+ <%= after %>
34
+ </section>
35
+ <% end %>
36
+
25
37
  <%= footer %>
26
38
  </body>
27
39
 
@@ -0,0 +1,24 @@
1
+ function selectElementRange(copyElementSelect) {
2
+ var range = document.createRange();
3
+ range.selectNode(copyElementSelect);
4
+ window.getSelection().removeAllRanges();
5
+ window.getSelection().addRange(range);
6
+
7
+ document.execCommand("copy");
8
+
9
+ if (copyElementSelect.classList.contains("-lsg-remove")) {
10
+ document.body.removeChild(copyElementSelect);
11
+ }
12
+
13
+ window.getSelection().removeAllRanges();
14
+ }
15
+
16
+ function testCopy() {
17
+ try {
18
+ document.execCommand("copy");
19
+ return true;
20
+ }
21
+ catch(err) {
22
+ return false;
23
+ }
24
+ }
@@ -0,0 +1,19 @@
1
+ document.addEventListener("DOMContentLoaded", function() {
2
+ if (testCopy()) {
3
+ var code = document.getElementsByClassName("lsg--code");
4
+
5
+ for (var i = 0; i < code.length; i++) {
6
+ var newButton = createButton()
7
+ code[i].appendChild(newButton)
8
+ newButton.addEventListener("click", function(event) {
9
+ selectElementRange(this.parentNode);
10
+ });
11
+ }
12
+ }
13
+ });
14
+
15
+ function createButton(copyCodeSelect) {
16
+ var buttonCopy = document.createElement("button");
17
+ buttonCopy.className = "lsg--button";
18
+ return buttonCopy;
19
+ }
@@ -0,0 +1,36 @@
1
+ document.addEventListener("DOMContentLoaded", function() {
2
+ if (testCopy()) {
3
+ var colorSwatches = document.getElementsByClassName("lsg--color-swatch");
4
+ for (var i = 0; i < colorSwatches.length; i++) {
5
+ if (!colorSwatches[i].classList.contains("-lsg-empty")) {
6
+ colorSwatches[i].appendChild(createSpan());
7
+ colorSwatches[i].addEventListener("click", function(event) {
8
+ if (event.altKey) {
9
+ var copyHexColors = window.getComputedStyle(this, ":after").getPropertyValue("content");
10
+ copyHexColors = copyHexColors.replace(/'/g, "");
11
+ selectElementRange(createDiv(copyHexColors));
12
+ }
13
+ else {
14
+ selectElementRange(this.children[0]);
15
+ }
16
+ });
17
+ }
18
+ }
19
+ }
20
+ });
21
+
22
+ function createDiv(copyHexColors) {
23
+ var divCopy = document.createElement("div");
24
+ divCopy.className = "-lsg-remove";
25
+ divCopy.setAttribute("style", "opacity: 0; position: absolute; top: -10000px");
26
+ divCopy.appendChild(document.createTextNode(copyHexColors));
27
+ document.body.appendChild(divCopy);
28
+ return divCopy;
29
+ }
30
+
31
+ function createSpan() {
32
+ var spanHover = document.createElement("span");
33
+ spanHover.className = "lsg--copy-color";
34
+ spanHover.appendChild(document.createTextNode("Click to copy variable\nAlt + click to copy HEX code"));
35
+ return spanHover;
36
+ }
@@ -0,0 +1,66 @@
1
+ function hasClass(element, cls) {
2
+ return element.classList.contains(cls);
3
+ }
4
+
5
+ function addMatch(matched, node) {
6
+ if (node.nodeType !== Node.TEXT_NODE) {
7
+ if (node.className.match(/lsg--/)) {
8
+ matched.push(node);
9
+ }
10
+ }
11
+ }
12
+
13
+ function addNextElement(selection, matched, i) {
14
+ var j = i + 1;
15
+ while (j < selection.length) {
16
+ if (hasClass(selection[j], "lsg--headline")) {
17
+ break;
18
+ }
19
+ addMatch(matched, selection[j]);
20
+ j++;
21
+ }
22
+ }
23
+
24
+ function addPreviousElement(selection, matched, i) {
25
+ var j = i;
26
+ while (j >= 0) {
27
+ addMatch(matched, selection[j]);
28
+ if (hasClass(selection[j], "lsg--headline")) {
29
+ break;
30
+ }
31
+ j--;
32
+ }
33
+ }
34
+
35
+ document.addEventListener("DOMContentLoaded", function() {
36
+
37
+ document.querySelector(".lsg--search-box").addEventListener("input", function(event) {
38
+ var searchTerm = this.value;
39
+
40
+ var selection = document.querySelectorAll(".lsg--example, .lsg--color-swatches, .lsg--font-example, .lsg--paragraph, .lsg--unordered-list, .lsg--ordered-list, .lsg--headline, .lsg--sub-headline, .lsg--sub-sub-headline");
41
+ var regexp = new RegExp(searchTerm, "i");
42
+ selection = Array.prototype.slice.call(selection);
43
+ var matched = [];
44
+ var unmatched = [];
45
+
46
+ for (var i = 0; i < selection.length; i++) {
47
+ if (selection[i].textContent.match(regexp)) {
48
+ addMatch(matched, selection[i]);
49
+ addNextElement(selection, matched, i);
50
+ addPreviousElement(selection, matched, i);
51
+ };
52
+ };
53
+
54
+ unmatched = selection.filter(function(element) {
55
+ return matched.indexOf(element) === -1;
56
+ });
57
+
58
+ unmatched.map(function(item) {
59
+ item.style.display = "none";
60
+ });
61
+
62
+ matched.map(function(item) {
63
+ item.style.display = "block";
64
+ });
65
+ });
66
+ });
@@ -0,0 +1,53 @@
1
+ (function(win) {
2
+ var getClasses = function(el) {
3
+ return el.className.split(/\s+/g);
4
+ };
5
+
6
+ var addClass = function(el, name) {
7
+ var classList = getClasses(el);
8
+ if (classList.indexOf(name) == -1) {
9
+ classList.push(name);
10
+ el.className = classList.join(" ");
11
+ }
12
+ };
13
+
14
+ var removeClass = function(el, name) {
15
+ var classList = getClasses(el);
16
+ classList[classList.indexOf(name)] = null;
17
+ el.className = classList.join(" ");
18
+ };
19
+
20
+ var toggleClass = function(el, name) {
21
+ var classList = getClasses(el);
22
+ if (classList.indexOf(name) == -1) {
23
+ addClass(el, name);
24
+ return true;
25
+ }
26
+ else {
27
+ removeClass(el, name);
28
+ return false;
29
+ }
30
+ };
31
+
32
+ var html = document.getElementsByTagName("HTML")[0];
33
+
34
+ var hideCode = localStorage.getItem("lsg--hide-code");
35
+
36
+ if (hideCode == "true") {
37
+ addClass(html, "lsg--hide-code");
38
+ }
39
+
40
+ function toggleCode(event) {
41
+ event.preventDefault();
42
+ var hideCode = toggleClass(html, "lsg--hide-code");
43
+ localStorage.setItem("lsg--hide-code", hideCode);
44
+ }
45
+
46
+ document.addEventListener("DOMContentLoaded", function() {
47
+ var switches = document.getElementsByClassName("lsg--code-switch");
48
+ for (var i = 0; i < switches.length; i++) {
49
+ switches[i].addEventListener("click", toggleCode);
50
+ }
51
+ });
52
+
53
+ })(window);
@@ -1,68 +1 @@
1
- <div class="lsg--search">
2
- <input type="search" class="lsg--search-box" placeholder="<%= placeholder %>" autofocus>
3
- </div>
4
- <script>
5
- function hasClass(ele, cls) {
6
- return ele.classList.contains(cls);
7
- }
8
-
9
- function addMatch(matched, node) {
10
- if (node.nodeType !== Node.TEXT_NODE) {
11
- if (node.className.match(/lsg--/)) {
12
- matched.push(node);
13
- }
14
- }
15
- }
16
-
17
- var addNextElement = function(selection, matched, i) {
18
- var j = i + 1;
19
- while (j < selection.length) {
20
- if (hasClass(selection[j], "lsg--headline")) {
21
- break;
22
- }
23
- addMatch(matched, selection[j]);
24
- j++;
25
- }
26
- }
27
-
28
- var addPreviousElement = function(selection, matched, i) {
29
- var j = i;
30
- while (j >= 0) {
31
- addMatch(matched, selection[j]);
32
- if (hasClass(selection[j], "lsg--headline")) {
33
- break;
34
- }
35
- j--;
36
- }
37
- }
38
-
39
- document.querySelector(".lsg--search-box").addEventListener("input", function(event) {
40
- var searchTerm = this.value;
41
-
42
- var selection = document.querySelectorAll(".lsg--example, .lsg--color-swatches, .lsg--font-example, .lsg--paragraph, .lsg--unordered-list, .lsg--ordered-list, .lsg--headline, .lsg--sub-headline, .lsg--sub-sub-headline");
43
- var regexp = new RegExp(searchTerm, "i");
44
- selection = Array.prototype.slice.call(selection);
45
- var matched = [];
46
- var unmatched = [];
47
-
48
- for (var i = 0; i < selection.length; i++) {
49
- if (selection[i].textContent.match(regexp)) {
50
- addMatch(matched, selection[i]);
51
- addNextElement(selection, matched, i);
52
- addPreviousElement(selection, matched, i);
53
- };
54
- };
55
-
56
- unmatched = selection.filter(function(elem) {
57
- return matched.indexOf(elem) === -1;
58
- });
59
-
60
- unmatched.map(function(item) {
61
- item.style.display = "none";
62
- });
63
-
64
- matched.map(function(item) {
65
- item.style.display = "block";
66
- });
67
- });
68
- </script>
1
+ <input type="search" class="lsg--search-box" placeholder="<%= placeholder %>" autofocus>
@@ -0,0 +1 @@
1
+ <input type="button" class="lsg--code-switch">
@@ -1,3 +1,3 @@
1
1
  module LivingStyleGuide
2
- VERSION = '2.0.0.alpha.10'
2
+ VERSION = "2.0.0.alpha.11"
3
3
  end
@@ -4,7 +4,7 @@ $lsg--layout-selector: body !default;
4
4
 
5
5
  //// TYPOGRAPHY ////
6
6
 
7
- $lsg--base-font: 'Georgia', 'Times New Roman', serif !default;
7
+ $lsg--base-font: georgia, times new roman, serif !default;
8
8
  $lsg--base-font-size: 14px !default;
9
9
  $lsg--base-font-weight: normal !default;
10
10
  $lsg--base-line-height: 1.4 !default;
@@ -17,7 +17,7 @@ $lsg--sub-headline-font-size: 16px !default;
17
17
  $lsg--sub-sub-headline-font-size: $lsg--base-font-size !default;
18
18
  $lsg--headline-font-weight: bold !default;
19
19
  $lsg--headline-line-height: 1.1 !default;
20
- $lsg--code-font: Courier, "Courier New", monospace !default;
20
+ $lsg--code-font: courier, courier new, monospace !default;
21
21
  $lsg--code-font-size: 12px !default;
22
22
  $lsg--code-font-weight: normal !default;
23
23
  $lsg--code-line-height: 1.5 !default;
@@ -51,6 +51,8 @@ $lsg--highlight-border-radius: 2px;
51
51
  //// IMAGES - SVG ////
52
52
 
53
53
  $lsg--copy-background-image: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='100%' height='100%' viewBox='0 0 512 512' enable-background='new 0 0 512 512' xml:space='preserve'> <path id='copy-6-icon' d='M360.277,151.999V50.001H50v310.137h102v101.861h310v-310H360.277z M90,320.138V90.001h230.277v61.998 H152v168.139H90z M421.5,421.499h-230V191.832h20.569c10.639,0,20.745,4.656,27.657,12.744l19.023,22.256H358l19.366-22.408 c6.911-7.996,16.958-12.592,27.528-12.592H421.5V421.499z M379.479,338.581h-145.99v-29h145.99V338.581z M379.479,286.249h-145.99 v-29h145.99V286.249z M233.488,361.999h146.023v29H233.488V361.999z'/></svg>");
54
+ $lsg--code-switch-hide: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' height='1000' width='1000'><path d='M0 523.831q5.859 -48.825 64.449 -109.368 78.12 -80.073 175.77 -128.898 128.898 -60.543 259.749 -60.543 29.295 0 58.59 1.953l74.214 -128.898q9.765 -15.624 23.436 -17.577 3.906 0 7.812 1.953l50.778 31.248q17.577 7.812 1.953 33.201l-56.637 101.556 -46.872 78.12 -41.013 72.261 -144.522 249.984 -41.013 72.261 -46.872 80.073 -56.637 99.603q-15.624 25.389 -31.248 15.624l-52.731 -31.248q-15.624 -7.812 0 -33.201l48.825 -85.932 -7.812 -3.906q-103.509 -52.731 -175.77 -128.898 -64.449 -72.261 -64.449 -109.368zm263.655 0q0 74.214 46.872 132.804l48.825 -83.979q-9.765 -23.436 -9.765 -48.825 0 -50.778 34.178 -90.815t84.956 -49.802l48.825 -83.979l-17.577 0q-97.65 0 -166.982 65.425t-69.332 159.169zm177.723 294.903l41.013 -70.308l17.577 0q97.65 0 166.982 -65.425t69.332 -159.169q0 -74.214 -46.872 -132.804l62.496 -109.368q1.953 1.953 3.906 2.929t3.906 .977q103.509 52.731 175.77 128.898 64.449 72.261 64.449 109.368 -5.859 48.825 -64.449 109.368 -78.12 80.073 -175.77 128.898 -128.898 60.543 -259.749 60.543 -25.389 0 -58.59 -3.906zm89.838 -154.287l109.368 -189.441q9.765 25.389 9.765 48.825 0 50.778 -34.178 89.838t-84.956 50.778z' fill='#000000'/></svg>");
55
+ $lsg--code-switch-show: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' height='1000' width='1000'><path d='M0 499.809q5.859 -48.825 64.449 -109.368 78.12 -80.073 175.77 -128.898 128.898 -60.543 259.749 -60.543 136.71 1.953 259.749 60.543 103.509 52.731 175.77 128.898 64.449 72.261 64.449 109.368 -5.859 48.825 -64.449 109.368 -78.12 80.073 -175.77 128.898 -128.898 60.543 -259.749 60.543 -136.71 -1.953 -259.749 -60.543 -103.509 -52.731 -175.77 -128.898 -64.449 -72.261 -64.449 -109.368zm263.655 0q0 93.744 69.332 159.169t166.982 65.425 166.982 -65.425 69.332 -159.169 -69.332 -159.169 -166.982 -65.425 -166.982 65.425 -69.332 159.169zm85.932 -.977q0 -59.567 43.943 -101.556t106.439 -41.989 106.439 41.989 43.943 101.556 -43.943 102.532 -106.439 42.966 -106.439 -42.966 -43.943 -102.532z' fill='#000000'/></svg>");
54
56
 
55
57
  //// BUTTONS ////
56
58
 
@@ -64,5 +66,6 @@ $lsg--button-width: $lsg--button-height !default;
64
66
  @import "livingstyleguide/content";
65
67
  @import "livingstyleguide/code";
66
68
  @import "livingstyleguide/color-swatches";
67
- @import "livingstyleguide/search";
69
+ @import "livingstyleguide/toggle-code";
70
+ @import "livingstyleguide/before";
68
71
  @import "livingstyleguide/variables";