yefeme 0.7.2 → 0.8.0

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: 4c10667a79facce4f6c0401d78f2a6fed47ab957ade81c0da3a5865f66585d6e
4
+ data.tar.gz: 641245bffcdfdcd4ecf72c654ba8fe489dbb684db33fc18b81a1d0864ee4f2bf
5
5
  SHA512:
6
- metadata.gz: 221ceea737627d2a23e95d2f9f6c81e776e0ccf7806fec3610d0cf0bba568eab0bc33e78d20a7e6aee5e89c87800abbe24c786200dbf37b48454c4de164172c0
7
- data.tar.gz: 3a4e0335c1e31103cd7e9ab803bf73a3872044e7401945a2c8ceccb5895322f279b6ceb5b582af5b86ce33290dcf921ae9cb1ab6bad83b97be8252166892f787
6
+ metadata.gz: 86fcff51ffad9b8eae7d5b6e3266acc9280f298361ff5c35c2d9907504e8ade0c097095ab971222cba354f61463d894154b5df636fceda66e5ebca3e56381654
7
+ data.tar.gz: 8c153aa81fd90395bb749534c6322865c6865a7c8c76c910d8f67265447c0de415160d6387b84e7705713a217ff948be50d67588459b70c480fc515f380350d3
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.
data/_layouts/home.html CHANGED
@@ -29,14 +29,63 @@ 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>
39
- </div>
40
- </a>
40
+ {% for entry in entries %}
41
+ {% if entry.collection == "shoots" %}
42
+ <a class="post shoot-block" href="{{ entry.url | relative_url }}">
43
+ <span class="accent fixed-date">{{ entry.date | date: "%b %-d, %Y" }}</span>
44
+ <div class="post-details shoot-details">
45
+ <h2>{{ entry.title | escape }}</h2>
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
+ </div>
80
+ </a>
81
+ {% else %}
82
+ <a class="post" href="{{ entry.url | relative_url }}">
83
+ <span class="accent fixed-date">{{ entry.date | date: "%b %-d, %Y" }}</span>
84
+ <div class="post-details">
85
+ <h2>{{ entry.title | escape }}</h2>
86
+ <p class="excerpt">{{ entry.excerpt | strip_html | normalize_whitespace | truncate: 160 | escape }}</p>
87
+ </div>
88
+ </a>
89
+ {% endif %}
41
90
  {% endfor %}
42
91
  </main>
@@ -0,0 +1,34 @@
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
+ <main class="portfolio-day">
18
+ {% assign thumb = site.cf_images_variants.thumb %}
19
+ {% assign xl = site.cf_images_variants.xl %}
20
+
21
+ <div class="grid">
22
+ {% for id in page.images %}
23
+ {% assign base = "https://imagedelivery.net/" | append: site.cf_images_account_hash | append: "/" | append: id | append: "/" %}
24
+ <a class="tile" href="{{ base }}{{ xl }}" target="_blank" rel="noopener">
25
+ <img
26
+ src="{{ base }}{{ thumb }}"
27
+ loading="lazy"
28
+ decoding="async"
29
+ alt="Photo from {{ page.title | escape }}"
30
+ >
31
+ </a>
32
+ {% endfor %}
33
+ </div>
34
+ </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.0
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-27 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: []
@@ -41,6 +41,7 @@ files:
41
41
  - _layouts/default.html
42
42
  - _layouts/home.html
43
43
  - _layouts/post.html
44
+ - _layouts/shoot.html
44
45
  - _sass/highlight.scss
45
46
  - _sass/yefeme.scss
46
47
  - assets/main.scss
@@ -49,7 +50,7 @@ homepage: https://github.com/yefim/yefeme
49
50
  licenses:
50
51
  - MIT
51
52
  metadata: {}
52
- post_install_message:
53
+ post_install_message:
53
54
  rdoc_options: []
54
55
  require_paths:
55
56
  - lib
@@ -64,8 +65,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
65
  - !ruby/object:Gem::Version
65
66
  version: '0'
66
67
  requirements: []
67
- rubygems_version: 3.0.3.1
68
- signing_key:
68
+ rubygems_version: 3.4.19
69
+ signing_key:
69
70
  specification_version: 4
70
71
  summary: Yefim's custom jekyll theme
71
72
  test_files: []