yefeme 0.7.2 → 0.8.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: d6f0468b4935d7c605779e891caeede431a523ba3b23a008319f1ff0bf89c11e
4
- data.tar.gz: a0ac4f61c93c27cfb0875a8df8a6a839784944429487fbe4be6a85972aff0f98
3
+ metadata.gz: 8945b5d2bdeeb91a738a50697ed6d35bc05fec954d404ce6ed01224c08ef47a9
4
+ data.tar.gz: c067c8bd42f0ce934e716559c5a2cb191a67c1ad8f0e75029033cd26d08dc903
5
5
  SHA512:
6
- metadata.gz: 221ceea737627d2a23e95d2f9f6c81e776e0ccf7806fec3610d0cf0bba568eab0bc33e78d20a7e6aee5e89c87800abbe24c786200dbf37b48454c4de164172c0
7
- data.tar.gz: 3a4e0335c1e31103cd7e9ab803bf73a3872044e7401945a2c8ceccb5895322f279b6ceb5b582af5b86ce33290dcf921ae9cb1ab6bad83b97be8252166892f787
6
+ metadata.gz: 3fd8b84c9ceb021c0f56248d0e6b7b1708961a9ef5bc6c3bda3d50a75eee794d7dffd94af956a9b43ef6067d99438fe560cd761d429f9ef43d3e47787f1bb8fe
7
+ data.tar.gz: 5f758ad58ce53c425124924db293cd03c516c957df6b412fdf21b387bfcfb9ed06640a43345f6cf37953d0e7f633cc347c03daef51d58f9682a50bc888cfa700
data/README.md CHANGED
@@ -42,6 +42,35 @@ twitter_username: [Your Twitter handle]
42
42
  github_username: [Your GitHub handle]
43
43
  ```
44
44
 
45
+ ### Photography shoots
46
+
47
+ The home layout can mix posts with a `shoots` collection in reverse chronological order. Configure the collection and Cloudflare Images delivery variants in your site's `_config.yml`:
48
+
49
+ ```yaml
50
+ collections:
51
+ shoots:
52
+ output: true
53
+ permalink: /portfolio/:name
54
+
55
+ cf_images_account_hash: [Your Cloudflare Images account hash]
56
+ cf_images_variants:
57
+ thumb: thumb
58
+ xl: xl
59
+ ```
60
+
61
+ Each document in `_shoots` should use the `shoot` layout and provide a title, date, and list of Cloudflare image IDs:
62
+
63
+ ```yaml
64
+ ---
65
+ layout: shoot
66
+ title: Marseille
67
+ date: 2025-11-25
68
+ images:
69
+ - image-id-one
70
+ - image-id-two
71
+ ---
72
+ ```
73
+
45
74
  ## Contributing
46
75
 
47
76
  Bug reports and pull requests are welcome. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
@@ -0,0 +1,17 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <header>
6
+ <div class="logo">
7
+ {% include logo.svg width=46 height=61 %}
8
+ <div class="under under-small">
9
+ <h2 itemprop="name headline"><em>{{ page.title | escape }}</em></h2>
10
+ <p class="date"><time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">{{ page.date | date: "%b %-d, %Y" }}</time></p>
11
+ <a class="back accent" href="{{ "/" | relative_url }}">~ back home</a>
12
+ </div>
13
+ </div>
14
+ <hr />
15
+ </header>
16
+
17
+ {{ content }}
data/_layouts/home.html CHANGED
@@ -29,13 +29,56 @@ layout: default
29
29
  </div>
30
30
  </div>
31
31
  </header>
32
+
33
+ {% assign entries = site.posts %}
34
+ {% if site.shoots %}
35
+ {% assign entries = entries | concat: site.shoots %}
36
+ {% endif %}
37
+ {% assign entries = entries | sort: "date" | reverse %}
38
+
32
39
  <main>
33
- {% for post in site.posts %}
34
- <a class="post" href="{{ post.url | relative_url }}">
35
- <span class="accent fixed-date">{{ post.date | date: "%b %-d, %Y" }}</span>
36
- <div class="post-details">
37
- <h2>{{ post.title | escape }}</h2>
38
- <p class="excerpt">{{ post.excerpt | strip_html | normalize_whitespace | truncate: 160 | escape }}</p>
40
+ {% for entry in entries %}
41
+ <a class="post{% if entry.collection == "shoots" %} shoot-block{% endif %}" href="{{ entry.url | relative_url }}">
42
+ <span class="accent fixed-date">{{ entry.date | date: "%b %-d, %Y" }}</span>
43
+ <div class="post-details{% if entry.collection == "shoots" %} shoot-details{% endif %}">
44
+ <h2>{{ entry.title | escape }}</h2>
45
+ {% if entry.collection == "shoots" %}
46
+ {% assign total = entry.images | size %}
47
+ {% if total > 3 %}
48
+ {% assign preview_count = 4 %}
49
+ {% else %}
50
+ {% assign preview_count = total %}
51
+ {% endif %}
52
+
53
+ <div class="shoot-thumbs shoot-thumbs-{{ preview_count }}">
54
+ {% for id in entry.images limit:3 %}
55
+ {% assign base = "https://imagedelivery.net/" | append: site.cf_images_account_hash | append: "/" | append: id | append: "/" %}
56
+ <img
57
+ class="shoot-thumb"
58
+ src="{{ base }}{{ site.cf_images_variants.thumb }}"
59
+ loading="lazy"
60
+ decoding="async"
61
+ alt="Photo from {{ entry.title | escape }}"
62
+ >
63
+ {% endfor %}
64
+
65
+ {% if total > 3 %}
66
+ {% assign fourth_id = entry.images[3] %}
67
+ {% assign fourth_base = "https://imagedelivery.net/" | append: site.cf_images_account_hash | append: "/" | append: fourth_id | append: "/" %}
68
+ <div class="shoot-thumb shoot-more-thumb">
69
+ <img
70
+ src="{{ fourth_base }}{{ site.cf_images_variants.thumb }}"
71
+ alt=""
72
+ loading="lazy"
73
+ decoding="async"
74
+ >
75
+ <span class="shoot-more-overlay">+{{ total | minus: 3 }}</span>
76
+ </div>
77
+ {% endif %}
78
+ </div>
79
+ {% else %}
80
+ <p class="excerpt">{{ entry.excerpt | strip_html | normalize_whitespace | truncate: 160 | escape }}</p>
81
+ {% endif %}
39
82
  </div>
40
83
  </a>
41
84
  {% endfor %}
data/_layouts/post.html CHANGED
@@ -1,19 +1,7 @@
1
1
  ---
2
- layout: default
2
+ layout: entry
3
3
  ---
4
4
 
5
- <header>
6
- <div class="logo">
7
- {% include logo.svg width=46 height=61 %}
8
- </svg>
9
- <div class="under under-small">
10
- <h2 itemprop="name headline"><em>{{ page.title | escape }}</em></h2>
11
- <p class="date"><time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">{{ page.date | date: "%b %-d, %Y" }}</time></p>
12
- <a class="back accent" href="{{ "/" | relative }}">~ back to blog</a>
13
- </div>
14
- </div>
15
- <hr />
16
- </header>
17
5
  <main>
18
6
  <article itemprop="articleBody">
19
7
  {{ content }}
@@ -0,0 +1,22 @@
1
+ ---
2
+ layout: entry
3
+ ---
4
+
5
+ <main class="portfolio-day">
6
+ {% assign thumb = site.cf_images_variants.thumb %}
7
+ {% assign xl = site.cf_images_variants.xl %}
8
+
9
+ <div class="grid">
10
+ {% for id in page.images %}
11
+ {% assign base = "https://imagedelivery.net/" | append: site.cf_images_account_hash | append: "/" | append: id | append: "/" %}
12
+ <a class="tile" href="{{ base }}{{ xl }}" target="_blank" rel="noopener">
13
+ <img
14
+ src="{{ base }}{{ thumb }}"
15
+ loading="lazy"
16
+ decoding="async"
17
+ alt="Photo from {{ page.title | escape }}"
18
+ >
19
+ </a>
20
+ {% endfor %}
21
+ </div>
22
+ </main>
data/_sass/yefeme.scss CHANGED
@@ -135,6 +135,102 @@ main {
135
135
  }
136
136
  }
137
137
 
138
+ :root {
139
+ --shoot-thumb-height: 132px;
140
+ }
141
+
142
+ .shoot-thumbs {
143
+ align-items: center;
144
+ display: grid;
145
+ gap: 6px;
146
+ margin-top: 4px;
147
+ width: 100%;
148
+
149
+ &.shoot-thumbs-1 {
150
+ grid-template-columns: minmax(0, 1fr);
151
+ }
152
+
153
+ &.shoot-thumbs-2 {
154
+ grid-template-columns: repeat(2, minmax(0, 1fr));
155
+ }
156
+
157
+ &.shoot-thumbs-3 {
158
+ grid-template-columns: repeat(3, minmax(0, 1fr));
159
+ }
160
+
161
+ &.shoot-thumbs-4 {
162
+ grid-template-columns: repeat(4, minmax(0, 1fr));
163
+ }
164
+
165
+ > img.shoot-thumb {
166
+ background: #eee;
167
+ border-radius: 4px;
168
+ height: var(--shoot-thumb-height);
169
+ object-fit: cover;
170
+ width: 100%;
171
+ }
172
+
173
+ @media only screen and (max-width: 700px) {
174
+ display: flex;
175
+ flex-wrap: nowrap;
176
+ margin: 0 -16px;
177
+ overflow-x: auto;
178
+ padding: 0 16px;
179
+ scrollbar-width: none;
180
+ width: 100vw;
181
+ -webkit-overflow-scrolling: touch;
182
+
183
+ > img.shoot-thumb {
184
+ flex: 0 0 auto;
185
+ object-fit: initial;
186
+ width: auto;
187
+ }
188
+
189
+ &::-webkit-scrollbar {
190
+ display: none;
191
+ }
192
+ }
193
+ }
194
+
195
+ .shoot-more-thumb {
196
+ border-radius: 4px;
197
+ height: var(--shoot-thumb-height);
198
+ min-width: 0;
199
+ overflow: hidden;
200
+ position: relative;
201
+ width: 100%;
202
+
203
+ img {
204
+ filter: blur(2px) brightness(0.5);
205
+ height: 100%;
206
+ object-fit: cover;
207
+ width: 100%;
208
+ }
209
+
210
+ @media only screen and (max-width: 700px) {
211
+ flex: 0 0 var(--shoot-thumb-height);
212
+ min-width: var(--shoot-thumb-height);
213
+ width: var(--shoot-thumb-height);
214
+ }
215
+ }
216
+
217
+ .shoot-more-overlay {
218
+ align-items: center;
219
+ color: white;
220
+ display: flex;
221
+ font-size: 1rem;
222
+ font-weight: 600;
223
+ inset: 0;
224
+ justify-content: center;
225
+ position: absolute;
226
+ }
227
+
228
+ @media only screen and (max-width: 700px) {
229
+ :root {
230
+ --shoot-thumb-height: 180px;
231
+ }
232
+ }
233
+
138
234
  .excerpt {
139
235
  font-size: 14px;
140
236
  line-height: 1.73;
@@ -253,6 +349,36 @@ article {
253
349
  }
254
350
  }
255
351
 
352
+ .portfolio-day {
353
+ .grid {
354
+ column-count: 3;
355
+ column-gap: 12px;
356
+
357
+ @media only screen and (max-width: 900px) {
358
+ column-count: 2;
359
+ }
360
+
361
+ @media only screen and (max-width: 600px) {
362
+ column-count: 1;
363
+ }
364
+ }
365
+
366
+ .tile {
367
+ background: #f6f6f6;
368
+ border-radius: 8px;
369
+ break-inside: avoid;
370
+ display: block;
371
+ margin-bottom: 12px;
372
+ overflow: hidden;
373
+ }
374
+
375
+ img {
376
+ display: block;
377
+ height: auto;
378
+ width: 100%;
379
+ }
380
+ }
381
+
256
382
  .social {
257
383
  display: flex;
258
384
  gap: 16px;
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yefeme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yefim Vedernikoff
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-11-13 00:00:00.000000000 Z
11
+ date: 2026-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.1'
27
- description:
27
+ description:
28
28
  email:
29
29
  - yefim323@gmail.com
30
30
  executables: []
@@ -39,8 +39,10 @@ files:
39
39
  - _includes/logo.svg
40
40
  - _includes/twitter.svg
41
41
  - _layouts/default.html
42
+ - _layouts/entry.html
42
43
  - _layouts/home.html
43
44
  - _layouts/post.html
45
+ - _layouts/shoot.html
44
46
  - _sass/highlight.scss
45
47
  - _sass/yefeme.scss
46
48
  - assets/main.scss
@@ -49,7 +51,7 @@ homepage: https://github.com/yefim/yefeme
49
51
  licenses:
50
52
  - MIT
51
53
  metadata: {}
52
- post_install_message:
54
+ post_install_message:
53
55
  rdoc_options: []
54
56
  require_paths:
55
57
  - lib
@@ -64,8 +66,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
66
  - !ruby/object:Gem::Version
65
67
  version: '0'
66
68
  requirements: []
67
- rubygems_version: 3.0.3.1
68
- signing_key:
69
+ rubygems_version: 3.4.19
70
+ signing_key:
69
71
  specification_version: 4
70
72
  summary: Yefim's custom jekyll theme
71
73
  test_files: []