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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 06d5a9f873d9d52f5f61f6e838935dfe278f667b3f23d25fc9b033c284236c8f
4
- data.tar.gz: b3923d1ddf214e49f9ec7637ef2bb4db51083f591a32a969a126e017c7996951
3
+ metadata.gz: 2a6520f7755ae7ebedbf05144b70692adfd1fe1bc4db914b1fd9ac829d4d19ff
4
+ data.tar.gz: 20441a254282632d698a6692a3d1f00011013bb766ce4c72d55e7dc97c528fc3
5
5
  SHA512:
6
- metadata.gz: b546c5e59ee052162220762eb4f09514dafb4553304a89f828f9068e73895ce0a7a40767cb91f1527335abe840211a3688ca079de1188c2bbb52fac38a76c75d
7
- data.tar.gz: 2e827395d1caf48abb0bc7aafa2ccfb99ddf01c6fb664909910278ff3edbaa131b75c0057334631348a1714035bac922254713676888e4eae92a1c6923ed95c9
6
+ metadata.gz: e27ae05915cfe309439a2ba621a5824551799e15493e50d35c49a6cea61fde77818340f48ac9f2371a463bc4db8f4ad0ff1450b634fb00377f89d7764c160785
7
+ data.tar.gz: ff7318624053570366f1424b92ad004a4d8105223c17c383f913823eb8208b20d0686933eff143eaa6da78398525dbdbf0b6b94886be97540cdf37bb0f7758f3
@@ -8,7 +8,7 @@ genre: "Crazy Weird"
8
8
  series: "The Test"
9
9
  pages: "200"
10
10
  status: "Completed"
11
- traits: [\"Brave\", \"Smart\", \"Fast\"]
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."
@@ -4,7 +4,7 @@ author: "Apple Bottom"
4
4
  genre: "Crazy Weird"
5
5
  series: "Standalone"
6
6
  status: "Completed"
7
- traits: [\"Brave\", \"Funny\", \"Smart\"]
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."
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: "The Great Gatsby"
3
+ slug: "the-great-gatsby"
3
4
  subtitle: "A Novel"
4
5
  author: "F. Scott Fitzgerald"
5
6
  translator: "N/A"
data/_config.yml CHANGED
@@ -7,6 +7,10 @@ collections:
7
7
  books:
8
8
  output: true
9
9
  permalink: /books/:title/
10
+ chapters:
11
+ output: true
12
+ permalink: /chapters/:path/
13
+ sort_by: chapter
10
14
 
11
15
  defaults:
12
16
  - scope:
@@ -105,20 +105,43 @@
105
105
  <span class="scroll-label">scroll to read more</span>
106
106
  </div>
107
107
 
108
- <!-- Related 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
- {% for book in site.books %}
114
- {% if book.title != page.title %}
115
- <li><a href="{{ book.url | relative_url }}">{{ book.title }}</a></li>
116
- {% endif %}
117
- {% endfor %}
118
- </ul>
119
- <span class="line-dashed-right"></span>
120
- </div>
121
- </section>
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 Index
3
+ title: "My Library"
4
4
  ---
5
5
 
6
- <div class="profile-container">
7
- <h1 style="text-align:center; letter-spacing: 2px;">MY LIBRARY</h1>
8
-
9
- <div class="book-list">
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
- <div class="book-item">
12
- <h3><a href="{{ book.url | relative_url }}">{{ book.title }}</a></h3>
13
- <p>{{ book.author }} — {{ book.genre }}</p>
14
- </div>
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.0.0
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: '0'
127
+ version: 2.6.0
123
128
  required_rubygems_version: !ruby/object:Gem::Requirement
124
129
  requirements:
125
130
  - - ">="