asciibook 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +5 -5
  2. data/README.adoc +122 -0
  3. data/book_template/asciibook.yml +5 -0
  4. data/book_template/book.adoc +3 -0
  5. data/exe/asciibook +7 -0
  6. data/lib/asciibook.rb +19 -1
  7. data/lib/asciibook/asciidoctor_ext/abstract_node.rb +5 -0
  8. data/lib/asciibook/book.rb +153 -0
  9. data/lib/asciibook/builders/base_builder.rb +24 -0
  10. data/lib/asciibook/builders/epub_builder.rb +84 -0
  11. data/lib/asciibook/builders/html_builder.rb +45 -0
  12. data/lib/asciibook/builders/mobi_builder.rb +21 -0
  13. data/lib/asciibook/builders/pdf_builder.rb +154 -0
  14. data/lib/asciibook/command.rb +85 -0
  15. data/lib/asciibook/converter.rb +303 -0
  16. data/lib/asciibook/page.rb +30 -0
  17. data/lib/asciibook/version.rb +1 -1
  18. data/templates/admonition.html +4 -0
  19. data/templates/audio.html +7 -0
  20. data/templates/colist.html +7 -0
  21. data/templates/dlist.html +12 -0
  22. data/templates/document.html +29 -0
  23. data/templates/embedded.html +20 -0
  24. data/templates/example.html +4 -0
  25. data/templates/footnotes.html +7 -0
  26. data/templates/image.html +11 -0
  27. data/templates/index.html +40 -0
  28. data/templates/inline_anchor.html +12 -0
  29. data/templates/inline_callout.html +1 -0
  30. data/templates/inline_footnote.html +1 -0
  31. data/templates/inline_image.html +3 -0
  32. data/templates/inline_indexterm.html +5 -0
  33. data/templates/inline_quoted.html +24 -0
  34. data/templates/listing.html +4 -0
  35. data/templates/literal.html +1 -0
  36. data/templates/olist.html +8 -0
  37. data/templates/page_break.html +1 -0
  38. data/templates/paragraph.html +1 -0
  39. data/templates/pass.html +1 -0
  40. data/templates/preamble.html +3 -0
  41. data/templates/quote.html +9 -0
  42. data/templates/section.html +4 -0
  43. data/templates/sidebar.html +6 -0
  44. data/templates/stem.html +9 -0
  45. data/templates/table.html +41 -0
  46. data/templates/thematic_break.html +1 -0
  47. data/templates/ulist.html +8 -0
  48. data/templates/verse.html +9 -0
  49. data/templates/video.html +10 -0
  50. data/theme/epub/epub.css +6 -0
  51. data/theme/epub/layout.html +14 -0
  52. data/theme/html/html.css +190 -0
  53. data/theme/html/html.js +29 -0
  54. data/theme/html/layout.html +91 -0
  55. data/theme/mobi/layout.html +13 -0
  56. data/theme/mobi/mobi.css +2 -0
  57. data/theme/pdf/config.yml +6 -0
  58. data/theme/pdf/footer.html +11 -0
  59. data/theme/pdf/header.html +3 -0
  60. data/theme/pdf/layout.html +14 -0
  61. data/theme/pdf/pdf.css +3 -0
  62. data/theme/pdf/toc.xsl +81 -0
  63. data/theme/share/default.css +174 -0
  64. data/theme/share/highlight.css +216 -0
  65. data/theme/share/normalize.css +349 -0
  66. metadata +119 -21
  67. data/.gitignore +0 -9
  68. data/.travis.yml +0 -4
  69. data/Gemfile +0 -4
  70. data/README.md +0 -41
  71. data/Rakefile +0 -10
  72. data/asciibook.gemspec +0 -25
@@ -0,0 +1,30 @@
1
+ module Asciibook
2
+ class Page
3
+ attr_accessor :path, :node, :prev_page, :next_page, :footnotes
4
+
5
+ def initialize(path:, node:)
6
+ @path = path
7
+ @node = node
8
+
9
+ @footnotes = []
10
+ end
11
+
12
+ def title
13
+ node.title
14
+ end
15
+
16
+ def content
17
+ node.convert
18
+ end
19
+
20
+ def to_hash
21
+ {
22
+ 'path' => path,
23
+ 'title' => title,
24
+ 'content' => content,
25
+ 'prev_page' => prev_page && { 'path' => prev_page.path, 'title' => prev_page.title },
26
+ 'next_page' => next_page && { 'path' => next_page.path, 'title' => next_page.title }
27
+ }
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Asciibook
2
- VERSION = "0.0.0"
2
+ VERSION = "0.0.1"
3
3
  end
@@ -0,0 +1,4 @@
1
+ <div class="admonition admonition-{{ node.attributes.name }}" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {% if node.title %}<h5>{{ node.title }}</h5>{% endif %}
3
+ {{ node.content }}
4
+ </div>
@@ -0,0 +1,7 @@
1
+ <audio {% if node.id %}id="{{ node.id }}"{% endif %}
2
+ src="{{ node.attributes.target }}"
3
+ controls="controls"
4
+ {% if node.attributes.autoplay-option %}autoplay="autoplay"{% endif %}
5
+ {% if node.attributes.loop-option %}loop="loop"{% endif %}>
6
+ <em>Sorry, the &lt;auido&gt; element not supported in your reading system.</em>
7
+ </audio>
@@ -0,0 +1,7 @@
1
+ <ul class="colist" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {% for item in node.items %}
3
+ <li>
4
+ <a class="callout" id="colist-{{ item.attributes.coids }}" href="#callout-{{ item.attributes.coids }}">{{ item.attributes.coids | split: '-' | last }}</a> {{ item.text }}
5
+ </li>
6
+ {% endfor %}
7
+ </ul>
@@ -0,0 +1,12 @@
1
+ <dl class="dlist" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {%- for item in node.items -%}
3
+ {%- for term in item.terms -%}
4
+ <dt>{{ term.text }}</dt>
5
+ {%- endfor -%}
6
+ {%- if item.description.text -%}
7
+ <dd>{{ item.description.text }}</dd>
8
+ {%- else -%}
9
+ <dd>{{ item.description.content }}</dd>
10
+ {%- endif -%}
11
+ {%- endfor -%}
12
+ </dl>
@@ -0,0 +1,29 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ {% if node.title %}<title>{{ node.title }}</title>{% endif %}
6
+ </head>
7
+ <body>
8
+ {%- if node.title -%}
9
+ <header>
10
+ <h1>{{ node.title }}</h1>
11
+ {% if node.subtitle %}<p class="subtitle">{{ node.subtitle }}</p>{% endif %}
12
+ {%- if node.authors.size > 0 -%}
13
+ {%- for author in node.authors -%}
14
+ <p class="author">{{ author.name }}</p>
15
+ {%- endfor -%}
16
+ {%- endif -%}
17
+ </header>
18
+ {%- endif -%}
19
+
20
+ {% if node.attributes.toc %}
21
+ <nav class="toc">
22
+ <h1>{{ node.attributes.toc-title }}</h1>
23
+ {{ node.outline }}
24
+ </nav>
25
+ {% endif %}
26
+
27
+ {{ node.content }}
28
+ </body>
29
+ </html>
@@ -0,0 +1,20 @@
1
+ {%- if node.title -%}
2
+ <header>
3
+ <h1>{{ node.title }}</h1>
4
+ {% if node.subtitle %}<p class="subtitle">{{ node.subtitle }}</p>{% endif %}
5
+ {%- if node.authors.size > 0 -%}
6
+ {%- for author in node.authors -%}
7
+ <p class="author">{{ author.name }}</p>
8
+ {%- endfor -%}
9
+ {%- endif -%}
10
+ </header>
11
+ {%- endif -%}
12
+
13
+ {% if node.attributes.toc %}
14
+ <nav class="toc">
15
+ <h1>{{ node.attributes.toc-title }}</h1>
16
+ {{ node.outline }}
17
+ </nav>
18
+ {% endif %}
19
+
20
+ {{ node.content }}
@@ -0,0 +1,4 @@
1
+ <div class="example" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {% if node.title %}<h5>{{ node.captioned_title }}</h5>{% endif %}
3
+ {{ node.content }}
4
+ </div>
@@ -0,0 +1,7 @@
1
+ <footer>
2
+ {%- for footnote in footnotes -%}
3
+ <aside epub:type="footnote" id="{{ footnote.id }}">
4
+ <a href="#{{ footnote.refid }}">{{ footnote.index }}</a>. {{ footnote.text }}
5
+ </aside>
6
+ {%- endfor -%}
7
+ </footer>
@@ -0,0 +1,11 @@
1
+ <figure class="image" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {% if node.attributes.link %}<a href="{{ node.attributes.link }}">{% endif %}
3
+ <img src="{{ node.attributes.target }}"
4
+ {% if node.attributes.alt %}alt="{{ node.attributes.alt }}"{% endif %}
5
+ {% if node.attributes.width %}width="{{ node.attributes.width }}"{% endif %}
6
+ {% if node.attributes.height %}height="{{ node.attributes.height }}"{% endif %} />
7
+ {% if node.attributes.link %}</a>{% endif %}
8
+ {% if node.title %}
9
+ <figcaption>{{ node.captioned_title }}</figcaption>
10
+ {% endif %}
11
+ </figure>
@@ -0,0 +1,40 @@
1
+ <ul class="index">
2
+ {%- for item in indexterms -%}
3
+ <li>
4
+ <p>
5
+ {{ item.term }}
6
+ {%- for target in item.targets -%}
7
+ <a href="{{ target }}">[{{ forloop.index }}]</a>
8
+ {%- endfor -%}
9
+ </p>
10
+ {%- if item.items[0] -%}
11
+ <ul>
12
+ {%- for item in item.items -%}
13
+ <li>
14
+ <p>
15
+ {{ item.term }}
16
+ {%- for target in item.targets -%}
17
+ <a href="{{ target }}">[{{ forloop.index }}]</a>
18
+ {%- endfor -%}
19
+ </p>
20
+ {%- if item.items[0] -%}
21
+ <ul>
22
+ {%- for item in item.items -%}
23
+ <li>
24
+ <p>
25
+ {{ item.term }}
26
+ {%- for target in item.targets -%}
27
+ <a href="{{ target }}">[{{ forloop.index }}]</a>
28
+ {%- endfor -%}
29
+ </p>
30
+ </li>
31
+ {%- endfor -%}
32
+ </ul>
33
+ {%- endif -%}
34
+ </li>
35
+ {%- endfor -%}
36
+ </ul>
37
+ {%- endif -%}
38
+ </li>
39
+ {%- endfor -%}
40
+ </ul>
@@ -0,0 +1,12 @@
1
+ {%- case node.type -%}
2
+ {%- when 'xref' -%}
3
+ <a class="xref" href="{{ node.target }}">{{ node.text }}</a>
4
+ {%- when 'ref' -%}
5
+ <a class="ref" id="{{ node.id }}"></a>
6
+ {%- when 'link' -%}
7
+ <a class="link" href="{{ node.target }}"
8
+ {% if node.attributes.title %}title="{{ node.attributes.title }}"{% endif %}
9
+ {% if node.attributes.window %}target="{{ node.attributes.window }}"{% endif %} >{{ node.text }}</a>
10
+ {%- when 'bibref' -%}
11
+ <a class="bibref" id="{{ node.id }}"></a>[{{ node.xreftext | default: node.id }}]
12
+ {%- endcase -%}
@@ -0,0 +1 @@
1
+ <a class="callout" id="callout-{{ node.id }}" href="#colist-{{ node.id }}">{{ node.text }}</a>
@@ -0,0 +1 @@
1
+ <sup class="footnote" {% if node.id %} id="{{ node.id }}" {% endif %}><a epub:type="noteref" href="{{ node.target }}">[{{ node.index }}]</a></sup>
@@ -0,0 +1,3 @@
1
+ <img src="{{ node.target }}"
2
+ {% if node.attributes.alt %}alt="{{ node.attributes.alt }}"{% endif %}
3
+ {% if node.attributes.title %}title="{{ node.attributes.title }}"{% endif %} />
@@ -0,0 +1,5 @@
1
+ {%- if node.type == 'visible' -%}
2
+ <a class="indexterm" id="{{ node.id }}">{{ node.text }}</a>
3
+ {%- else -%}
4
+ <a class="indexterm" id="{{ node.id }}">&#8203;</a>
5
+ {%- endif -%}
@@ -0,0 +1,24 @@
1
+ {%- case node.type -%}
2
+ {%- when 'emphasis' -%}
3
+ <em>{{ node.text }}</em>
4
+ {%- when 'strong' -%}
5
+ <strong>{{ node.text }}</strong>
6
+ {%- when 'monospaced' -%}
7
+ <code>{{ node.text }}</code>
8
+ {%- when 'superscript' -%}
9
+ <sup>{{ node.text }}</sup>
10
+ {%- when 'subscript' -%}
11
+ <sub>{{ node.text }}</sub>
12
+ {%- when 'double' -%}
13
+ &#8220;{{ node.text }}&#8221;
14
+ {%- when 'single' -%}
15
+ &#8216;{{ node.text }}&#8217;
16
+ {%- when 'mark' -%}
17
+ <mark>{{ node.text }}</mark>
18
+ {%- when 'asciimath' -%}
19
+ \\${{ node.text }}\\$
20
+ {%- when 'latexmath' -%}
21
+ \\({{ node.text }}\\)
22
+ {%- else -%}
23
+ <span>{{ node.text }}</span>
24
+ {%- endcase -%}
@@ -0,0 +1,4 @@
1
+ <figure class="listing" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {% if node.title %}<figcaption>{{ node.title }}</figcaption>{% endif %}
3
+ {{ node.content }}
4
+ </figure>
@@ -0,0 +1 @@
1
+ <pre class="literal" {% if node.id %}id="{{ node.id }}"{% endif %}>{{ node.content }}</pre>
@@ -0,0 +1,8 @@
1
+ <ol class="olist" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {% for item in node.items %}
3
+ <li>
4
+ <p>{{ item.text }}</p>
5
+ {{ item.content }}
6
+ </li>
7
+ {% endfor %}
8
+ </ol>
@@ -0,0 +1 @@
1
+ <div class="page-break" />
@@ -0,0 +1 @@
1
+ <p {% if node.id %}id="{{ node.id }}"{% endif %}>{{ node.content }}</p>
@@ -0,0 +1 @@
1
+ {{ node.content }}
@@ -0,0 +1,3 @@
1
+ <section class="preamble" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {{ node.content }}
3
+ </section>
@@ -0,0 +1,9 @@
1
+ <blockquote class="quote" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {{ node.content }}
3
+ {% if node.attributes.attribution %}
4
+ <p data-type="attribution">{{ node.attributes.attribution }}</p>
5
+ {% endif %}
6
+ {% if node.attributes.citetitle %}
7
+ <p data-type="citetitle">{{ node.attributes.citetitle }}</p>
8
+ {% endif %}
9
+ </blockquote>
@@ -0,0 +1,4 @@
1
+ <section class="{{ node.sectname }}" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ <h{{ node.level | at_least: 1 }}>{% if node.caption %}{{ node.caption }} {% elsif node.numbered %}{{ node.sectnum }} {% endif %}{{ node.title }}</h{{ node.level | at_least: 1 }}>
3
+ {{ node.content }}
4
+ </section>
@@ -0,0 +1,6 @@
1
+ <aside class="sidebar" {% if node.id %}id="{{ node.id }}" {% endif %}>
2
+ {% if node.title %}
3
+ <h5>{{ node.title }}</h5>
4
+ {% endif %}
5
+ {{ node.content }}
6
+ </aside>
@@ -0,0 +1,9 @@
1
+ <div class="stem" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {% if node.title %}<h5>{{ node.title }}</h5>{% endif %}
3
+ {% case node.style %}
4
+ {% when 'latexmath' %}
5
+ \\[{{ node.content }}\\]
6
+ {% when 'asciimath' %}
7
+ \\${{ node.content }}\\$
8
+ {% endcase %}
9
+ </div>
@@ -0,0 +1,41 @@
1
+ <table class="table" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {% if node.title %}
3
+ <caption>{{ node.captioned_title }}</caption>
4
+ {% endif %}
5
+ {% if node.rows.head.size > 0 %}
6
+ <thead>
7
+ {% for row in node.rows.head %}
8
+ <tr>
9
+ {% for cell in row %}
10
+ <th {% if cell.colspan %}colspan="{{ cell.colspan }}"{% endif %}
11
+ {% if cell.rowspan %}rowspan="{{ cell.rowspan }}"{% endif %}>{{ cell.content }}</th>
12
+ {% endfor %}
13
+ </tr>
14
+ {% endfor %}
15
+ </thead>
16
+ {% endif %}
17
+ {% if node.rows.body.size > 0 %}
18
+ <tbody>
19
+ {% for row in node.rows.body %}
20
+ <tr>
21
+ {% for cell in row %}
22
+ <td {% if cell.colspan %}colspan="{{ cell.colspan }}"{% endif %}
23
+ {% if cell.rowspan %}rowspan="{{ cell.rowspan }}"{% endif %}>{{ cell.content }}</td>
24
+ {% endfor %}
25
+ </tr>
26
+ {% endfor %}
27
+ </tbody>
28
+ {% endif %}
29
+ {% if node.rows.foot.size > 0 %}
30
+ <tfoot>
31
+ {% for row in node.rows.foot %}
32
+ <tr>
33
+ {% for cell in row %}
34
+ <td {% if cell.colspan %}colspan="{{ cell.colspan }}"{% endif %}
35
+ {% if cell.rowspan %}rowspan="{{ cell.rowspan }}"{% endif %}>{{ cell.content }}</td>
36
+ {% endfor %}
37
+ </tr>
38
+ {% endfor %}
39
+ </tfoot>
40
+ {% endif %}
41
+ </table>
@@ -0,0 +1 @@
1
+ <hr />
@@ -0,0 +1,8 @@
1
+ <ul class="ulist" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ {% for item in node.items %}
3
+ <li>
4
+ <p>{{ item.text }}</p>
5
+ {{ item.content }}
6
+ </li>
7
+ {% endfor %}
8
+ </ul>
@@ -0,0 +1,9 @@
1
+ <blockquote class="verse" {% if node.id %}id="{{ node.id }}"{% endif %}>
2
+ <pre>{{ node.content }}</pre>
3
+ {% if node.attributes.attribution %}
4
+ <p data-type="attribution">{{ node.attributes.attribution }}</p>
5
+ {% endif %}
6
+ {% if node.attributes.citetitle %}
7
+ <p data-type="citetitle">{{ node.attributes.citetitle }}</p>
8
+ {% endif %}
9
+ </blockquote>
@@ -0,0 +1,10 @@
1
+ <video {% if node.id %}id="{{ node.id }}"{% endif %}
2
+ src="{{ node.attributes.target }}"
3
+ controls="controls"
4
+ {% if node.attributes.width %}width="{{ node.attributes.width }}"{% endif %}
5
+ {% if node.attributes.height %}height="{{ node.attributes.height }}"{% endif %}
6
+ {% if node.attributes.poster %}poster="{{ node.attributes.poster }}"{% endif %}
7
+ {% if node.attributes.autoplay-option %}autoplay="autoplay"{% endif %}
8
+ {% if node.attributes.loop-option %}loop="loop"{% endif %}>
9
+ <em>Sorry, the &lt;video&gt; element not supported in your reading system.</em>
10
+ </video>
@@ -0,0 +1,6 @@
1
+ /* Epub reader use pop up show footnotes */
2
+ footer {
3
+ border-top: none;
4
+ padding: 0;
5
+ margin: 0;
6
+ }
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>{{ page.title }} - {{ book.title }}</title>
6
+ <link rel="stylesheet" href="normalize.css" />
7
+ <link rel="stylesheet" href="default.css" />
8
+ <link rel="stylesheet" href="highlight.css" />
9
+ <link rel="stylesheet" href="epub.css" />
10
+ </head>
11
+ <body>
12
+ {{ page.content }}
13
+ </body>
14
+ </html>
@@ -0,0 +1,190 @@
1
+ .toolbar {
2
+ position: fixed;
3
+ top: 0;
4
+ left: 0;
5
+ right: 0;
6
+ padding: 0.25em 1.25em;
7
+ display: flex;
8
+ background: white;
9
+ z-index: 100;
10
+ }
11
+
12
+ .toolbar-title {
13
+ padding: 0.75em;
14
+ flex-grow: 1;
15
+ font-weight: bold;
16
+ }
17
+
18
+ .toolbar-title a {
19
+ color: #999;
20
+ text-decoration: none;
21
+ }
22
+
23
+ .toolbar-title a:hover {
24
+ color: #555;
25
+ }
26
+
27
+ .toolbar-action {
28
+ padding: 0.25em;
29
+ }
30
+
31
+ .button {
32
+ display: inline-flex;
33
+ align-items: center;
34
+ cursor: pointer;
35
+ outline: 0;
36
+ text-align: center;
37
+ text-decoration: none;
38
+ box-sizing: border-box;
39
+ white-space: nowrap;
40
+ background: transparent;
41
+ line-height: 1;
42
+ border: none;
43
+ padding: 0;
44
+ }
45
+
46
+ .button-icon {
47
+ padding: 0.5em;
48
+ }
49
+
50
+ .button-icon svg {
51
+ fill: #999;
52
+ }
53
+
54
+ .button-icon:hover svg {
55
+ fill: #555;
56
+ }
57
+
58
+ .dropdown {
59
+ position: relative;
60
+ }
61
+
62
+ .dropdown-menu {
63
+ display: none;
64
+ position: absolute;
65
+ min-width: 320px;
66
+ max-width: 90%;
67
+ max-height: 480px;
68
+ top: 100%;
69
+ right: 0;
70
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.3);
71
+ border-radius: 4px;
72
+ z-index: 10;
73
+ overflow-y: auto;
74
+ background: white;
75
+ }
76
+
77
+ .dropdown.open .dropdown-menu {
78
+ display: block;
79
+ }
80
+
81
+ .dropdown-menu ol {
82
+ list-style: none;
83
+ padding: 0;
84
+ margin: 0;
85
+ }
86
+
87
+ .dropdown-menu-item {
88
+ display: block;
89
+ padding: 12px;
90
+ text-decoration: none;
91
+ color: #555;
92
+ }
93
+
94
+ .dropdown-menu-item:hover {
95
+ background: rgba(0, 0, 0, 0.05);
96
+ color: #333;
97
+ }
98
+
99
+ .dropdown-menu-item.active {
100
+ color: #3f51b5;
101
+ }
102
+
103
+ .dropdown-menu ol ol .dropdown-menu-item {
104
+ padding-left: 24px;
105
+ }
106
+
107
+ .content {
108
+ padding: 2em;
109
+ max-width: 768px;
110
+ margin: 0 auto;
111
+ }
112
+
113
+ .paginator {
114
+ }
115
+
116
+ .paginator a {
117
+ padding: 32px;
118
+ }
119
+
120
+ .paginator a svg {
121
+ fill: #ccc;
122
+ width: 48px;
123
+ height: 48px;
124
+ }
125
+
126
+ .paginator a:hover svg {
127
+ fill: #999;
128
+ }
129
+
130
+ .paginator a.disabled {
131
+ visibility: hidden;
132
+ }
133
+
134
+ .paginator-prev {
135
+ display: flex;
136
+ align-items: center;
137
+ position: fixed;
138
+ top: 48px;
139
+ bottom: 0;
140
+ left: 0;
141
+ }
142
+
143
+ .paginator-next {
144
+ display: flex;
145
+ align-items: center;
146
+ position: fixed;
147
+ top: 48px;
148
+ bottom: 0;
149
+ right: 0;
150
+ }
151
+
152
+ .main {
153
+ margin-top: 56px;
154
+ }
155
+
156
+ @media (max-width: 992px) {
157
+ .paginator {
158
+ display: flex;
159
+ }
160
+
161
+ .paginator a {
162
+ padding: 1em;
163
+ }
164
+
165
+ .paginator-prev {
166
+ position: static;
167
+ flex-grow: 1;
168
+ justify-content: center;
169
+ }
170
+
171
+ .paginator-next {
172
+ position: static;
173
+ flex-grow: 1;
174
+ justify-content: center;
175
+ }
176
+ }
177
+
178
+ @media (max-width: 480px) {
179
+ .toolbar {
180
+ padding: 0.25em;
181
+ }
182
+
183
+ .content {
184
+ padding: 1em;
185
+ }
186
+
187
+ .paginator a {
188
+ padding: 0.25em;
189
+ }
190
+ }