jekyll-wikibonsai 0.0.9 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +57 -0
  4. data/_config.yml +269 -0
  5. data/_data/emoji.yml +46 -0
  6. data/_data/themes.yml +145 -0
  7. data/_includes/anchor-headings.html +156 -0
  8. data/_includes/branch.html +18 -0
  9. data/_includes/btn_state.html +14 -0
  10. data/_includes/connect.html +46 -0
  11. data/_includes/cookie-consent.html +79 -0
  12. data/_includes/dates.html +22 -0
  13. data/_includes/hp-tooltip.html +106 -0
  14. data/_includes/img/bullet-ancestor.svg +5 -0
  15. data/_includes/img/bullet-branch.svg +7 -0
  16. data/_includes/img/bullet-tree.svg +9 -0
  17. data/_includes/img/bullet-web.svg +9 -0
  18. data/_includes/img/pencil-filter.svg +17 -0
  19. data/_includes/share.html +47 -0
  20. data/_includes/site-nav.html +100 -0
  21. data/_includes/tags.html +49 -0
  22. data/_includes/themes.scss.liquid +80 -0
  23. data/_includes/toc.html +187 -0
  24. data/_layouts/404.html +10 -0
  25. data/_layouts/about.html +14 -0
  26. data/_layouts/archive.html +77 -0
  27. data/_layouts/base.html +68 -0
  28. data/_layouts/book.html +40 -0
  29. data/_layouts/entry.html +269 -0
  30. data/_layouts/home.html +96 -0
  31. data/_layouts/map.html +17 -0
  32. data/_layouts/post.html +37 -0
  33. data/_layouts/privacy.html +15 -0
  34. data/_layouts/recent.html +66 -0
  35. data/_layouts/state.html +70 -0
  36. data/_layouts/table-wrappers.html +7 -0
  37. data/_layouts/vendor/compress.html +10 -0
  38. data/_sass/base/_code.scss +133 -0
  39. data/_sass/base/_layout.scss +55 -0
  40. data/_sass/base/_link.scss +105 -0
  41. data/_sass/base/_main.scss +96 -0
  42. data/_sass/base/_markdown.scss +281 -0
  43. data/_sass/base/_typography.scss +89 -0
  44. data/_sass/base/code_themes/_gruvbox.scss +92 -0
  45. data/_sass/base/code_themes/_monokai.scss +217 -0
  46. data/_sass/base/code_themes/_solarized.scss +84 -0
  47. data/_sass/components/_btn.scss +95 -0
  48. data/_sass/components/_infobox.scss +48 -0
  49. data/_sass/components/_item.scss +28 -0
  50. data/_sass/components/_search.scss +61 -0
  51. data/_sass/components/_tag_pills.scss +24 -0
  52. data/_sass/components/_visited.scss +42 -0
  53. data/_sass/includes/_anchor_headings.scss +36 -0
  54. data/_sass/includes/_connect.scss +8 -0
  55. data/_sass/includes/_cookie_consent.scss +46 -0
  56. data/_sass/includes/_dates.scss +6 -0
  57. data/_sass/includes/_hp_tooltip.scss +41 -0
  58. data/_sass/includes/_share.scss +10 -0
  59. data/_sass/includes/_site_nav.scss +97 -0
  60. data/_sass/includes/_svg.scss +89 -0
  61. data/_sass/includes/_toc.scss +38 -0
  62. data/_sass/layouts/_404.scss +3 -0
  63. data/_sass/layouts/_about.scss +3 -0
  64. data/_sass/layouts/_archive.scss +26 -0
  65. data/_sass/layouts/_book.scss +17 -0
  66. data/_sass/layouts/_entry.scss +152 -0
  67. data/_sass/layouts/_home.scss +75 -0
  68. data/_sass/layouts/_map.scss +3 -0
  69. data/_sass/layouts/_post.scss +17 -0
  70. data/_sass/layouts/_privacy.scss +3 -0
  71. data/_sass/layouts/_recent.scss +77 -0
  72. data/_sass/layouts/_state.scss +98 -0
  73. data/_sass/main.scss +73 -0
  74. data/_sass/util/_functions.scss +9 -0
  75. data/_sass/util/_variables.scss +113 -0
  76. data/_sass/util/mixins/_buttons.scss +27 -0
  77. data/_sass/util/mixins/_layout.scss +84 -0
  78. data/_sass/util/mixins/_typography.scss +84 -0
  79. data/_sass/vendor/normalize.scss/README.md +7 -0
  80. data/_sass/vendor/normalize.scss/normalize.scss +349 -0
  81. data/assets/css/styles.scss +31 -0
  82. data/assets/font/Cutive_Mono/CutiveMono-Regular.ttf +0 -0
  83. data/assets/font/Cutive_Mono/OFL.txt +93 -0
  84. data/assets/font/Old_Standard_TT/OFL.txt +93 -0
  85. data/assets/font/Old_Standard_TT/OldStandardTT-Bold.ttf +0 -0
  86. data/assets/font/Old_Standard_TT/OldStandardTT-Italic.ttf +0 -0
  87. data/assets/font/Old_Standard_TT/OldStandardTT-Regular.ttf +0 -0
  88. data/assets/font/exo2/Exo2-Italic-VariableFont_wght.ttf +0 -0
  89. data/assets/font/exo2/Exo2-VariableFont_wght.ttf +0 -0
  90. data/assets/font/exo2/OFL.txt +93 -0
  91. data/assets/font/exo2/README.txt +81 -0
  92. data/assets/font/exo2/static/Exo2-Black.ttf +0 -0
  93. data/assets/font/exo2/static/Exo2-BlackItalic.ttf +0 -0
  94. data/assets/font/exo2/static/Exo2-Bold.ttf +0 -0
  95. data/assets/font/exo2/static/Exo2-BoldItalic.ttf +0 -0
  96. data/assets/font/exo2/static/Exo2-ExtraBold.ttf +0 -0
  97. data/assets/font/exo2/static/Exo2-ExtraBoldItalic.ttf +0 -0
  98. data/assets/font/exo2/static/Exo2-ExtraLight.ttf +0 -0
  99. data/assets/font/exo2/static/Exo2-ExtraLightItalic.ttf +0 -0
  100. data/assets/font/exo2/static/Exo2-Italic.ttf +0 -0
  101. data/assets/font/exo2/static/Exo2-Light.ttf +0 -0
  102. data/assets/font/exo2/static/Exo2-LightItalic.ttf +0 -0
  103. data/assets/font/exo2/static/Exo2-Medium.ttf +0 -0
  104. data/assets/font/exo2/static/Exo2-MediumItalic.ttf +0 -0
  105. data/assets/font/exo2/static/Exo2-Regular.ttf +0 -0
  106. data/assets/font/exo2/static/Exo2-SemiBold.ttf +0 -0
  107. data/assets/font/exo2/static/Exo2-SemiBoldItalic.ttf +0 -0
  108. data/assets/font/exo2/static/Exo2-Thin.ttf +0 -0
  109. data/assets/font/exo2/static/Exo2-ThinItalic.ttf +0 -0
  110. data/assets/img/bonsai-dark.png +0 -0
  111. data/assets/img/bonsai-dark.svg +106 -0
  112. data/assets/img/bonsai-light.png +0 -0
  113. data/assets/img/bonsai-light.svg +81 -0
  114. data/assets/img/bonsai-star.png +0 -0
  115. data/assets/img/bonsai-star.svg +1 -0
  116. data/assets/img/books/the-ancient-art-of-bonsai.png +0 -0
  117. data/assets/img/favicon-dark.png +0 -0
  118. data/assets/img/favicon-light.png +0 -0
  119. data/assets/img/nav-base-dark.svg +1 -0
  120. data/assets/img/nav-base-light.svg +1 -0
  121. data/assets/img/nav-base-star.svg +1 -0
  122. data/assets/img/nav-bonsai-dark.svg +1 -0
  123. data/assets/img/nav-bonsai-light.svg +1 -0
  124. data/assets/img/nav-bonsai-star.svg +1 -0
  125. data/assets/img/wikibonsai-way.png +0 -0
  126. data/assets/js/entry.js +130 -0
  127. data/assets/js/graph.js +64 -0
  128. data/assets/js/scripts.js +64 -0
  129. data/assets/js/search.js +165 -0
  130. data/assets/js/site-nav.js +132 -0
  131. data/assets/js/theme-colors.js +57 -0
  132. data/assets/js/vendor/lunr.js +3475 -0
  133. data/assets/js/vendor/lunr.min.js +6 -0
  134. data/assets/js/visited-nav.js +65 -0
  135. metadata +139 -5
@@ -0,0 +1,18 @@
1
+ <!-- from: https://jekyllrb.com/tutorials/navigation/#scenario-9-nested-tree-navigation-with-recursion -->
2
+ <ul>
3
+ {% for child in include.children %}
4
+ {% assign doc = site.documents | where: "url", child.url | first %}
5
+ <li>
6
+ <span>{% include img/bullet-branch.svg %}</span>
7
+ {% if doc %}
8
+ <a class="wiki-link" href="{{ doc.url }}">{{ doc.title }}</a>
9
+ {% else %}
10
+ <span class="text--small text--no-point">{{ child.text }}</span>
11
+ {% endif %}
12
+ {% if child.children.size > 0 %}
13
+ {% assign child_nodes = page.nodes | where_exp: "node", "child.children contains node.text" %}
14
+ {% include branch.html children=child_nodes %}
15
+ {% endif %}
16
+ </li>
17
+ {% endfor %}
18
+ </ul>
@@ -0,0 +1,14 @@
1
+ {% comment %}
2
+
3
+ Usage: (where 'status' in 'page.status' is a yml list of strings)
4
+ {% include btn_state.html states=page.status %}
5
+
6
+ Parameters:
7
+ * states (array) - a page's status which maps to a state document.
8
+
9
+ {% endcomment %}
10
+
11
+ {% for stat_tag in include.states %}
12
+ {% assign state = site.states | find_exp: "item", "item.emoji == stat_tag" %}
13
+ <a class="stat-tag" href="{{ state.url | relative_url }}" title={{ state.title }}>{{ state.emoji }}</a>
14
+ {% endfor %}
@@ -0,0 +1,46 @@
1
+ <!-- from: https://jekyllcodex.org/without-plugin/connect-buttons/ -->
2
+ <style>
3
+ #connect-buttons {display: inline-block; vertical-align: middle; }
4
+ #connect-buttons:after {content: ""; display: block; clear: both;}
5
+ #connect-buttons > div {
6
+ position: relative;
7
+ text-align: left;
8
+ height: 36px;
9
+ width: 32px;
10
+ float: left;
11
+ text-align: center;
12
+ }
13
+ #connect-buttons > div > svg {height: 16px; fill: #959396; margin-top: 10px;} /* $grey-dk-000 */
14
+ #connect-buttons > div:hover {cursor: pointer;}
15
+ #connect-buttons > div.facebook:hover > svg {fill: #3B5998;}
16
+ #connect-buttons > div.github:hover > svg {fill: #000000;}
17
+ #connect-buttons > div.twitter:hover > svg {fill: #55ACEE;}
18
+ #connect-buttons > div.linkedin:hover > svg {fill: #0077b5;}
19
+ #connect-buttons > div.pinterest:hover > svg {fill: #CB2027;}
20
+ #connect-buttons > div.rss:hover > svg {fill: #ECB13D;}
21
+ #connect-buttons > div.gplus:hover > svg {fill: #dd4b39;}
22
+ #connect-buttons > div.mail:hover > svg {fill: #5c5962;} /* $grey-dk-100 */
23
+ #connect-buttons > div.instagram:hover > svg {fill: #C73B92;}
24
+ #connect-buttons > div.facebook > svg {height: 18px; margin-top: 9px;}
25
+ #connect-buttons > div.github > svg {height: 18px; margin-top: 9px;}
26
+ #connect-buttons > div.twitter > svg {height: 20px; margin-top: 8px;}
27
+ #connect-buttons > div.linkedin > svg {height: 19px; margin-top: 7px;}
28
+ #connect-buttons > div.pinterest > svg {height: 20px; margin-top: 9px;}
29
+ #connect-buttons > div.rss > svg {height: 16px; margin-top: 10px;}
30
+ #connect-buttons > div.gplus > svg {height: 17px; margin-top: 9px; position: relative; left: 1px;}
31
+ #connect-buttons > div.mail > svg {height: 14px; margin-top: 11px;}
32
+ </style>
33
+
34
+ <div class="connect-bar">
35
+ <span class="connect-icon" title="Connect and Follow">
36
+ {{ site.data.emoji.connect }}
37
+ </span>
38
+ <div id="connect-buttons">
39
+ {% if site.social.connect.url.facebook %}<div class="facebook" title="Connect on Facebook" onclick="window.open('{{ site.social.connect.url.facebook }}');"><svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1343 12v264h-157q-86 0-116 36t-30 108v189h293l-39 296h-254v759h-306v-759h-255v-296h255v-218q0-186 104-288.5t277-102.5q147 0 228 12z"/></svg></div>{% endif %}
40
+ {% if site.social.connect.url.github %}<div class="github" title="Connect on Github" onclick="window.open('{{ site.social.connect.url.github }}');"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg></div>{% endif %}
41
+ {% if site.social.connect.url.linkedin %}<div class="linkedin" title="Connect on Linkedin" onclick="window.open('{{ site.social.connect.url.linkedin }}');"><svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M477 625v991h-330v-991h330zm21-306q1 73-50.5 122t-135.5 49h-2q-82 0-132-49t-50-122q0-74 51.5-122.5t134.5-48.5 133 48.5 51 122.5zm1166 729v568h-329v-530q0-105-40.5-164.5t-126.5-59.5q-63 0-105.5 34.5t-63.5 85.5q-11 30-11 81v553h-329q2-399 2-647t-1-296l-1-48h329v144h-2q20-32 41-56t56.5-52 87-43.5 114.5-15.5q171 0 275 113.5t104 332.5z"/></svg></div>{% endif %}
42
+ {% if site.social.connect.url.pinterest %}<div class="pinterest" title="Connect on Pinterest" onclick="window.open('{{ site.social.connect.url.pinterest }}');"><svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 597q0-108 37.5-203.5t103.5-166.5 152-123 185-78 202-26q158 0 294 66.5t221 193.5 85 287q0 96-19 188t-60 177-100 149.5-145 103-189 38.5q-68 0-135-32t-96-88q-10 39-28 112.5t-23.5 95-20.5 71-26 71-32 62.5-46 77.5-62 86.5l-14 5-9-10q-15-157-15-188 0-92 21.5-206.5t66.5-287.5 52-203q-32-65-32-169 0-83 52-156t132-73q61 0 95 40.5t34 102.5q0 66-44 191t-44 187q0 63 45 104.5t109 41.5q55 0 102-25t78.5-68 56-95 38-110.5 20-111 6.5-99.5q0-173-109.5-269.5t-285.5-96.5q-200 0-334 129.5t-134 328.5q0 44 12.5 85t27 65 27 45.5 12.5 30.5q0 28-15 73t-37 45q-2 0-17-3-51-15-90.5-56t-61-94.5-32.5-108-11-106.5z"/></svg></div>{% endif %}
43
+ {% if site.social.connect.url.twitter %}<div class="twitter" title="Connect on Twitter" onclick="window.open('{{ site.social.connect.url.twitter }}');"><svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1684 408q-67 98-162 167 1 14 1 42 0 130-38 259.5t-115.5 248.5-184.5 210.5-258 146-323 54.5q-271 0-496-145 35 4 78 4 225 0 401-138-105-2-188-64.5t-114-159.5q33 5 61 5 43 0 85-11-112-23-185.5-111.5t-73.5-205.5v-4q68 38 146 41-66-44-105-115t-39-154q0-88 44-163 121 149 294.5 238.5t371.5 99.5q-8-38-8-74 0-134 94.5-228.5t228.5-94.5q140 0 236 102 109-21 205-78-37 115-142 178 93-10 186-50z"/></svg></div>{% endif %}
44
+ {% if site.social.connect.url.rss %}<div class="rss" title="Connect RSS Feed" onclick="window.open('{{ site.social.connect.url.rss }}');"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6.503 20.752c0 1.794-1.456 3.248-3.251 3.248-1.796 0-3.252-1.454-3.252-3.248 0-1.794 1.456-3.248 3.252-3.248 1.795.001 3.251 1.454 3.251 3.248zm-6.503-12.572v4.811c6.05.062 10.96 4.966 11.022 11.009h4.817c-.062-8.71-7.118-15.758-15.839-15.82zm0-3.368c10.58.046 19.152 8.594 19.183 19.188h4.817c-.03-13.231-10.755-23.954-24-24v4.812z"/></svg></div>{% endif %}
45
+ </div>
46
+ </div>
@@ -0,0 +1,79 @@
1
+ <!-- from: https://jekyllcodex.org/without-plugin/cookie-consent/ -->
2
+ <!-- duplicate code with cookie-consent-response.html -->
3
+ <div id="cookie-consent">
4
+ <span>This site uses third party cookies and scripts to improve the functionality of this website.</span>
5
+ <a id="cookie-consent-response-accept" class="btn" title="Ok">
6
+ {{ site.data.emoji.approve }}
7
+ </a>
8
+ <a id="cookie-consent-hmm" class="btn" href="{{ '/privacy' | relative_url }}" title="Hmm...Tell me more...">
9
+ {{ site.data.emoji.consider }}
10
+ </a>
11
+ {% if site.bonsai.debug %}
12
+ <a id="cookie-consent-response-reject" class="btn" title="Nope!">
13
+ {{ site.data.emoji.disapprove }}
14
+ </a>
15
+ {% endif %}
16
+ </div>
17
+ <script>
18
+ function createCookie(name,value,days) {
19
+ var expires = "";
20
+ if (days) {
21
+ var date = new Date();
22
+ date.setTime(date.getTime() + (days*24*60*60*1000));
23
+ expires = "; expires=" + date.toUTCString();
24
+ }
25
+ document.cookie = name + "=" + value + expires + "; path=/";
26
+ }
27
+ function readCookie(name) {
28
+ var nameEQ = name + "=";
29
+ var ca = document.cookie.split(';');
30
+ for(var i=0;i < ca.length;i++) {
31
+ var c = ca[i];
32
+ while (c.charAt(0)==' ') c = c.substring(1,c.length);
33
+ if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
34
+ }
35
+ return null;
36
+ }
37
+ function eraseCookie(name) {
38
+ createCookie(name,"",-1);
39
+ }
40
+ function clearCookies() {
41
+ var cookies = document.cookie.split(";");
42
+ for (var i = 0; i < cookies.length; i++) {
43
+ eraseCookie(cookies[i].split("=")[0]);
44
+ }
45
+ }
46
+ document.getElementById('cookie-consent-response-accept').addEventListener("click",function() {
47
+ clearCookies();
48
+ createCookie('cookie-consent-accepted','true',31);
49
+ document.getElementById('cookie-consent').style.display = 'none';
50
+ location.reload();
51
+ });
52
+
53
+ {% if site.bonsai.debug %}
54
+ document.getElementById('cookie-consent-response-reject').addEventListener("click",function() {
55
+ clearCookies();
56
+ createCookie('cookie-consent-declined','true',10);
57
+ document.getElementById('cookie-consent').style.display = 'none';
58
+ location.reload();
59
+ });
60
+ {% else %}
61
+ /**
62
+ * from: https://jekyllcodex.org/without-plugin/metrics/Z
63
+ * (use multi-line comment because compression causes single line to comment out entire file)
64
+ * */
65
+ var _gaq = _gaq || [];
66
+ _gaq.push(['_setAccount', '{{ site.ga_tracking }}']);
67
+ _gaq.push(['_gat._forceSSL']);
68
+ _gaq.push(['_gat._anonymizeIp']);
69
+ _gaq.push(['_trackPageview']);
70
+
71
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
72
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
73
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
74
+ {% endif %}
75
+
76
+ if ((readCookie('cookie-consent-accepted')!=='true') && (readCookie('cookie-consent-declined')!=='true')) {
77
+ document.getElementById('cookie-consent').style.display = 'flex';
78
+ }
79
+ </script>
@@ -0,0 +1,22 @@
1
+ {% comment %}
2
+
3
+ Usage:
4
+ {% include dates.html updated=page.updated date=page.date %}
5
+
6
+ Parameters:
7
+ * updated (seconds) - unix epoch time of page update.
8
+ * published (datetime) - datetime of page publish.
9
+
10
+ {% endcomment %}
11
+
12
+ <div class="dates text--date">
13
+ <div>
14
+ <a class="stat-tag btn--blue" href="{{ '/recent' | relative_url }}" title="Published">{{ site.data.emoji.published }}</a>
15
+ <time class="dt-published">{{ include.date | date: site.bonsai.date_format }}</time>
16
+ </div>
17
+ <div>
18
+ <a class="stat-tag btn--blue" href="{{ '/recent' | relative_url }}" title="Updated">{{ site.data.emoji.updated }}</a>
19
+ <!-- 'slice' because epoch timestamps currently use milliseconds -->
20
+ <time class="dt-updated">{{ include.updated | slice: 0, 10 | date: site.bonsai.date_format }}</time>
21
+ </div>
22
+ </div>
@@ -0,0 +1,106 @@
1
+ <!-- "hover-preview tooltip"
2
+
3
+ with help from: https://github.com/maximevaillancourt/digital-garden-jekyll-template/blob/master/_includes/link-previews.html
4
+
5
+ for hover-preview to work, every page should define...
6
+ - at a minimum:
7
+ - 'hp-title'
8
+ - 'hp-content'
9
+ - optionally
10
+ - 'hp-header'
11
+ ...in a div that wraps the desired element, so the hover-preview can properly build the content to display
12
+
13
+ -->
14
+
15
+ <style>
16
+ /* leave id for opacity toggle */
17
+ #hp-tooltip {
18
+ opacity: 0;
19
+ transition: opacity 100ms;
20
+ }
21
+ </style>
22
+
23
+ <div id="hp-tooltip" class="hp-tooltip">
24
+ <div id='hp-tooltip-content'></div>
25
+ </div>
26
+ <iframe id="hp-iframe" src=""></iframe>
27
+
28
+ <script>
29
+ var opacityTimeout;
30
+ var contentTimeout;
31
+ var transitionDurationMs = 100;
32
+
33
+ var iframe = document.getElementById('hp-iframe');
34
+ var tooltip = document.getElementById('hp-tooltip');
35
+ var tooltipContent = document.getElementById('hp-tooltip-content');
36
+
37
+ function hideTooltip() {
38
+ opacityTimeout = setTimeout(function() {
39
+ tooltip.style.opacity = 0;
40
+ contentTimeout = setTimeout(function() {
41
+ tooltipContent.innerHTML = '';
42
+ tooltip.style.display = 'none';
43
+ }, transitionDurationMs + 1);
44
+ }, transitionDurationMs)
45
+ }
46
+
47
+ function showTooltip(event) {
48
+ var elem = event.target;
49
+ var elem_props = elem.getClientRects()[elem.getClientRects().length - 1];
50
+ var top = window.pageYOffset || document.documentElement.scrollTop;
51
+
52
+ if (event.target.host === window.location.host) {
53
+ iframe.src = event.target.href;
54
+ iframe.onload = function() {
55
+ let title = iframe.contentWindow.document.querySelector('.hp-title').innerHTML;
56
+ let content = iframe.contentWindow.document.querySelector('.hp-content').innerHTML;
57
+ // populate header breadcrumbs if they exist
58
+ if (iframe.contentWindow.document.querySelector('.hp-header')) {
59
+ let header = iframe.contentWindow.document.querySelector('.hp-header').innerHTML;
60
+ tooltipContent.innerHTML = header + title + content;
61
+ // everything else (doesn't have header breadcrumbs)
62
+ } else {
63
+ tooltipContent.innerHTML = title + content;
64
+ }
65
+ tooltip.style.display = 'block';
66
+ setTimeout(function() {
67
+ tooltip.style.opacity = 1;
68
+ }, 1);
69
+ };
70
+
71
+ tooltip.style.left = elem_props.left - (tooltip.offsetWidth / 2) + (elem_props.width / 2) + "px";
72
+ if ((window.innerHeight - elem_props.top) < (tooltip.offsetHeight)) {
73
+ tooltip.style.top = elem_props.top + top - tooltip.offsetHeight - 10 + "px";
74
+ } else if ((window.innerHeight - elem_props.top) > (tooltip.offsetHeight)) {
75
+ tooltip.style.top = elem_props.top + top + 35 + "px";
76
+ }
77
+
78
+ if ((elem_props.left + (elem_props.width / 2)) < (tooltip.offsetWidth / 2)) {
79
+ tooltip.style.left = "10px";
80
+ } else if ((document.body.clientWidth - elem_props.left - (elem_props.width / 2)) < (tooltip.offsetWidth / 2)) {
81
+ tooltip.style.left = document.body.clientWidth - tooltip.offsetWidth - 20 + "px";
82
+ }
83
+ }
84
+ }
85
+
86
+ function setupListeners(linkElement) {
87
+ linkElement.addEventListener('mouseleave', function(_event) {
88
+ hideTooltip();
89
+ });
90
+
91
+ tooltip.addEventListener('mouseleave', function(_event) {
92
+ hideTooltip();
93
+ });
94
+
95
+ linkElement.addEventListener('mouseenter', function(event) {
96
+ clearTimeout(opacityTimeout);
97
+ clearTimeout(contentTimeout);
98
+ showTooltip(event);
99
+ });
100
+
101
+ tooltip.addEventListener('mouseenter', function(event) {
102
+ clearTimeout(opacityTimeout);
103
+ clearTimeout(contentTimeout);
104
+ });
105
+ }
106
+ </script>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="15" width="15" viewBox="0 0 50 50" overflow="visible" stroke-width="5" stroke-linecap="round">
2
+ <line class="bullet-link" x1="0" y1="5" x2="25" y2="25" stroke="#8C6239" />
3
+ <line class="bullet-link" x1="0" y1="45" x2="25" y2="25" stroke="#8C6239" />
4
+ <circle class="bullet-node" cx="25" cy="25" r="10" fill="#31AF31" />
5
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="15" width="15" viewBox="0 0 50 50" overflow="visible" stroke-width="5" stroke-linecap="round">
2
+ <line class="bullet-link" x1="5" y1="33" x2="5" y2="5" stroke="#8C6239"/>
3
+ <line class="bullet-link" x1="5" y1="33" x2="33" y2="33" stroke="#8C6239"/>
4
+ <circle class="bullet-node" cx="5" cy="5" r="6" fill="#31AF31"/>
5
+ <circle class="bullet-node" cx="5" cy="33" r="6" fill="#31AF31"/>
6
+ <circle class="bullet-node" cx="33" cy="33" r="6" fill="#31AF31"/>
7
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg class="graph-icon" xmlns="http://www.w3.org/2000/svg" height="15" width="15" viewBox="0 0 50 50" overflow="visible" stroke-width="5" stroke-linecap="round">
2
+ <line class="bullet-link" x1="20" y1="25" x2="5" y2="50" stroke="#8C6239" />
3
+ <line class="bullet-link" x1="25" y1="25" x2="25" y2="50" stroke="#8C6239" />
4
+ <line class="bullet-link" x1="30" y1="25" x2="45" y2="50" stroke="#8C6239" />
5
+ <circle class="bullet-node" cx="25" cy="20" r="10" fill="#31AF31" />
6
+ <circle class="bullet-node" cx="5" cy="50" r="6" fill="#31AF31" />
7
+ <circle class="bullet-node" cx="25" cy="50" r="6" fill="#31AF31" />
8
+ <circle class="bullet-node" cx="45" cy="50" r="6" fill="#31AF31" />
9
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg class="graph-icon" xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 50 50" overflow="visible" stroke-width="5" stroke-linecap="round">
2
+ <line class="bullet-link" x1="25" y1="33" x2="2" y2="50" stroke="#8C6239" />
3
+ <line class="bullet-link" x1="25" y1="33" x2="25" y2="5" stroke="#8C6239" />
4
+ <line class="bullet-link" x1="25" y1="33" x2="47" y2="50" stroke="#8C6239" />
5
+ <circle class="bullet-node" cx="25" cy="33" r="10" fill="#31AF31"/>
6
+ <circle class="bullet-node" cx="2" cy="50" r="6" fill="#31AF31" />
7
+ <circle class="bullet-node" cx="25" cy="5" r="6" fill="#31AF31" />
8
+ <circle class="bullet-node" cx="47" cy="50" r="6" fill="#31AF31" />
9
+ </svg>
@@ -0,0 +1,17 @@
1
+ <!-- due to a chromium bug regarding svg-reuse...: https://bugs.chromium.org/p/chromium/issues/detail?id=109212 -->
2
+ <!-- ...using this hacky off-screen-style from: https://stackoverflow.com/questions/67961573/how-to-hide-reusable-svg-with-filter-that-has-filterunits-userspaceonuse#comment120130719_67961573 -->
3
+ <svg xmlns="http://www.w3.org/2000/svg" height="0" width="0" style="absolute + top:-1000vw;">
4
+ <!-- from: https://css-tricks.com/creating-a-pencil-effect-in-svg/ -->
5
+ <filter id="PencilTexture" x="0%" y="0%" width="100%" height="100%" filterUnits="objectBoundingBox">
6
+ <feTurbulence type="fractalNoise" baseFrequency="0.5" numOctaves="5" stitchTiles="stitch" result="f1">
7
+ </feTurbulence>
8
+ <feColorMatrix type="matrix" values="0 0 0 0 0, 0 0 0 0 0, 0 0 0 0 0, 0 0 0 -1.5 1.5" result="f2">
9
+ </feColorMatrix>
10
+ <feComposite operator="in" in2="f2b" in="SourceGraphic" result="f3">
11
+ </feComposite>
12
+ <feTurbulence type="fractalNoise" baseFrequency="1.2" numOctaves="3" result="noise">
13
+ </feTurbulence>
14
+ <feDisplacementMap xChannelSelector="R" yChannelSelector="G" scale="2.5" in="f3" result="f4">
15
+ </feDisplacementMap>
16
+ </filter>
17
+ </svg>
@@ -0,0 +1,47 @@
1
+ <!-- from: https://jekyllcodex.org/without-plugin/share-buttons/ -->
2
+ {% if include.pageurl != nil and include.pageurl != '' %}
3
+ {% assign pageurl = include.pageurl %}
4
+ {% else %}
5
+ {% assign pageurl = page.url | relative_url %}
6
+ {% endif %}
7
+
8
+ <style>
9
+ #share-buttons {display: inline-block; vertical-align: middle; }
10
+ #share-buttons:after {content: ""; display: block; clear: both;}
11
+ #share-buttons > div {
12
+ position: relative;
13
+ text-align: left;
14
+ height: 36px;
15
+ width: 32px;
16
+ float: left;
17
+ text-align: center;
18
+ }
19
+ #share-buttons > div > svg {height: 16px; fill: #959396; margin-top: 10px;} /* $grey-dk-000 */
20
+ #share-buttons > div:hover {cursor: pointer;}
21
+ #share-buttons > div.facebook:hover > svg {fill: #3B5998;}
22
+ #share-buttons > div.twitter:hover > svg {fill: #55ACEE;}
23
+ #share-buttons > div.linkedin:hover > svg {fill: #0077b5;}
24
+ #share-buttons > div.pinterest:hover > svg {fill: #CB2027;}
25
+ #share-buttons > div.gplus:hover > svg {fill: #dd4b39;}
26
+ #share-buttons > div.mail:hover > svg {fill: #5c5962;} /* $grey-dk-100 */
27
+ #share-buttons > div.instagram:hover > svg {fill: #C73B92;}
28
+ #share-buttons > div.facebook > svg {height: 18px; margin-top: 9px;}
29
+ #share-buttons > div.twitter > svg {height: 20px; margin-top: 8px;}
30
+ #share-buttons > div.linkedin > svg {height: 19px; margin-top: 7px;}
31
+ #share-buttons > div.pinterest > svg {height: 20px; margin-top: 9px;}
32
+ #share-buttons > div.gplus > svg {height: 17px; margin-top: 9px; position: relative; left: 1px;}
33
+ #share-buttons > div.mail > svg {height: 14px; margin-top: 11px;}
34
+ </style>
35
+
36
+ <div class="share-bar">
37
+ <span class="share-icon" title="Share This">
38
+ {{ site.data.emoji.share }}
39
+ </span>
40
+ <div id="share-buttons">
41
+ {% if site.social.share.type contains 'email' %}<div class="mail" title="Share this through Email" onclick="window.open('mailto:?&body={{ site.url }}{{ site.baseurl }}{{ pageurl }}');"><svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 710v794q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-794q44 49 101 87 362 246 497 345 57 42 92.5 65.5t94.5 48 110 24.5h2q51 0 110-24.5t94.5-48 92.5-65.5q170-123 498-345 57-39 100-87zm0-294q0 79-49 151t-122 123q-376 261-468 325-10 7-42.5 30.5t-54 38-52 32.5-57.5 27-50 9h-2q-23 0-50-9t-57.5-27-52-32.5-54-38-42.5-30.5q-91-64-262-182.5t-205-142.5q-62-42-117-115.5t-55-136.5q0-78 41.5-130t118.5-52h1472q65 0 112.5 47t47.5 113z"/></svg></div>{% endif %}
42
+ {% if site.social.share.type contains 'facebook' %}<div class="facebook" title="Share this on Facebook" onclick="window.open('http://www.facebook.com/share.php?u={{ site.url }}{{ site.baseurl }}{{ pageurl }}');"><svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1343 12v264h-157q-86 0-116 36t-30 108v189h293l-39 296h-254v759h-306v-759h-255v-296h255v-218q0-186 104-288.5t277-102.5q147 0 228 12z"/></svg></div>{% endif %}
43
+ {% if site.social.share.type contains 'linkedin' %}<div class="linkedin" title="Share this on Linkedin" onclick="window.open('https://www.linkedin.com/shareArticle?mini=true&url={{ site.url }}{{ site.baseurl }}{{ pageurl }}&title=&summary=&source=');"><svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M477 625v991h-330v-991h330zm21-306q1 73-50.5 122t-135.5 49h-2q-82 0-132-49t-50-122q0-74 51.5-122.5t134.5-48.5 133 48.5 51 122.5zm1166 729v568h-329v-530q0-105-40.5-164.5t-126.5-59.5q-63 0-105.5 34.5t-63.5 85.5q-11 30-11 81v553h-329q2-399 2-647t-1-296l-1-48h329v144h-2q20-32 41-56t56.5-52 87-43.5 114.5-15.5q171 0 275 113.5t104 332.5z"/></svg></div>{% endif %}
44
+ {% if site.social.share.type contains 'pinterest' %}<div class="pinterest" title="Share this on Pinterest" onclick="window.open('https://pinterest.com/pin/create/button/?url=&media={{ site.url }}{{ site.baseurl }}{{ page.image }}&description=');"><svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 597q0-108 37.5-203.5t103.5-166.5 152-123 185-78 202-26q158 0 294 66.5t221 193.5 85 287q0 96-19 188t-60 177-100 149.5-145 103-189 38.5q-68 0-135-32t-96-88q-10 39-28 112.5t-23.5 95-20.5 71-26 71-32 62.5-46 77.5-62 86.5l-14 5-9-10q-15-157-15-188 0-92 21.5-206.5t66.5-287.5 52-203q-32-65-32-169 0-83 52-156t132-73q61 0 95 40.5t34 102.5q0 66-44 191t-44 187q0 63 45 104.5t109 41.5q55 0 102-25t78.5-68 56-95 38-110.5 20-111 6.5-99.5q0-173-109.5-269.5t-285.5-96.5q-200 0-334 129.5t-134 328.5q0 44 12.5 85t27 65 27 45.5 12.5 30.5q0 28-15 73t-37 45q-2 0-17-3-51-15-90.5-56t-61-94.5-32.5-108-11-106.5z"/></svg></div>{% endif %}
45
+ {% if site.social.share.type contains 'twitter' %}<div class="twitter" title="Share this on Twitter" onclick="window.open('http://twitter.com/intent/tweet?url={{ site.url }}{{ site.baseurl }}{{ pageurl }}');"><svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1684 408q-67 98-162 167 1 14 1 42 0 130-38 259.5t-115.5 248.5-184.5 210.5-258 146-323 54.5q-271 0-496-145 35 4 78 4 225 0 401-138-105-2-188-64.5t-114-159.5q33 5 61 5 43 0 85-11-112-23-185.5-111.5t-73.5-205.5v-4q68 38 146 41-66-44-105-115t-39-154q0-88 44-163 121 149 294.5 238.5t371.5 99.5q-8-38-8-74 0-134 94.5-228.5t228.5-94.5q140 0 236 102 109-21 205-78-37 115-142 178 93-10 186-50z"/></svg></div>{% endif %}
46
+ </div>
47
+ </div>
@@ -0,0 +1,100 @@
1
+ <nav id="site-nav" class="site-nav" role="navigation">
2
+ <header>
3
+ <span>
4
+ <a id="home-btn" class="btn btn--green" href="{{ '/' | relative_url }}" title="Go Home">
5
+ {{ site.data.emoji.home }}
6
+ </a>
7
+ </span>
8
+ <span class="dropdown">
9
+ <button class="dropdown__btn">
10
+ <span title="Page Navigation">
11
+ {{ site.data.emoji.pages }}
12
+ </span>
13
+ </button>
14
+ <div class="dropdown__content">
15
+ {% assign recent_page = site.pages | where: "name", "recent.md" %}
16
+ {% if recent_page.first %}
17
+ <a class="btn btn--blue drop-1" href="{{ '/recent' | relative_url }}" title="Go To Recent Changes">
18
+ {{ site.data.emoji.recent }}
19
+ </a>
20
+ {% endif %}
21
+ {% if site.states %}
22
+ {% assign root_state = site.states | find_exp: "item", "item.path == site.bonsai.states.root_path" %}
23
+ <a class="btn btn--brown drop-2" href="{{ root_state.url | relative_url }}" title="Go To States">
24
+ {{ site.data.emoji.stat_tags }}
25
+ </a>
26
+ {% endif %}
27
+ {% assign archive_page = site.pages | where: "name", "archive.md" %}
28
+ {% if archive_page.first %}
29
+ <a class="btn btn--purple drop-3" href="{{ '/archive' | relative_url }}" title="Go To Archive">
30
+ {{ site.data.emoji.archive }}
31
+ </a>
32
+ {% endif %}
33
+ {% assign map_page = site.pages | where: "name", "map.md" %}
34
+ {% if map_page.first %}
35
+ <a class="btn btn--green drop-3" href="{{ '/map' | relative_url }}" title="Go To Tag Map">
36
+ {{ site.data.emoji.bonsai }}
37
+ </a>
38
+ {% endif %}
39
+ </div>
40
+ </span>
41
+ <span class="dropdown">
42
+ <button class="dropdown__btn">
43
+ <span title="Theme Color Toggles">
44
+ {{ site.data.emoji.colors }}
45
+ </span>
46
+ </button>
47
+ <div class="dropdown__content">
48
+ {% for theme in site.data.themes %}
49
+ <a data-theme-id="{{ theme.id }}" class="btn btn--yellow drop-{{ forloop.index }}" title="{{ theme.id }}">
50
+ {{ theme.emoji }}
51
+ </a>
52
+ {% endfor %}
53
+ </div>
54
+ </span>
55
+ <span class="dropdown">
56
+ <button class="dropdown__btn">
57
+ <span title="Site-Nav Toggles">
58
+ {{ site.data.emoji.site_nav }}
59
+ </span>
60
+ </button>
61
+ <div class="dropdown__content">
62
+ {% if site.bonsai.nav.visited.enabled %}
63
+ <label class="btn btn--orange">
64
+ <input id="nav-type-checkbox" type="checkbox" checked="checked">
65
+ <span id="nav-type-emoji-span" title="Toggle Nav Type"></span>
66
+ </label>
67
+ {% endif %}
68
+ <label class="btn btn--green">
69
+ <input id="graph-kind-checkbox" type="checkbox" checked="checked">
70
+ <span id="graph-kind-emoji-span" title="Toggle Graph Kind"></span>
71
+ </label>
72
+ <a id="delete-btn" class="btn btn--red drop-3" title="Delete Visited History">
73
+ {{ site.data.emoji.delete }}
74
+ </a>
75
+ </div>
76
+ </span>
77
+ {% if site.bonsai.nav.search.enabled %}
78
+ <a id="search-btn" class="btn btn--brown" href="#" title="Search (cmd/ctrl+k)">
79
+ {{ site.data.emoji.search }}
80
+ </a>
81
+ {% endif %}
82
+ </header>
83
+
84
+ {% if site.bonsai.nav.search.enabled %}
85
+ <div id="search">
86
+ <input id="search-input" class="search__input hide"></input>
87
+ <div id="search-results" class="search__results"></div>
88
+ </div>
89
+ {% endif %}
90
+ <div id="site-nav-content">
91
+ <div id="jekyll-graph"></div>
92
+ {% if site.bonsai.nav.visited.enabled %}
93
+ <nav id="visited-nav" class="visited-nav"></nav>
94
+ {% endif %}
95
+ </div>
96
+
97
+ <footer>
98
+ <span class="text--small">ðŸŠī Grown with 💚 from a <a class="web-link" href="https://jekyll-wikibonsai.netlify.app">jekyll-wikibonsai</a></span>
99
+ </footer>
100
+ </nav>
@@ -0,0 +1,49 @@
1
+ {% comment %}
2
+
3
+ Usage:
4
+ {% assign tag_attr = page.attributes | link_type: "tags" %}
5
+ {% include tags.html tags_attrs=tag_attr tags_fms=page.tags %}
6
+
7
+ Parameters:
8
+ * tags_attrs (array) - array of attributes that are hashes with keys
9
+ 'type' and 'urls'
10
+ (which correspond to `jekyll-wikilinks`
11
+ attributes and attributed metadata)
12
+ * tags_fms (array) - array of strings that are tag names
13
+ (which correspond to entry filenames)
14
+
15
+ Note:
16
+ To be used with germ-type documents.
17
+ (e.g. markdown documents that use tags metadata to map to entries)
18
+
19
+ {% endcomment %}
20
+
21
+
22
+ <!-- 'tags' attribute -->
23
+ {% for tag_attr in tags_attrs %}
24
+ {% for url in tag_attr.urls %}
25
+ {% assign entry = site.entries | where: "url", url | first %}
26
+ <button class="tag-pill {% if entry %}{% else %}disabled{% endif %}">
27
+ {% if entry %}
28
+ {% include btn_state.html states=entry.status %}
29
+ <a class="sem-tag" href="{{ entry.url | relative_url }}">{{ entry.title }}</a>
30
+ {% else %}
31
+ <span class="text--small">{{ site.data.emoji.missing }} {{ sem_tag }}</span>
32
+ {% endif %}
33
+ </button>
34
+ {% endfor %}
35
+ {% endfor %}
36
+ <!-- 'tags' frontmatter -->
37
+ {% for sem_tag in tags_fms %}
38
+ <!-- prefix with '/' to prevent matching subhierarchies -->
39
+ {% assign sem_tag_path = "/" | append: sem_tag | append: ".md" %}
40
+ {% assign entry = site.entries | find_exp: "item", "item.path contains sem_tag_path" %}
41
+ <button class="tag-pill {% if entry %}{% else %}disabled{% endif %}">
42
+ {% if entry %}
43
+ {% include btn_state.html states=entry.status %}
44
+ <a class="sem-tag" href="{{ entry.url | relative_url }}">{{ entry.title }}</a>
45
+ {% else %}
46
+ <span class="text--small">{{ site.data.emoji.missing }} {{ sem_tag }}</span>
47
+ {% endif %}
48
+ </button>
49
+ {% endfor %}
@@ -0,0 +1,80 @@
1
+ {% comment %}
2
+
3
+ Usage:
4
+ {% include themes.scss.liquid id=theme.id colors=theme.colors svg=theme.svg graph=theme.graph %}
5
+
6
+ Parameters:
7
+ * colors (object) - collection of color values for css theming
8
+ * svg (object) - collection of color values for svg images
9
+ * graph (object) - collection of graph/size values for d3 graph
10
+
11
+ {% endcomment %}
12
+
13
+ // theme colors
14
+ [data-theme='{{ include.id }}'] {
15
+ // logo images //
16
+
17
+ --favicon-src: {{ include.src.favicon }};
18
+ --logo-src: {{ include.src.logo }};
19
+ --nav-burger-base: {{ include.src.nav_burger.base }};
20
+ --nav-burger-bonsai: {{ include.src.nav_burger.bonsai }};
21
+
22
+ // theme colors //
23
+
24
+ // singles
25
+ --selection-color: {{ include.colors.selection }};
26
+ --body-background-color: {{ include.colors.background }};
27
+ --box-shadow-color: {{ include.colors.shadow }};
28
+ --body-text-color: {{ include.colors.text }};
29
+ --small-heading-color: {{ include.colors.text_grey }};
30
+ --accent-dark-color: {{ include.colors.accent_dark }};
31
+ --accent-light-color: {{ include.colors.accent_light }};
32
+
33
+ // link colors
34
+ --link-color: {{ include.colors.link.web.valid }};
35
+ --link-underline-color: {{ include.colors.link.web.underline }};
36
+ --wiki-link-color: {{ include.colors.link.wiki.valid }};
37
+ --wiki-link-underline-color: {{ include.colors.link.wiki.underline }};
38
+ --invalid-wiki-link-color: {{ include.colors.link.wiki.invalid }};
39
+
40
+ // svg colors //
41
+
42
+ // bullets
43
+ --bullet-link: {{ include.graph.link.color }};
44
+ --bullet-node: {{ include.graph.node.visited.color }};
45
+
46
+ // pencil
47
+
48
+ // fill
49
+ --pencil-fill-default: {{ include.svg.pencil.default }};
50
+ --pencil-fill-blue: {{ include.svg.pencil.blue }};
51
+ --pencil-fill-green: {{ include.svg.pencil.green }};
52
+ --pencil-fill-red: {{ include.svg.pencil.red }};
53
+ --pencil-fill-yellow: {{ include.svg.pencil.yellow }};
54
+ // stroke
55
+ --pencil-stroke-default: {{ include.svg.pencil.default }};
56
+ --pencil-stroke-blue: {{ include.svg.pencil.blue }};
57
+ --pencil-stroke-green: {{ include.svg.pencil.green }};
58
+ --pencil-stroke-red: {{ include.svg.pencil.red }};
59
+ --pencil-stroke-yellow: {{ include.svg.pencil.yellow }};
60
+
61
+ // graph colors //
62
+
63
+ // nodes
64
+ // glow
65
+ --graph-node-current-glow: {{ include.graph.node.current }};
66
+ --graph-node-tagged-glow: {{ include.graph.node.tagged }};
67
+ --graph-node-visited-glow: {{ include.graph.node.visited.glow }};
68
+ // color
69
+ --graph-node-stroke-color: {{ include.graph.node.stroke }};
70
+ --graph-node-missing-color: {{ include.graph.node.missing }};
71
+ --graph-node-unvisited-color: {{ include.graph.node.unvisited }};
72
+ --graph-node-visited-color: {{ include.graph.node.visited.color }};
73
+
74
+ // links
75
+ --graph-link-color: {{ include.graph.link.color }};
76
+ --graph-particles-color: {{ include.graph.particles.color }};
77
+
78
+ // label text
79
+ --graph-text-color: {{ include.graph.text.color }};
80
+ }