book-theme 1.0.0 → 1.2.1
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.
- checksums.yaml +4 -4
- data/_books/Test-Book-1.md +1 -1
- data/_books/Test-Book-2.md +1 -1
- data/_books/the-great-gatsby.md +1 -0
- data/_config.yml +4 -0
- data/_layouts/book-profile.html +37 -14
- data/_layouts/chapter.html +34 -0
- data/_sass/_layout.scss +202 -0
- data/index.html +31 -9
- metadata +9 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2a6520f7755ae7ebedbf05144b70692adfd1fe1bc4db914b1fd9ac829d4d19ff
|
|
4
|
+
data.tar.gz: 20441a254282632d698a6692a3d1f00011013bb766ce4c72d55e7dc97c528fc3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e27ae05915cfe309439a2ba621a5824551799e15493e50d35c49a6cea61fde77818340f48ac9f2371a463bc4db8f4ad0ff1450b634fb00377f89d7764c160785
|
|
7
|
+
data.tar.gz: ff7318624053570366f1424b92ad004a4d8105223c17c383f913823eb8208b20d0686933eff143eaa6da78398525dbdbf0b6b94886be97540cdf37bb0f7758f3
|
data/_books/Test-Book-1.md
CHANGED
|
@@ -8,7 +8,7 @@ genre: "Crazy Weird"
|
|
|
8
8
|
series: "The Test"
|
|
9
9
|
pages: "200"
|
|
10
10
|
status: "Completed"
|
|
11
|
-
traits: [
|
|
11
|
+
traits: ["Brave", "Smart", "Fast"]
|
|
12
12
|
cover_image: "/assets/covers/placeholder.jpg"
|
|
13
13
|
quote: "Testing is for smart people"
|
|
14
14
|
description: "Sometimes the world needs a test."
|
data/_books/Test-Book-2.md
CHANGED
|
@@ -4,7 +4,7 @@ author: "Apple Bottom"
|
|
|
4
4
|
genre: "Crazy Weird"
|
|
5
5
|
series: "Standalone"
|
|
6
6
|
status: "Completed"
|
|
7
|
-
traits: [
|
|
7
|
+
traits: ["Brave", "Funny", "Smart"]
|
|
8
8
|
cover_image: "/assets/covers/placeholder.jpg"
|
|
9
9
|
quote: "There are worlds out there that don't take tests"
|
|
10
10
|
description: "Smart and funny."
|
data/_books/the-great-gatsby.md
CHANGED
data/_config.yml
CHANGED
data/_layouts/book-profile.html
CHANGED
|
@@ -105,20 +105,43 @@
|
|
|
105
105
|
<span class="scroll-label">scroll to read more</span>
|
|
106
106
|
</div>
|
|
107
107
|
|
|
108
|
-
<!-- Related Books -->
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
108
|
+
<!-- Related Section: Chapters OR Other Books -->
|
|
109
|
+
<section class="related-section">
|
|
110
|
+
<div class="related-scroll-wrapper">
|
|
111
|
+
<span class="line-dashed-left"></span>
|
|
112
|
+
<ul class="bullet-list">
|
|
113
|
+
{% assign book_slug = page.slug | default: page.title | downcase | replace: " ", "-" | replace: '"', "" %}
|
|
114
|
+
|
|
115
|
+
{% assign book_chapters = site.chapters
|
|
116
|
+
| where_exp: "chap", "chap.path contains book_slug"
|
|
117
|
+
| sort: "chapter"
|
|
118
|
+
%}
|
|
119
|
+
|
|
120
|
+
{% if book_chapters.size > 0 %}
|
|
121
|
+
<!-- Show chapters for THIS book -->
|
|
122
|
+
<li class="book-link">
|
|
123
|
+
<a href="{{ '/' | relative_url }}">Back to Library</a>
|
|
124
|
+
</li>
|
|
125
|
+
{% for chap in book_chapters %}
|
|
126
|
+
<li>
|
|
127
|
+
<a href="{{ chap.url | relative_url }}">
|
|
128
|
+
<span class="chapter-badge">Ch. {{ chap.chapter }}</span>
|
|
129
|
+
{{ chap.title | default: chap.display_title }}
|
|
130
|
+
</a>
|
|
131
|
+
</li>
|
|
132
|
+
{% endfor %}
|
|
133
|
+
{% else %}
|
|
134
|
+
<!-- Fallback: Show other books -->
|
|
135
|
+
{% for book in site.books %}
|
|
136
|
+
{% if book.title != page.title %}
|
|
137
|
+
<li><a href="{{ book.url | relative_url }}">{{ book.title }}</a></li>
|
|
138
|
+
{% endif %}
|
|
139
|
+
{% endfor %}
|
|
140
|
+
{% endif %}
|
|
141
|
+
</ul>
|
|
142
|
+
<span class="line-dashed-right"></span>
|
|
143
|
+
</div>
|
|
144
|
+
</section>
|
|
122
145
|
|
|
123
146
|
|
|
124
147
|
<footer class="book-footer">
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: book-profile
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<!-- Override the main content area for chapters -->
|
|
6
|
+
<div class="chapter-intro">
|
|
7
|
+
<div class="chapter-badge-large">Chapter {{ page.chapter }}</div>
|
|
8
|
+
<h2 class="chapter-title">{{ page.title }}</h2>
|
|
9
|
+
<p class="chapter-book">from <em>{{ page.book }}</em></p>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<div class="chapter-content-wrapper">
|
|
13
|
+
{{ content }}
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<!-- Chapter navigation -->
|
|
17
|
+
<nav class="chapter-nav">
|
|
18
|
+
{% assign book_chapters = site.chapters
|
|
19
|
+
| where: "book", page.book
|
|
20
|
+
| sort: "chapter"
|
|
21
|
+
%}
|
|
22
|
+
|
|
23
|
+
{% if book_chapters.size > 1 %}
|
|
24
|
+
<div class="chapter-nav-inner">
|
|
25
|
+
{% for chap in book_chapters %}
|
|
26
|
+
{% if chap.url == page.url %}
|
|
27
|
+
<span class="current">● {{ chap.chapter }}</span>
|
|
28
|
+
{% else %}
|
|
29
|
+
<a href="{{ chap.url | relative_url }}" class="chapter-link">{{ chap.chapter }}</a>
|
|
30
|
+
{% endif %}
|
|
31
|
+
{% endfor %}
|
|
32
|
+
</div>
|
|
33
|
+
{% endif %}
|
|
34
|
+
</nav>
|
data/_sass/_layout.scss
CHANGED
|
@@ -70,6 +70,116 @@ body {
|
|
|
70
70
|
.corner-br { bottom: 8px; right: 8px; transform: rotate(180deg); }
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
+
/* Library Index Page Styles */
|
|
74
|
+
.library-header {
|
|
75
|
+
text-align: center;
|
|
76
|
+
margin-bottom: 30px;
|
|
77
|
+
padding-bottom: 20px;
|
|
78
|
+
border-bottom: 2px solid $color-border;
|
|
79
|
+
|
|
80
|
+
.library-title {
|
|
81
|
+
font-size: 2.5rem;
|
|
82
|
+
font-weight: normal;
|
|
83
|
+
letter-spacing: 4px;
|
|
84
|
+
color: $color-accent-dark;
|
|
85
|
+
margin: 0 0 10px 0;
|
|
86
|
+
font-family: 'Cormorant Garamond', serif;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.library-subtitle {
|
|
90
|
+
font-size: 0.9rem;
|
|
91
|
+
color: #777;
|
|
92
|
+
font-style: italic;
|
|
93
|
+
margin: 0;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.book-grid {
|
|
98
|
+
display: grid;
|
|
99
|
+
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
|
100
|
+
gap: 20px;
|
|
101
|
+
padding: 10px 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.book-card {
|
|
105
|
+
display: block;
|
|
106
|
+
background: #fff;
|
|
107
|
+
border: 1px solid $color-border;
|
|
108
|
+
border-radius: 2px;
|
|
109
|
+
overflow: hidden;
|
|
110
|
+
text-decoration: none;
|
|
111
|
+
color: $color-text;
|
|
112
|
+
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
113
|
+
|
|
114
|
+
&:hover {
|
|
115
|
+
transform: translateY(-3px);
|
|
116
|
+
box-shadow: 0 5px 15px rgba(0,0,0,0.1);
|
|
117
|
+
border-color: $color-accent;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.book-card-image {
|
|
121
|
+
aspect-ratio: 2/3;
|
|
122
|
+
background: #f9f9f9;
|
|
123
|
+
display: flex;
|
|
124
|
+
align-items: center;
|
|
125
|
+
justify-content: center;
|
|
126
|
+
overflow: hidden;
|
|
127
|
+
|
|
128
|
+
img {
|
|
129
|
+
width: 100%;
|
|
130
|
+
height: 100%;
|
|
131
|
+
object-fit: cover;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.no-cover {
|
|
135
|
+
color: #999;
|
|
136
|
+
font-style: italic;
|
|
137
|
+
font-size: 0.8rem;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.book-card-info {
|
|
142
|
+
padding: 15px;
|
|
143
|
+
text-align: center;
|
|
144
|
+
|
|
145
|
+
.book-card-title {
|
|
146
|
+
font-size: 1rem;
|
|
147
|
+
margin: 0 0 5px 0;
|
|
148
|
+
font-weight: normal;
|
|
149
|
+
font-family: 'Cormorant Garamond', serif;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.book-card-author {
|
|
153
|
+
font-size: 0.8rem;
|
|
154
|
+
color: #666;
|
|
155
|
+
margin: 0 0 8px 0;
|
|
156
|
+
font-style: italic;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.book-card-traits {
|
|
160
|
+
font-size: 0.65rem;
|
|
161
|
+
color: #777;
|
|
162
|
+
margin: 0;
|
|
163
|
+
font-family: 'Space Mono', monospace;
|
|
164
|
+
letter-spacing: 1px;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* Responsive grid */
|
|
170
|
+
@media (max-width: 768px) {
|
|
171
|
+
.book-grid {
|
|
172
|
+
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
|
|
173
|
+
gap: 15px;
|
|
174
|
+
}
|
|
175
|
+
.book-card-info {
|
|
176
|
+
padding: 12px;
|
|
177
|
+
}
|
|
178
|
+
.book-card-title {
|
|
179
|
+
font-size: 0.9rem !important;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
73
183
|
/* ========================================
|
|
74
184
|
MAIN LAYOUT - WIDER
|
|
75
185
|
======================================== */
|
|
@@ -489,6 +599,98 @@ body {
|
|
|
489
599
|
text-transform: uppercase;
|
|
490
600
|
}
|
|
491
601
|
|
|
602
|
+
/* Chapter Page Styles */
|
|
603
|
+
.chapter-intro {
|
|
604
|
+
text-align: center;
|
|
605
|
+
margin-bottom: 25px;
|
|
606
|
+
padding-bottom: 20px;
|
|
607
|
+
border-bottom: 2px solid $color-border;
|
|
608
|
+
|
|
609
|
+
.chapter-badge-large {
|
|
610
|
+
display: inline-block;
|
|
611
|
+
background: $color-accent;
|
|
612
|
+
color: #fff;
|
|
613
|
+
font-family: 'Space Mono', monospace;
|
|
614
|
+
font-size: 0.75rem;
|
|
615
|
+
padding: 5px 15px;
|
|
616
|
+
border-radius: 3px;
|
|
617
|
+
letter-spacing: 2px;
|
|
618
|
+
margin-bottom: 10px;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
.chapter-title {
|
|
622
|
+
font-size: 1.8rem;
|
|
623
|
+
font-weight: normal;
|
|
624
|
+
color: $color-accent-dark;
|
|
625
|
+
margin: 0 0 8px 0;
|
|
626
|
+
font-family: 'Cormorant Garamond', serif;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.chapter-book {
|
|
630
|
+
font-size: 0.9rem;
|
|
631
|
+
color: #666;
|
|
632
|
+
margin: 0;
|
|
633
|
+
font-style: italic;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
.chapter-content-wrapper {
|
|
638
|
+
font-size: 1rem;
|
|
639
|
+
line-height: 1.8;
|
|
640
|
+
text-align: justify;
|
|
641
|
+
|
|
642
|
+
p {
|
|
643
|
+
margin: 15px 0;
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
.chapter-nav {
|
|
648
|
+
margin-top: 30px;
|
|
649
|
+
padding-top: 20px;
|
|
650
|
+
border-top: 1px solid $color-border;
|
|
651
|
+
|
|
652
|
+
.chapter-nav-inner {
|
|
653
|
+
display: flex;
|
|
654
|
+
justify-content: center;
|
|
655
|
+
gap: 10px;
|
|
656
|
+
flex-wrap: wrap;
|
|
657
|
+
|
|
658
|
+
.chapter-link {
|
|
659
|
+
display: inline-flex;
|
|
660
|
+
align-items: center;
|
|
661
|
+
justify-content: center;
|
|
662
|
+
width: 35px;
|
|
663
|
+
height: 35px;
|
|
664
|
+
border: 1px solid $color-border;
|
|
665
|
+
border-radius: 50%;
|
|
666
|
+
color: $color-text;
|
|
667
|
+
text-decoration: none;
|
|
668
|
+
font-family: 'Space Mono', monospace;
|
|
669
|
+
font-size: 0.8rem;
|
|
670
|
+
transition: all 0.2s ease;
|
|
671
|
+
|
|
672
|
+
&:hover {
|
|
673
|
+
background: $color-accent;
|
|
674
|
+
color: #fff;
|
|
675
|
+
border-color: $color-accent;
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
.current {
|
|
680
|
+
display: inline-flex;
|
|
681
|
+
align-items: center;
|
|
682
|
+
justify-content: center;
|
|
683
|
+
width: 35px;
|
|
684
|
+
height: 35px;
|
|
685
|
+
background: $color-accent-dark;
|
|
686
|
+
color: #fff;
|
|
687
|
+
border-radius: 50%;
|
|
688
|
+
font-family: 'Space Mono', monospace;
|
|
689
|
+
font-size: 0.8rem;
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
|
|
492
694
|
|
|
493
695
|
/* Footer - FIX LINE NOT CROSSING INTO LINKS */
|
|
494
696
|
.book-footer {
|
data/index.html
CHANGED
|
@@ -1,17 +1,39 @@
|
|
|
1
1
|
---
|
|
2
2
|
layout: default
|
|
3
|
-
title: Library
|
|
3
|
+
title: "My Library"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<div class="
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
<div class="card-frame">
|
|
7
|
+
<div class="card-corners">
|
|
8
|
+
<span class="corner corner-tl">❧</span>
|
|
9
|
+
<span class="corner corner-tr">❧</span>
|
|
10
|
+
<span class="corner corner-bl">❧</span>
|
|
11
|
+
<span class="corner corner-br">❧</span>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div class="library-header">
|
|
15
|
+
<h1 class="library-title">{{ site.title | default: "My Library" }}</h1>
|
|
16
|
+
<p class="library-subtitle">A curated collection of books, reviews, and reflections</p>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div class="book-grid">
|
|
10
20
|
{% for book in site.books %}
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
<a href="{{ book.url | relative_url }}" class="book-card">
|
|
22
|
+
<div class="book-card-image">
|
|
23
|
+
{% if book.cover_image %}
|
|
24
|
+
<img src="{{ book.cover_image }}" alt="{{ book.title }}">
|
|
25
|
+
{% else %}
|
|
26
|
+
<div class="no-cover">No Cover</div>
|
|
27
|
+
{% endif %}
|
|
28
|
+
</div>
|
|
29
|
+
<div class="book-card-info">
|
|
30
|
+
<h3 class="book-card-title">{{ book.title }}</h3>
|
|
31
|
+
<p class="book-card-author">by {{ book.author }}</p>
|
|
32
|
+
{% if book.traits %}
|
|
33
|
+
<p class="book-card-traits">[ {{ book.traits | join: " / " | upcase }} ]</p>
|
|
34
|
+
{% endif %}
|
|
35
|
+
</div>
|
|
36
|
+
</a>
|
|
15
37
|
{% endfor %}
|
|
16
38
|
</div>
|
|
17
39
|
</div>
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: book-theme
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- dar
|
|
@@ -75,7 +75,8 @@ email:
|
|
|
75
75
|
- darbookspub@gmail.com
|
|
76
76
|
executables: []
|
|
77
77
|
extensions: []
|
|
78
|
-
extra_rdoc_files:
|
|
78
|
+
extra_rdoc_files:
|
|
79
|
+
- README.md
|
|
79
80
|
files:
|
|
80
81
|
- 404.html
|
|
81
82
|
- Gemfile
|
|
@@ -93,6 +94,7 @@ files:
|
|
|
93
94
|
- _includes/head.html
|
|
94
95
|
- _includes/header-warning.html
|
|
95
96
|
- _layouts/book-profile.html
|
|
97
|
+
- _layouts/chapter.html
|
|
96
98
|
- _layouts/default.html
|
|
97
99
|
- _layouts/home.html
|
|
98
100
|
- _layouts/page.html
|
|
@@ -112,14 +114,17 @@ metadata:
|
|
|
112
114
|
source_code_uri: https://github.com/breakthebull/book-theme
|
|
113
115
|
changelog_uri: https://github.com/breakthebull/book-theme/releases
|
|
114
116
|
rubygems_mfa_required: 'true'
|
|
115
|
-
rdoc_options:
|
|
117
|
+
rdoc_options:
|
|
118
|
+
- "--charset=UTF-8"
|
|
119
|
+
- "--main"
|
|
120
|
+
- README.md
|
|
116
121
|
require_paths:
|
|
117
122
|
- lib
|
|
118
123
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
124
|
requirements:
|
|
120
125
|
- - ">="
|
|
121
126
|
- !ruby/object:Gem::Version
|
|
122
|
-
version:
|
|
127
|
+
version: 2.6.0
|
|
123
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
129
|
requirements:
|
|
125
130
|
- - ">="
|