howdy-jekyll-theme 1.0.0 → 1.0.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/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 +0 -89
- 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: 150d69091ff8829a9e24c5bc73f0282aef6c5db38a1c18a1742298590d6f9835
|
|
4
|
+
data.tar.gz: fcbad23e1de46813631361f3420b5209394c173b00d21daaed743cbb52c86e75
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e0c43f100c390da27f739a9a3d8e41354721612fdc3c660960ca252795b65572875c004063bf7577d34dc32fd2b51d7b6638708db5197806db0a106e9c59c615
|
|
7
|
+
data.tar.gz: 42a1944d392f500fbc708216d78b0b24205e36486f506214f480881a1f0b4c83999ec1003bf7b4f9139df85330b6f7465da7f0ed1ddc0115f4d0d625b55bfe0c
|
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
|
@@ -564,40 +564,6 @@ body.loaded .projects-grid {
|
|
|
564
564
|
}
|
|
565
565
|
}
|
|
566
566
|
|
|
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
567
|
// Logo
|
|
602
568
|
.site-logo {
|
|
603
569
|
text-decoration: none;
|
|
@@ -830,24 +796,6 @@ html.nav-open .nav-overlay {
|
|
|
830
796
|
transition: var(--howdy-transition);
|
|
831
797
|
}
|
|
832
798
|
|
|
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
799
|
// Company logos section
|
|
852
800
|
.company-logos {
|
|
853
801
|
width: 100%;
|
|
@@ -906,16 +854,6 @@ html.nav-open .nav-overlay {
|
|
|
906
854
|
}
|
|
907
855
|
}
|
|
908
856
|
|
|
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
857
|
@keyframes scroll {
|
|
920
858
|
0% {
|
|
921
859
|
transform: translateX(0);
|
|
@@ -925,33 +863,6 @@ html.nav-open .nav-overlay {
|
|
|
925
863
|
}
|
|
926
864
|
}
|
|
927
865
|
|
|
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
866
|
// Hero carousel
|
|
956
867
|
.hero-carousel {
|
|
957
868
|
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.1"
|
|
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.1
|
|
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
|