howdy-jekyll-theme 1.0.0 → 1.0.2
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/AGENTS.md +14 -1
- data/README.md +2 -1
- data/_includes/head.html +0 -1
- data/_includes/hero-carousel.html +2 -0
- data/_layouts/default.html +0 -2
- data/_sass/_base.scss +0 -8
- data/_sass/_components.scss +0 -10
- data/_sass/_layout.scss +1 -95
- data/_sass/_typography.scss +1 -32
- data/assets/js/hero-carousel.js +0 -5
- data/assets/js/mobile-nav.js +0 -5
- data/howdy-jekyll-theme.gemspec +2 -2
- metadata +11 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5fa6da0bec711a5951bd7ef3bb51909676fc336943db32fcd24ce4432890f7a9
|
|
4
|
+
data.tar.gz: 5ab762db73a45da22594709f5cd2d4aec482727ddd6a46f38324ca324f22e1db
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c89d70bb104087bfe6a31c07f0b3162529941e6e75e8aba829f60b9744809780e8cddf2a037f6f40e181f099e1d7e31a76b6f52f3dcfaa77ad28aa6feccae9cb
|
|
7
|
+
data.tar.gz: 96237235b3b296ade916747c5ef9c2787a16e34d53ee27286d670c99e779e15fda844eec5d5bc4bef3865bf02a1ea8f51d4955731a71e502e2b0fa0a303e5b03
|
data/AGENTS.md
CHANGED
|
@@ -11,7 +11,9 @@ A gem-based Jekyll theme (`howdy-jekyll-theme`, v1.0.0) for personal sites and p
|
|
|
11
11
|
| Setup | `bundle config --local path .bundle && bundle install` |
|
|
12
12
|
| Dev server | `bundle exec jekyll serve` → http://localhost:4000 |
|
|
13
13
|
| Build gem | `gem build howdy-jekyll-theme.gemspec` |
|
|
14
|
-
|
|
|
14
|
+
| Push gem | `gem push howdy-jekyll-theme-1.0.0.gem` (requires API key) |
|
|
15
|
+
| Playwright tests | `npm test` |
|
|
16
|
+
| Install npm deps | `npm install` |
|
|
15
17
|
|
|
16
18
|
## Architecture
|
|
17
19
|
|
|
@@ -42,8 +44,19 @@ blog/ — Blog index page (pagination entry)
|
|
|
42
44
|
lib/ — Gem entry point (Jekyll hook)
|
|
43
45
|
```
|
|
44
46
|
|
|
47
|
+
## CI/CD
|
|
48
|
+
|
|
49
|
+
- **Workflow**: `.github/workflows/ci.yml` — validate → test → lighthouse + playwright (parallel) → deploy
|
|
50
|
+
- **Playwright** runs inside `mcr.microsoft.com/playwright:v1.60.0` Docker container — browsers pre-installed, no CDN download needed
|
|
51
|
+
- **Ruby native gems** in the Playwright container need `apt-get install -y build-essential ruby-dev libyaml-0-2` before `ruby/setup-ruby`
|
|
52
|
+
- **Deploy** builds with `JEKYLL_ENV=production bundle exec jekyll build --baseurl "/howdy-jekyll-theme"` (repo name is the base path)
|
|
53
|
+
- **GitHub Pages** is enabled with "Deploy from workflow" (not the default Jekyll builder)
|
|
54
|
+
- **GitHub secret** `GEM_HOST_API_KEY` is set for CI gem publishing
|
|
55
|
+
|
|
45
56
|
## Gotchas
|
|
46
57
|
|
|
47
58
|
- The `_config.yml` excludes `Gemfile`, `Gemfile.lock`, `*.gemspec`, `README.md`, `LICENSE` from the Jekyll build — do not put content there expecting it to render.
|
|
48
59
|
- Font files (Inter, Chaumont Script, Fragment Mono) in `assets/fonts/` are licensed; verify licensing before redistributing.
|
|
49
60
|
- The `.bundle/` directory contains vendored gems — do not edit files inside it.
|
|
61
|
+
- When deploying to a GitHub Pages project site, build with `--baseurl "/repository-name"` so asset paths resolve correctly.
|
|
62
|
+
- The Playwright Docker container is based on Ubuntu 22.04 — Ruby native gems that need C compilation require `build-essential` and `ruby-dev`.
|
data/README.md
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
> A clean, modern, and minimalist Jekyll theme for personal websites and portfolios.
|
|
4
4
|
|
|
5
|
-
[](https://rubygems.org/gems/howdy-jekyll-theme)
|
|
6
|
+
[](https://rubygems.org/gems/howdy-jekyll-theme)
|
|
6
7
|
[](https://github.com/howdyitskyle/howdy-jekyll-theme/actions/workflows/ci.yml)
|
|
7
8
|
[](https://jekyllrb.com/)
|
|
8
9
|
[](https://www.ruby-lang.org/)
|
data/_includes/head.html
CHANGED
data/_layouts/default.html
CHANGED
|
@@ -11,8 +11,6 @@
|
|
|
11
11
|
|
|
12
12
|
<script src="{{ '/assets/js/theme-toggle.js' | relative_url }}"></script>
|
|
13
13
|
<script src="{{ '/assets/js/mobile-nav.js' | relative_url }}"></script>
|
|
14
|
-
<script src="{{ '/assets/js/swiper-bundle.min.js' | relative_url }}"></script>
|
|
15
|
-
<script src="{{ '/assets/js/hero-carousel.js' | relative_url }}"></script>
|
|
16
14
|
|
|
17
15
|
<!-- Analytics -->
|
|
18
16
|
{% include analytics.html %}
|
data/_sass/_base.scss
CHANGED
|
@@ -156,14 +156,6 @@ select:focus-visible {
|
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
// Container fills the main wrapper
|
|
160
|
-
.container {
|
|
161
|
-
width: 100%;
|
|
162
|
-
height: 100%;
|
|
163
|
-
padding: 0;
|
|
164
|
-
margin: 0;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
159
|
// Accessibility: Reduced motion support
|
|
168
160
|
@media (prefers-reduced-motion: reduce) {
|
|
169
161
|
*,
|
data/_sass/_components.scss
CHANGED
|
@@ -19,16 +19,6 @@
|
|
|
19
19
|
border: 2px solid transparent;
|
|
20
20
|
min-height: 44px;
|
|
21
21
|
|
|
22
|
-
&.btn-primary {
|
|
23
|
-
background-color: var(--howdy-text-primary);
|
|
24
|
-
color: var(--howdy-bg-white);
|
|
25
|
-
|
|
26
|
-
&:hover {
|
|
27
|
-
background-color: var(--howdy-accent-green);
|
|
28
|
-
color: var(--howdy-bg-white);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
22
|
&.btn-secondary {
|
|
33
23
|
background-color: transparent;
|
|
34
24
|
color: var(--howdy-text-primary);
|
data/_sass/_layout.scss
CHANGED
|
@@ -437,7 +437,7 @@ body.loaded .projects-grid {
|
|
|
437
437
|
flex: none;
|
|
438
438
|
place-content: flex-start;
|
|
439
439
|
align-items: stretch;
|
|
440
|
-
gap:
|
|
440
|
+
row-gap: 32px;
|
|
441
441
|
width: 100%;
|
|
442
442
|
max-width: 720px;
|
|
443
443
|
height: min-content;
|
|
@@ -448,28 +448,23 @@ body.loaded .projects-grid {
|
|
|
448
448
|
|
|
449
449
|
@media (max-width: $howdy-xl) {
|
|
450
450
|
max-width: none;
|
|
451
|
-
gap: var(--howdy-content-gap-xl);
|
|
452
451
|
padding: 56px var(--howdy-content-area-padding-xl) var(--howdy-content-area-padding-xl-bottom);
|
|
453
452
|
}
|
|
454
453
|
|
|
455
454
|
@media (max-width: $howdy-lg) {
|
|
456
|
-
gap: var(--howdy-content-gap-lg);
|
|
457
455
|
padding: 0 var(--howdy-content-area-padding-lg) var(--howdy-content-area-padding-lg-bottom);
|
|
458
456
|
}
|
|
459
457
|
|
|
460
458
|
@media (max-width: $howdy-md) {
|
|
461
459
|
padding: 0 var(--howdy-content-area-padding-md) var(--howdy-content-area-padding-md-bottom);
|
|
462
|
-
gap: var(--howdy-content-gap-md);
|
|
463
460
|
}
|
|
464
461
|
|
|
465
462
|
@media (max-width: $howdy-sm) {
|
|
466
463
|
padding: 0 var(--howdy-content-area-padding-sm) var(--howdy-content-area-padding-sm-bottom);
|
|
467
|
-
gap: var(--howdy-content-gap-sm);
|
|
468
464
|
}
|
|
469
465
|
|
|
470
466
|
@media (max-width: $howdy-xs) {
|
|
471
467
|
padding: 0 var(--howdy-content-area-padding-xs) var(--howdy-content-area-padding-xs-bottom);
|
|
472
|
-
gap: var(--howdy-content-gap-xs);
|
|
473
468
|
}
|
|
474
469
|
}
|
|
475
470
|
|
|
@@ -564,40 +559,6 @@ body.loaded .projects-grid {
|
|
|
564
559
|
}
|
|
565
560
|
}
|
|
566
561
|
|
|
567
|
-
// Header (navigation area)
|
|
568
|
-
.site-header {
|
|
569
|
-
display: flex;
|
|
570
|
-
flex-flow: row;
|
|
571
|
-
flex: none;
|
|
572
|
-
place-content: center space-between;
|
|
573
|
-
align-items: center;
|
|
574
|
-
width: 100%;
|
|
575
|
-
height: min-content;
|
|
576
|
-
padding: 0 0 0 var(--howdy-spacing-sm);
|
|
577
|
-
position: relative;
|
|
578
|
-
transition: var(--howdy-transition);
|
|
579
|
-
|
|
580
|
-
@media (max-width: $howdy-xl) {
|
|
581
|
-
justify-content: space-between;
|
|
582
|
-
gap: 0;
|
|
583
|
-
padding: 0;
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
@media (max-width: $howdy-lg) {
|
|
587
|
-
flex-wrap: wrap;
|
|
588
|
-
justify-content: flex-start;
|
|
589
|
-
gap: var(--howdy-header-gap-lg);
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
@media (max-width: $howdy-md) {
|
|
593
|
-
gap: var(--howdy-header-gap-md);
|
|
594
|
-
}
|
|
595
|
-
|
|
596
|
-
@media (max-width: $howdy-sm) {
|
|
597
|
-
gap: var(--howdy-header-gap-sm);
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
|
|
601
562
|
// Logo
|
|
602
563
|
.site-logo {
|
|
603
564
|
text-decoration: none;
|
|
@@ -830,24 +791,6 @@ html.nav-open .nav-overlay {
|
|
|
830
791
|
transition: var(--howdy-transition);
|
|
831
792
|
}
|
|
832
793
|
|
|
833
|
-
// Badge (Now booking)
|
|
834
|
-
.badge {
|
|
835
|
-
display: inline-block;
|
|
836
|
-
padding: 8px 16px;
|
|
837
|
-
background-color: var(--howdy-bg-green-tint);
|
|
838
|
-
color: var(--howdy-accent-green);
|
|
839
|
-
border-radius: var(--howdy-radius-full);
|
|
840
|
-
font-weight: 500;
|
|
841
|
-
font-size: 14px;
|
|
842
|
-
letter-spacing: 0.01em;
|
|
843
|
-
transition: var(--howdy-transition);
|
|
844
|
-
|
|
845
|
-
@media (max-width: $howdy-sm) {
|
|
846
|
-
font-size: 12px;
|
|
847
|
-
padding: 6px 12px;
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
|
|
851
794
|
// Company logos section
|
|
852
795
|
.company-logos {
|
|
853
796
|
width: 100%;
|
|
@@ -906,16 +849,6 @@ html.nav-open .nav-overlay {
|
|
|
906
849
|
}
|
|
907
850
|
}
|
|
908
851
|
|
|
909
|
-
.logo-item {
|
|
910
|
-
flex-shrink: 0;
|
|
911
|
-
font-family: var(--howdy-font-primary);
|
|
912
|
-
font-size: 14px;
|
|
913
|
-
font-weight: 500;
|
|
914
|
-
color: var(--howdy-text-muted);
|
|
915
|
-
letter-spacing: 0.06em;
|
|
916
|
-
text-transform: uppercase;
|
|
917
|
-
}
|
|
918
|
-
|
|
919
852
|
@keyframes scroll {
|
|
920
853
|
0% {
|
|
921
854
|
transform: translateX(0);
|
|
@@ -925,33 +858,6 @@ html.nav-open .nav-overlay {
|
|
|
925
858
|
}
|
|
926
859
|
}
|
|
927
860
|
|
|
928
|
-
// Stats section
|
|
929
|
-
.stats {
|
|
930
|
-
text-align: center;
|
|
931
|
-
padding: var(--howdy-spacing-lg) 0;
|
|
932
|
-
|
|
933
|
-
.stat-number {
|
|
934
|
-
font-family: var(--howdy-font-primary);
|
|
935
|
-
font-weight: 900;
|
|
936
|
-
font-size: 48px;
|
|
937
|
-
color: var(--howdy-text-primary);
|
|
938
|
-
transition: var(--howdy-transition);
|
|
939
|
-
|
|
940
|
-
@media (max-width: $howdy-md) {
|
|
941
|
-
font-size: 36px;
|
|
942
|
-
}
|
|
943
|
-
|
|
944
|
-
@media (max-width: $howdy-sm) {
|
|
945
|
-
font-size: 28px;
|
|
946
|
-
}
|
|
947
|
-
}
|
|
948
|
-
|
|
949
|
-
.stat-label {
|
|
950
|
-
@extend .body-large !optional;
|
|
951
|
-
color: var(--howdy-text-secondary);
|
|
952
|
-
}
|
|
953
|
-
}
|
|
954
|
-
|
|
955
861
|
// Hero carousel
|
|
956
862
|
.hero-carousel {
|
|
957
863
|
position: relative;
|
data/_sass/_typography.scss
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
@use "variables" as *;
|
|
4
4
|
|
|
5
5
|
// Heading 1 — fluid responsive sizing
|
|
6
|
-
h1
|
|
6
|
+
h1 {
|
|
7
7
|
font-family: var(--howdy-font-primary);
|
|
8
8
|
font-weight: 600;
|
|
9
9
|
line-height: 1.2;
|
|
@@ -196,42 +196,11 @@ p, .body-regular {
|
|
|
196
196
|
letter-spacing: 0.01em; // Required for small text (11-13px range)
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
-
// Button/Label text
|
|
200
|
-
.label-text {
|
|
201
|
-
font-family: var(--howdy-font-primary);
|
|
202
|
-
font-weight: 600;
|
|
203
|
-
font-size: 15px;
|
|
204
|
-
line-height: 1.2em;
|
|
205
|
-
letter-spacing: 0.02em; // Required for UI labels/buttons
|
|
206
|
-
transition: var(--howdy-transition);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// Centered text
|
|
210
|
-
.text-center {
|
|
211
|
-
text-align: center;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
199
|
// Muted text (gray)
|
|
215
200
|
.text-muted {
|
|
216
201
|
color: var(--howdy-text-muted);
|
|
217
202
|
}
|
|
218
203
|
|
|
219
|
-
// Script font for logo
|
|
220
|
-
.script-text {
|
|
221
|
-
font-family: 'Chaumont Script', 'Style Script', cursive;
|
|
222
|
-
font-weight: 400;
|
|
223
|
-
font-size: 32px;
|
|
224
|
-
letter-spacing: 0.02em;
|
|
225
|
-
|
|
226
|
-
@media (max-width: $howdy-md) {
|
|
227
|
-
font-size: 28px;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
@media (max-width: $howdy-sm) {
|
|
231
|
-
font-size: 24px;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
204
|
// Code
|
|
236
205
|
code {
|
|
237
206
|
font-family: var(--howdy-font-mono);
|
data/assets/js/hero-carousel.js
CHANGED
data/assets/js/mobile-nav.js
CHANGED
data/howdy-jekyll-theme.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Gem::Specification.new do |spec|
|
|
2
2
|
spec.name = "howdy-jekyll-theme"
|
|
3
|
-
spec.version = "1.0.
|
|
3
|
+
spec.version = "1.0.2"
|
|
4
4
|
spec.authors = ["Kyle Greenan"]
|
|
5
5
|
spec.email = ["kyle@howdyitskyle.com"]
|
|
6
6
|
|
|
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
|
14
14
|
spec.require_paths = ["lib"]
|
|
15
15
|
|
|
16
16
|
spec.add_runtime_dependency "jekyll", ">= 3.9"
|
|
17
|
-
spec.add_runtime_dependency "jekyll-seo-tag", "
|
|
17
|
+
spec.add_runtime_dependency "jekyll-seo-tag", ">= 2.8", "< 2.10"
|
|
18
18
|
spec.add_runtime_dependency "jekyll-feed", "~> 0.17"
|
|
19
19
|
spec.add_runtime_dependency "jekyll-sitemap", "~> 1.4"
|
|
20
20
|
spec.add_runtime_dependency "jekyll-paginate-v2", "~> 3.0"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: howdy-jekyll-theme
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kyle Greenan
|
|
@@ -27,16 +27,22 @@ dependencies:
|
|
|
27
27
|
name: jekyll-seo-tag
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
|
-
- - "
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '2.8'
|
|
33
|
+
- - "<"
|
|
31
34
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 2.
|
|
35
|
+
version: '2.10'
|
|
33
36
|
type: :runtime
|
|
34
37
|
prerelease: false
|
|
35
38
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
39
|
requirements:
|
|
37
|
-
- - "
|
|
40
|
+
- - ">="
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: '2.8'
|
|
43
|
+
- - "<"
|
|
38
44
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 2.
|
|
45
|
+
version: '2.10'
|
|
40
46
|
- !ruby/object:Gem::Dependency
|
|
41
47
|
name: jekyll-feed
|
|
42
48
|
requirement: !ruby/object:Gem::Requirement
|