jekyll-bonsai 0.0.3

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 (177) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +674 -0
  3. data/README.md +11 -0
  4. data/_config.yml +155 -0
  5. data/_entries/digital-garden.bonsai.md +36 -0
  6. data/_entries/digital-garden.field-logs.md +10 -0
  7. data/_entries/digital-garden.fork.md +10 -0
  8. data/_entries/digital-garden.md +17 -0
  9. data/_entries/digital-garden.path.md +11 -0
  10. data/_entries/digital-garden.plants.md +12 -0
  11. data/_entries/digital-garden.pollinate.md +10 -0
  12. data/_entries/digital-garden.steps.md +10 -0
  13. data/_entries/digital-garden.stream.md +12 -0
  14. data/_entries/digital-garden.sweep.md +12 -0
  15. data/_entries/digital-garden.weather.md +12 -0
  16. data/_entries/features.md +10 -0
  17. data/_entries/features.notes.hover-preview.md +10 -0
  18. data/_entries/features.notes.md +12 -0
  19. data/_entries/features.notes.note-body.md +12 -0
  20. data/_entries/features.notes.note-body.share.md +10 -0
  21. data/_entries/features.notes.note-body.sidenotes.md +52 -0
  22. data/_entries/features.notes.note-foot.links.md +10 -0
  23. data/_entries/features.notes.note-foot.md +11 -0
  24. data/_entries/features.notes.note-foot.posts.md +10 -0
  25. data/_entries/features.notes.note-foot.webmentions.md +10 -0
  26. data/_entries/features.notes.note-head.md +10 -0
  27. data/_entries/features.pages.field-blogs.md +10 -0
  28. data/_entries/features.pages.md +12 -0
  29. data/_entries/features.pages.recent.md +10 -0
  30. data/_entries/features.pages.status-tags.md +10 -0
  31. data/_entries/features.site-nav.graph.links.md +10 -0
  32. data/_entries/features.site-nav.graph.links.namespacing.md +14 -0
  33. data/_entries/features.site-nav.graph.links.wikilinks.md +25 -0
  34. data/_entries/features.site-nav.graph.md +12 -0
  35. data/_entries/features.site-nav.graph.nodes.current-note.md +10 -0
  36. data/_entries/features.site-nav.graph.nodes.md +12 -0
  37. data/_entries/features.site-nav.graph.nodes.mia.missing-note.md +20 -0
  38. data/_entries/features.site-nav.graph.nodes.visited-status.md +10 -0
  39. data/_entries/features.site-nav.graph.toggle-graph.md +13 -0
  40. data/_entries/features.site-nav.graph.type.md +16 -0
  41. data/_entries/features.site-nav.graph.type.net-web.md +10 -0
  42. data/_entries/features.site-nav.graph.type.tree.md +12 -0
  43. data/_entries/features.site-nav.md +10 -0
  44. data/_entries/features.site-nav.visited.md +14 -0
  45. data/_entries/features.tags.md +13 -0
  46. data/_entries/features.themes.dark.md +12 -0
  47. data/_entries/features.themes.light.md +10 -0
  48. data/_entries/features.themes.md +12 -0
  49. data/_entries/features.visited.delete-data.md +10 -0
  50. data/_entries/features.visited.md +12 -0
  51. data/_entries/features.visitor-preferences.md +27 -0
  52. data/_entries/feedback.md +10 -0
  53. data/_entries/people.creator.md +12 -0
  54. data/_entries/people.md +13 -0
  55. data/_entries/people.visitors.md +12 -0
  56. data/_entries/plugins.jekyll-wikilinks.md +10 -0
  57. data/_entries/plugins.md +10 -0
  58. data/_entries/root.md +26 -0
  59. data/_includes/anchor-headings.html +152 -0
  60. data/_includes/connect.html +44 -0
  61. data/_includes/entry-attrs.html +27 -0
  62. data/_includes/head.html +23 -0
  63. data/_includes/hover-preview.html +84 -0
  64. data/_includes/img/bullet-ancestor.svg +5 -0
  65. data/_includes/img/bullet-net-web.svg +9 -0
  66. data/_includes/img/bullet-tree.svg +9 -0
  67. data/_includes/metrics.html +10 -0
  68. data/_includes/share.html +45 -0
  69. data/_includes/site-nav.html +48 -0
  70. data/_includes/styles.scss.liquid +3 -0
  71. data/_layouts/default.html +39 -0
  72. data/_layouts/entry.html +124 -0
  73. data/_layouts/post.html +29 -0
  74. data/_layouts/state.html +59 -0
  75. data/_layouts/table-wrappers.html +7 -0
  76. data/_layouts/vendor/compress.html +10 -0
  77. data/_pages/about.md +7 -0
  78. data/_pages/posts.html +19 -0
  79. data/_pages/recent.html +48 -0
  80. data/_plugins/doc_filters.rb +44 -0
  81. data/_plugins/prep_entry.rb +43 -0
  82. data/_plugins/sidenote.rb +123 -0
  83. data/_plugins/tags.rb +52 -0
  84. data/_sass/base/_layout.scss +54 -0
  85. data/_sass/base/_main.scss +203 -0
  86. data/_sass/base/_typography.scss +75 -0
  87. data/_sass/base/base.scss +3 -0
  88. data/_sass/color/dark.scss +58 -0
  89. data/_sass/color/light.scss +58 -0
  90. data/_sass/includes/_btn.scss +106 -0
  91. data/_sass/includes/_graph.scss +69 -0
  92. data/_sass/includes/_nav.scss +89 -0
  93. data/_sass/includes/_site_nav.scss +221 -0
  94. data/_sass/includes/_tooltip.scss +29 -0
  95. data/_sass/includes/includes.scss +9 -0
  96. data/_sass/markdown/_code.scss +340 -0
  97. data/_sass/markdown/_content.scss +400 -0
  98. data/_sass/markdown/_tables.scss +60 -0
  99. data/_sass/markdown/markdown.scss +7 -0
  100. data/_sass/modules.scss +14 -0
  101. data/_sass/pages/_index.scss +72 -0
  102. data/_sass/pages/_posts.scss +17 -0
  103. data/_sass/pages/_recent.scss +26 -0
  104. data/_sass/pages/_state.scss +72 -0
  105. data/_sass/pages/pages.scss +4 -0
  106. data/_sass/support/_functions.scss +9 -0
  107. data/_sass/support/_variables.scss +179 -0
  108. data/_sass/support/mixins/_buttons.scss +27 -0
  109. data/_sass/support/mixins/_layout.scss +56 -0
  110. data/_sass/support/mixins/_typography.scss +84 -0
  111. data/_sass/support/mixins/mixins.scss +3 -0
  112. data/_sass/support/support.scss +3 -0
  113. data/_sass/vendor/normalize.scss/README.md +7 -0
  114. data/_sass/vendor/normalize.scss/normalize.scss +349 -0
  115. data/_states/bamboo.md +8 -0
  116. data/_states/berry.md +8 -0
  117. data/_states/bloom.md +8 -0
  118. data/_states/bud.md +6 -0
  119. data/_states/fruit.md +8 -0
  120. data/_states/melon.md +8 -0
  121. data/_states/pot-bamboo.md +8 -0
  122. data/_states/seed.md +8 -0
  123. data/_states/sprout.md +8 -0
  124. data/_states/tags.md +8 -0
  125. data/_states/tea.md +8 -0
  126. data/assets/css/styles-dark.scss +3 -0
  127. data/assets/css/styles-light.scss +3 -0
  128. data/assets/css/styles.scss +8 -0
  129. data/assets/font/Cutive_Mono/CutiveMono-Regular.ttf +0 -0
  130. data/assets/font/Cutive_Mono/OFL.txt +93 -0
  131. data/assets/font/Old_Standard_TT/OFL.txt +93 -0
  132. data/assets/font/Old_Standard_TT/OldStandardTT-Bold.ttf +0 -0
  133. data/assets/font/Old_Standard_TT/OldStandardTT-Italic.ttf +0 -0
  134. data/assets/font/Old_Standard_TT/OldStandardTT-Regular.ttf +0 -0
  135. data/assets/font/exo2/Exo2-Italic-VariableFont_wght.ttf +0 -0
  136. data/assets/font/exo2/Exo2-VariableFont_wght.ttf +0 -0
  137. data/assets/font/exo2/OFL.txt +93 -0
  138. data/assets/font/exo2/README.txt +81 -0
  139. data/assets/font/exo2/static/Exo2-Black.ttf +0 -0
  140. data/assets/font/exo2/static/Exo2-BlackItalic.ttf +0 -0
  141. data/assets/font/exo2/static/Exo2-Bold.ttf +0 -0
  142. data/assets/font/exo2/static/Exo2-BoldItalic.ttf +0 -0
  143. data/assets/font/exo2/static/Exo2-ExtraBold.ttf +0 -0
  144. data/assets/font/exo2/static/Exo2-ExtraBoldItalic.ttf +0 -0
  145. data/assets/font/exo2/static/Exo2-ExtraLight.ttf +0 -0
  146. data/assets/font/exo2/static/Exo2-ExtraLightItalic.ttf +0 -0
  147. data/assets/font/exo2/static/Exo2-Italic.ttf +0 -0
  148. data/assets/font/exo2/static/Exo2-Light.ttf +0 -0
  149. data/assets/font/exo2/static/Exo2-LightItalic.ttf +0 -0
  150. data/assets/font/exo2/static/Exo2-Medium.ttf +0 -0
  151. data/assets/font/exo2/static/Exo2-MediumItalic.ttf +0 -0
  152. data/assets/font/exo2/static/Exo2-Regular.ttf +0 -0
  153. data/assets/font/exo2/static/Exo2-SemiBold.ttf +0 -0
  154. data/assets/font/exo2/static/Exo2-SemiBoldItalic.ttf +0 -0
  155. data/assets/font/exo2/static/Exo2-Thin.ttf +0 -0
  156. data/assets/font/exo2/static/Exo2-ThinItalic.ttf +0 -0
  157. data/assets/img/bonsai-dark.png +0 -0
  158. data/assets/img/bonsai-dark.svg +106 -0
  159. data/assets/img/bonsai-light.png +0 -0
  160. data/assets/img/bonsai-light.svg +81 -0
  161. data/assets/img/favicon-dark.png +0 -0
  162. data/assets/img/favicon-light.png +0 -0
  163. data/assets/img/nav-base-dark.svg +1 -0
  164. data/assets/img/nav-base-light.svg +1 -0
  165. data/assets/img/nav-bonsai-dark.svg +1 -0
  166. data/assets/img/nav-bonsai-light.svg +1 -0
  167. data/assets/img/nav-dot-dark.svg +1 -0
  168. data/assets/img/nav-dot-light.svg +1 -0
  169. data/assets/img/nav-wiki-links-dark.svg +1 -0
  170. data/assets/img/nav-wiki-links-light.svg +1 -0
  171. data/assets/js/entry.js +102 -0
  172. data/assets/js/graph.js +552 -0
  173. data/assets/js/scripts.js +80 -0
  174. data/assets/js/site-nav.js +132 -0
  175. data/assets/js/theme-colors.js +71 -0
  176. data/index.html +82 -0
  177. metadata +360 -0
@@ -0,0 +1,44 @@
1
+ # liquid template to filter for most recently created/edited docs
2
+ require 'time'
3
+
4
+ module Jekyll
5
+ module DocFilters
6
+ def notable(docs)
7
+ return docs.select { |d| d.data.include?('notable') && (d.data['notable'] == true) }
8
+ end
9
+
10
+ # returns most recently created/updated docs up to the defined 'num'ber.
11
+ # adds a 'weather' data attribute to render on the page.
12
+ def recent(docs, num=10)
13
+ return if docs.nil?
14
+ num = self.to_integer(num)
15
+ # sort docs by most recently updated
16
+ recent_docs = docs.sort_by { |d| d.data['updated'] }.reverse[0..(num - 1)]
17
+ # assign weather attribute: if 'created' and 'updated' happened on the same day, presume creation status.
18
+ recent_docs.each do |docs|
19
+ day_created = Time.at(docs.data['created']).to_date
20
+ day_updated = Time.at(docs.data['updated']).to_date
21
+ end
22
+ return recent_docs
23
+ end
24
+
25
+ def weather(doc)
26
+ day_created = Time.at(doc['created']).to_date
27
+ day_updated = Time.at(doc['updated']).to_date
28
+ return day_created === day_updated ? "🌤" : "🌧"
29
+ end
30
+
31
+ # from: https://github.com/Shopify/liquid/blob/eab13a07d9861a38d993d2749ae25f06ff76426b/lib/liquid/utils.rb#L38
32
+ def to_integer(num)
33
+ return num if num.is_a?(Integer)
34
+ num = num.to_s
35
+ begin
36
+ Integer(num)
37
+ rescue ::ArgumentError
38
+ raise ArgumentError, "invalid integer"
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ Liquid::Template.register_filter(Jekyll::DocFilters)
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+ require 'nanoid'
3
+ require 'time'
4
+
5
+ class EntryVerificationGenerator < Jekyll::Generator
6
+ safe true
7
+ priority :highest
8
+
9
+ def generate(site)
10
+ #
11
+ # init jekyll vars
12
+ #
13
+ all_entries = site.collections['entries'].docs
14
+ # all_pages = site.pages
15
+ all_docs = all_entries # + all_pages
16
+
17
+ link_extension = site.config["permalink"] != "pretty" ? '.html' : ''
18
+
19
+ all_docs.each do |cur_entry|
20
+ # validation and sanitization
21
+ prep_entries(site, cur_entry, link_extension)
22
+ end
23
+ end
24
+
25
+ # verify all entries end with a "\n" so sidenotes works
26
+ # (sidenotes don't detect the last definition if there is no ending "\n").
27
+ def prep_entries(site, entry, link_extension)
28
+ # make sure ids are proper nano id format
29
+ if !(entry.data['id'] =~ /^[1234567890abcdef]{10}$/)
30
+ entry.data['id'] = Nanoid.generate(size: 10, alphabet: '1234567890abcdef')
31
+ end
32
+ # from: https://stackoverflow.com/questions/16235601/what-are-the-steps-to-getting-this-custom-permalink-scheme-in-jekyll
33
+ # Until Jekyll allows me to use :id, I have to resort to this
34
+ if link_extension.empty?
35
+ entry.data['permalink'] = '/entry/' + entry.data['id'] + '/'
36
+ else
37
+ entry.data['permalink'] = '/entry/' + entry.data['id'] + link_extension
38
+ end
39
+ # sanitize timestamps: remove milliseconds from epoch time
40
+ entry.data['created'] = Time.at(entry.data['created'].to_s[0..-4].to_i)
41
+ entry.data['updated'] = Time.at(entry.data['updated'].to_s[0..-4].to_i)
42
+ end
43
+ end
@@ -0,0 +1,123 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ class SideNoteGenerator < Generator
5
+ safe true
6
+ attr_accessor :md_docs
7
+
8
+ ##
9
+ # parser constants
10
+ ##
11
+ # constants are taken from kramdown and baseparser.
12
+ # (for easier kramdown integration)
13
+
14
+ # from baseparser: https://github.com/ruby/rexml/blob/master/lib/rexml/parsers/baseparser.rb#L36
15
+ LETTER = '[:alpha:]'
16
+ COMBININGCHAR = '' # TODO
17
+ EXTENDER = '' # TODO
18
+ NCNAME_STR= "[#{LETTER}_][-[:alnum:]._#{COMBININGCHAR}#{EXTENDER}]*"
19
+ UNAME_STR= "(?:#{NCNAME_STR}:)?#{NCNAME_STR}"
20
+
21
+ # from kramdown: https://github.com/gettalong/kramdown
22
+ # from blank_line.rb
23
+ BLANK_LINE = /(?>^\s*\n)+/
24
+ # from eob.rb
25
+ EOB_MARKER = /^\^\s*?\n/
26
+ # from kramdown.rb
27
+ OPT_SPACE = / {0,3}/
28
+ # Regexp for matching indentation (one tab or four spaces)
29
+ INDENT = /^(?:\t| {4})/
30
+ # from extensions.rb
31
+ ALD_ID_CHARS = /[\w-]/
32
+ ALD_ANY_CHARS = /\\\}|[^\}]/
33
+ ALD_ID_NAME = /\w#{ALD_ID_CHARS}*/
34
+ IAL_BLOCK = /\{:(?!:|\/)(#{ALD_ANY_CHARS}+)\}\s*?\n/
35
+ IAL_BLOCK_START = /^#{OPT_SPACE}#{IAL_BLOCK}/
36
+ # from html.rb
37
+ # Some HTML elements like script belong to both categories (i.e. are valid in block and
38
+ # span HTML) and don't appear therefore!
39
+ # script, textarea
40
+ HTML_SPAN_ELEMENTS = %w[a abbr acronym b big bdo br button cite code del dfn em i img input
41
+ ins kbd label mark option q rb rbc rp rt rtc ruby samp select small
42
+ span strong sub sup tt u var]
43
+ # from paragraph.rb
44
+ LAZY_END_HTML_SPAN_ELEMENTS = HTML_SPAN_ELEMENTS + %w[script]
45
+ LAZY_END_HTML_START = /<(?>(?!(?:#{LAZY_END_HTML_SPAN_ELEMENTS.join('|')})\b)#{REXML::Parsers::BaseParser::UNAME_STR})/
46
+ LAZY_END_HTML_STOP = /<\/(?!(?:#{LAZY_END_HTML_SPAN_ELEMENTS.join('|')})\b)#{REXML::Parsers::BaseParser::UNAME_STR}\s*>/m
47
+ # from markdown.rb
48
+ # CODEBLOCK_MATCH = /(?:#{BLANK_LINE}?(?:#{INDENT}[ \t]*\S.*\n)+)*/
49
+ # because `.gsub(INDENT, '')` in footnote.rb
50
+ # CODEBLOCK_MATCH = /(?:#{BLANK_LINE}?(?:s[ \t]*\S.*\n)+)*/
51
+ # from codeblock.rb
52
+ CODEBLOCK_MATCH = /(?:#{BLANK_LINE}?(?:#{INDENT}[ \t]*\S.*\n)+(?:(?!#{IAL_BLOCK_START}|#{EOB_MARKER}|^#{OPT_SPACE}#{LAZY_END_HTML_STOP}|^#{OPT_SPACE}#{LAZY_END_HTML_START})^[ \t]*\S.*\n)*)*/
53
+
54
+ # footnotes (for reference)
55
+ # FOOTNOTE_DEFINITION_START = /^#{OPT_SPACE}\[\^(#{ALD_ID_NAME})\]:\s*?(.*?\n#{CODEBLOCK_MATCH})/
56
+ # FOOTNOTE_MARKER_START = /\[\^(#{ALD_ID_NAME})\]/
57
+ ##
58
+ # constants for local use
59
+ ##
60
+ # right
61
+ RIGHT_SIDENOTE_DEFINITION_START = /^#{OPT_SPACE}\[\>(#{ALD_ID_NAME})\]:\s*?(.*?\n#{CODEBLOCK_MATCH})/
62
+ RIGHT_SIDENOTE_MARKER_START = /\[\>(#{ALD_ID_NAME})\]/
63
+ # left
64
+ LEFT_SIDENOTE_DEFINITION_START = /^#{OPT_SPACE}\[\<(#{ALD_ID_NAME})\]:\s*?(.*?\n#{CODEBLOCK_MATCH})/
65
+ LEFT_SIDENOTE_MARKER_START = /\[\<(#{ALD_ID_NAME})\]/
66
+
67
+ def generate(site)
68
+
69
+ # setup markdown docs
70
+ docs = site.pages + site.docs_to_write
71
+ @md_docs = docs.filter {|doc| site.find_converter_instance(Jekyll::Converters::Markdown).matches(doc.extname) }
72
+
73
+ link_extension = !!site.config["use_html_extension"] ? '.html' : ''
74
+
75
+ @md_docs.each do |cur_doc|
76
+ # check for newlines @ eof.
77
+ # (kramdown can handle footnotes with no newline, but the regex i'm getting requires a newline after the last footnote to find it.)
78
+ if cur_doc.content[-1] != "\n"
79
+ Jekyll.logger.warn "Missing newline at end of file -- this could break sidenotes: ", cur_note.data['title']
80
+ end
81
+ parse_sidenote(cur_doc, "left")
82
+ parse_sidenote(cur_doc, "right")
83
+ end
84
+ end
85
+
86
+ # just get tufte-style sidenotes working for now...
87
+ # if there's time, emulate gwern's method: https://github.com/gwern/gwern.net/blob/9e6893033ec63248b1f0b29df119c40d39a7dcef/css/default.css#L1223
88
+
89
+ # mark -> [<left-sidenote], [>right-sidenote]
90
+ # def -> [<left-sidenote]:, [>right-sidenote]:
91
+ # `side` should be 'right' or 'left'
92
+ def parse_sidenote(doc, side)
93
+ # left v right setup
94
+ if side == "right"
95
+ sidenote_def_regex = RIGHT_SIDENOTE_DEFINITION_START
96
+ # sidenote_mark_regex = RIGHT_SIDENOTE_MARKER_START
97
+ css_class = "rsn"
98
+ sn_regex = /\>/
99
+ elsif side == "left"
100
+ sidenote_def_regex = LEFT_SIDENOTE_DEFINITION_START
101
+ # sidenote_mark_regex = LEFT_SIDENOTE_MARKER_START
102
+ css_class = "lsn"
103
+ sn_regex = /\</
104
+ else
105
+ Jekyll.logger.error "Can't process sidenote that is not either 'right' or 'left'."
106
+ return
107
+ end
108
+ # process sidenotes
109
+ sidenotes = doc.content.scan(sidenote_def_regex)
110
+ doc.content.gsub!(sidenote_def_regex, '') # rm sidenote defs from original note.
111
+ i = 0
112
+ sidenotes.each do |sidenote|
113
+ i += 1
114
+ mark = sidenote[0]
115
+ definition = sidenote[1]
116
+ doc.content = doc.content.gsub(
117
+ /\[#{sn_regex}(#{mark})\]/i,
118
+ "<label for=\"#{css_class}-#{i}\" class=\"sidenote-toggle sidenote-number\"></label><input type=\"checkbox\" id=\"#{css_class}-#{i}\" class=\"sidenote-toggle\"><span class=\"#{css_class}\">#{definition}</span>"
119
+ )
120
+ end
121
+ end
122
+ end
123
+ end
data/_plugins/tags.rb ADDED
@@ -0,0 +1,52 @@
1
+ # liquid template to filter between semantic and status tags
2
+ module Jekyll
3
+ module TagFilters
4
+
5
+ # filter tags
6
+
7
+ def sem_tags(tags)
8
+ return if tags.nil?
9
+ site = @context.registers[:site]
10
+ sem_tags = []
11
+ site.collections['entries'].docs.each do |n|
12
+ tags.each do |t|
13
+ if n['namespace'] == t
14
+ sem_tags << {
15
+ 'tag' => n['title'],
16
+ # 'namespace' => n['namespace'],
17
+ 'url' => n.url
18
+ }
19
+ end
20
+ end
21
+ end
22
+ return sem_tags
23
+ end
24
+
25
+ def stat_tags(tags)
26
+ return if tags.nil?
27
+ site = @context.registers[:site]
28
+ stat_tags = []
29
+ site.collections['states'].docs.each do |st|
30
+ tags.each do |t|
31
+ if st['emoji'] == t
32
+ stat_tags << {
33
+ 'emoji' => st['emoji'],
34
+ 'url' => st.url
35
+ }
36
+ end
37
+ end
38
+ end
39
+ return stat_tags
40
+ end
41
+
42
+ # filter posts
43
+
44
+ def sem_tag_posts(namespace)
45
+ return if namespace.nil?
46
+ site = @context.registers[:site]
47
+ return site.posts.docs.select { |p| p['tags'].include?(namespace) }
48
+ end
49
+ end
50
+ end
51
+
52
+ Liquid::Template.register_filter(Jekyll::TagFilters)
@@ -0,0 +1,54 @@
1
+ //
2
+ // two column layout
3
+ //
4
+
5
+ .side-bar {
6
+ z-index: 1;
7
+ display: flex;
8
+ flex-wrap: wrap;
9
+
10
+ @include mq(md) {
11
+ width: $nav-width-md;
12
+ flex-wrap: nowrap;
13
+ position: fixed;
14
+ height: 100%;
15
+ }
16
+
17
+ @include mq(lg) {
18
+ width: $nav-width-lg;
19
+ }
20
+ }
21
+
22
+ .main {
23
+ height: 100%;
24
+
25
+ @include mq(md) {
26
+ max-width: $content-width;
27
+ margin-left: $nav-width-md;
28
+ }
29
+
30
+ @include mq(lg) {
31
+ margin-left: $nav-width-lg;
32
+ }
33
+ }
34
+
35
+ .main-content-wrap {
36
+ @include container;
37
+
38
+ display: flex;
39
+ flex-direction: column;
40
+
41
+ padding-top: $gutter-spacing-sm;
42
+ padding-bottom: $gutter-spacing-sm;
43
+
44
+ min-height: 100vh;
45
+
46
+ @include mq(md) {
47
+ padding-top: $gutter-spacing;
48
+ padding-bottom: $gutter-spacing;
49
+ }
50
+ }
51
+
52
+ .entry-body {
53
+ padding: $sp-3;
54
+ }
@@ -0,0 +1,203 @@
1
+ //
2
+ // Base element style overrides
3
+ //
4
+ // stylelint-disable selector-no-type, selector-max-type
5
+
6
+ * {
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ ::selection {
11
+ color: $grey-dk-100;
12
+ background: #E6E09E;
13
+ }
14
+
15
+ html {
16
+ @include fs-4;
17
+ scroll-behavior: smooth;
18
+ }
19
+
20
+ body {
21
+ font-family: $body-font-family;
22
+ font-size: inherit;
23
+ line-height: $body-line-height;
24
+ color: $body-text-color;
25
+ background-color: $body-background-color;
26
+ }
27
+
28
+ ol,
29
+ ul,
30
+ dl,
31
+ pre,
32
+ address,
33
+ blockquote,
34
+ table,
35
+ div,
36
+ hr,
37
+ form,
38
+ fieldset,
39
+ noscript .table-wrapper {
40
+ margin-top: 0;
41
+ }
42
+
43
+ h1,
44
+ h2,
45
+ h3,
46
+ h4,
47
+ h5,
48
+ h6 {
49
+ margin-top: 0;
50
+ margin-bottom: 1em;
51
+ font-weight: 500;
52
+ line-height: $body-heading-line-height;
53
+ color: $body-heading-color;
54
+ }
55
+
56
+ p {
57
+ margin-top: 1em;
58
+ margin-bottom: 1em;
59
+ }
60
+
61
+ a {
62
+ color: $link-color;
63
+ text-decoration: none;
64
+ }
65
+
66
+ a:not([class]) {
67
+ text-decoration: none;
68
+ background-image: linear-gradient($border-color 0%, $border-color 100%);
69
+ background-repeat: repeat-x;
70
+ background-position: 0 100%;
71
+ background-size: 1px 1px;
72
+
73
+ &:hover {
74
+ background-image: linear-gradient(
75
+ rgba($link-color, 0.45) 0%,
76
+ rgba($link-color, 0.45) 100%
77
+ );
78
+ background-size: 1px 1px;
79
+ }
80
+ }
81
+
82
+ code {
83
+ font-family: $mono-font-family;
84
+ font-size: 0.75em;
85
+ line-height: $body-line-height;
86
+ }
87
+
88
+ figure,
89
+ pre {
90
+ margin: 0;
91
+ }
92
+
93
+ li {
94
+ margin: 0.25em 0;
95
+ }
96
+
97
+ img {
98
+ max-width: 100%;
99
+ height: auto;
100
+ }
101
+
102
+ hr {
103
+ height: 1px;
104
+ padding: 0;
105
+ margin: $sp-6 0;
106
+ background-color: $border-color;
107
+ border: 0;
108
+ }
109
+
110
+ // wiki-link classes
111
+
112
+ .invalid-wiki-link {
113
+ color: $grey-dk-000;
114
+ background: $invalid-wiki-link-color;
115
+ cursor: help;
116
+ }
117
+
118
+ .wiki-link {
119
+ color: $wiki-link-color;
120
+ }
121
+
122
+ .wiki-link-embed {
123
+ position: relative;
124
+ border: 1px solid $separator-color;
125
+ border-radius: 15px;
126
+ padding: $sp-3;
127
+
128
+ .wiki-link-embed-title {
129
+ @include fs-6;
130
+ padding-top: $sp-3;
131
+ padding-left: $sp-3;
132
+ }
133
+
134
+ .wiki-link-embed-content {
135
+ padding: $sp-3;
136
+ }
137
+
138
+ .wiki-link-embed-link {
139
+ position: absolute;
140
+ top: 1em;
141
+ right: 1em;
142
+
143
+ &::before {
144
+ content: "🥾";
145
+ }
146
+
147
+ &:hover {
148
+ filter: drop-shadow(0 0 0.8mm $drop-shadow-brown);
149
+ }
150
+ }
151
+ }
152
+
153
+ .wiki-link-img {
154
+ width: 50px;
155
+ height: 50px;
156
+ }
157
+
158
+ .sem-tag {
159
+ @include fs-2;
160
+ padding: $sp-2;
161
+ border: 1px solid $separator-color;
162
+ border-radius: 15px;
163
+ color: $wiki-link-color;
164
+
165
+ &:hover {
166
+ background-color: $base-button-color;
167
+ }
168
+ }
169
+
170
+ .stat-tag {
171
+ filter: drop-shadow(0 0 0.2mm $drop-shadow-green);
172
+ }
173
+
174
+ .infobox {
175
+ @include fs-2;
176
+ float: right;
177
+ margin-left: $sp-2;
178
+ margin-right: $sp-2;
179
+ padding-left: $sp-3;
180
+ padding-right: $sp-3;
181
+ padding-top: $sp-3;
182
+ border: 1px solid $separator-color;
183
+ border-radius: 15px;
184
+
185
+ .title {
186
+ text-align: center;
187
+ margin-top: 0;
188
+ }
189
+
190
+ ul {
191
+ padding: 0 !important;
192
+ padding-left: $sp-2 !important;
193
+ padding-right: $sp-2 !important;
194
+
195
+ li {
196
+ list-style-type: none !important;
197
+
198
+ &::before {
199
+ content: "" !important;
200
+ }
201
+ }
202
+ }
203
+ }