jekyll-theme-colophon 0.1.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 +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +94 -0
- data/_includes/elsewhere.html +6 -0
- data/_includes/head.html +15 -0
- data/_includes/share.html +9 -0
- data/_includes/signup.html +8 -0
- data/_includes/style.html +120 -0
- data/_includes/theme-toggle.html +1 -0
- data/_layouts/home.html +27 -0
- data/_layouts/post.html +29 -0
- data/lib/jekyll-theme-colophon/version.rb +5 -0
- data/lib/jekyll-theme-colophon.rb +3 -0
- metadata +134 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 13ef984574411c7212259e492c3ed020ff91c2ce6fe49c7afc1f6ca911ff0b35
|
|
4
|
+
data.tar.gz: df83fc0270285776961181620a2d2b34c4ddb34b477dda2c6223d35a259fe8ad
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 74bebf43da8cbf6a5a204ab85f81c81d7ee73e00793a2b13465aaffefa4135be5e009aca135ef76ffcb8ff2c54106d8014b798bff7c4912584a6ebe9a9eb5958
|
|
7
|
+
data.tar.gz: 8b056b6a478f5455e891f6292275adf80fe8d75d9b54c171e019b2fb1e8434e411f10cded6a6d25358874d95436fe59b3f2918faf70eec565aa7ee72ce1b5998
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Ender Kuş
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Colophon
|
|
2
|
+
|
|
3
|
+
A minimal Jekyll theme for personal blogs: system-font serif typography, light/dark mode, an RSS feed, and a built-in ConvertKit signup form. No CSS framework, no JS framework, no web fonts — just a single small stylesheet.
|
|
4
|
+
|
|
5
|
+
Two layouts:
|
|
6
|
+
- **Home** — a single centered column with an avatar, a short bio, a flat list of posts, and a signup form.
|
|
7
|
+
- **Post** — a two-column layout (sticky sidebar + article) that collapses to a single column on narrower screens.
|
|
8
|
+
|
|
9
|
+
A working example lives in [`/demo`](./demo).
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- Serif body text / sans-serif UI using each OS's system fonts — no font downloads, fast first paint
|
|
14
|
+
- Light/dark mode toggle, respects `prefers-color-scheme`, persisted via `localStorage`
|
|
15
|
+
- RSS feed (`jekyll-feed`) and sitemap (`jekyll-sitemap`) generated automatically
|
|
16
|
+
- ConvertKit email signup form, no extra JavaScript embed required
|
|
17
|
+
- Per-post share links (Hacker News, Reddit, Twitter, LinkedIn), generated at build time
|
|
18
|
+
- Responsive: the post layout's sidebar collapses under the article on mobile; the signup form and share links stack into full-width, single-column controls below 560px
|
|
19
|
+
- Zero JS dependencies beyond the theme toggle's few lines of vanilla JS
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
This theme isn't published on RubyGems — install it straight from GitHub. In your own Jekyll site's `Gemfile`:
|
|
24
|
+
|
|
25
|
+
```ruby
|
|
26
|
+
gem "jekyll-theme-colophon", git: "https://github.com/enderkus/jekyll-theme-colophon"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Then in `_config.yml`:
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
theme: jekyll-theme-colophon
|
|
33
|
+
|
|
34
|
+
plugins:
|
|
35
|
+
- jekyll-feed
|
|
36
|
+
- jekyll-sitemap
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Run `bundle install`, then `bundle exec jekyll serve`.
|
|
40
|
+
|
|
41
|
+
> If you'd rather not depend on a gem at all, you can also just fork this repo and use `/demo` directly as your site — copy its contents to your repo root along with `_layouts/` and `_includes/` from the theme root. That avoids the Bundler git-dependency indirection at the cost of not getting theme updates automatically.
|
|
42
|
+
|
|
43
|
+
## Configuration
|
|
44
|
+
|
|
45
|
+
All of these go in your site's `_config.yml` (see [`demo/_config.yml`](./demo/_config.yml) for a complete example):
|
|
46
|
+
|
|
47
|
+
| Key | Description |
|
|
48
|
+
|---|---|
|
|
49
|
+
| `title` | Your name / site title |
|
|
50
|
+
| `tagline` | Short one-line description shown under your name |
|
|
51
|
+
| `description` | Used for `<meta name="description">` and Open Graph tags |
|
|
52
|
+
| `author`, `email` | Used in the RSS feed |
|
|
53
|
+
| `url`, `baseurl` | Your GitHub Pages or custom domain URL |
|
|
54
|
+
| `social.twitter`, `social.linkedin`, `social.github` | Username only, e.g. `twitter: "username"`. Leave blank (`""`) to hide a link |
|
|
55
|
+
| `social.website`, `social.website_label` | A free-form extra link with a custom label |
|
|
56
|
+
| `convertkit.form_id` | Your ConvertKit form ID — see below |
|
|
57
|
+
|
|
58
|
+
### Content
|
|
59
|
+
|
|
60
|
+
- `index.md` — your home page bio (Markdown, rendered into the `.bio` block)
|
|
61
|
+
- `_posts/*.md` — standard Jekyll posts, `YYYY-MM-DD-title.md`, only `title` front matter is required (the `post` layout is applied automatically via `defaults` in `_config.yml`)
|
|
62
|
+
- `assets/images/avatar.svg` (or `.jpg`/`.png`) — your profile photo; update the `<img>` src in `_layouts/home.html` and `_layouts/post.html` if you change the filename or format
|
|
63
|
+
- `favicon.svg` — your site icon
|
|
64
|
+
|
|
65
|
+
### ConvertKit signup form
|
|
66
|
+
|
|
67
|
+
1. In ConvertKit (Kit), go to **Grow → Landing Pages & Forms** and create a form.
|
|
68
|
+
2. Open the form's **Embed** settings and copy its **Form ID** (it appears in the embed code as `forms/12345678/subscriptions`).
|
|
69
|
+
3. Set `convertkit.form_id` in `_config.yml` to that ID.
|
|
70
|
+
|
|
71
|
+
The theme submits directly to ConvertKit's hosted form endpoint (`_includes/signup.html`), so no client-side JavaScript embed is needed. ConvertKit handles spam filtering server-side.
|
|
72
|
+
|
|
73
|
+
## Deploying to GitHub Pages
|
|
74
|
+
|
|
75
|
+
GitHub Pages' built-in Jekyll build only supports a fixed whitelist of themes/plugins and **cannot** build a site that depends on a custom theme gem. Use a GitHub Actions workflow instead — see [`.github/workflows/pages.yml`](./.github/workflows/pages.yml) for the one that builds and deploys [`/demo`](./demo) in this repo. Copy that workflow into your own site's repo (adjusting the `working-directory` if your site isn't in a `demo/` subfolder), then enable **Settings → Pages → Source: GitHub Actions**.
|
|
76
|
+
|
|
77
|
+
## Developing this theme
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
bundle install # theme gem's own dependencies
|
|
81
|
+
cd demo
|
|
82
|
+
bundle install # pulls in the theme via the local `path: "../"` dependency
|
|
83
|
+
bundle exec jekyll serve
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Edits to `_layouts/`, `_includes/`, or any file at the theme root are picked up by the demo site immediately since it references the theme via a local path, not a fetched gem.
|
|
87
|
+
|
|
88
|
+
## Credits
|
|
89
|
+
|
|
90
|
+
Design and layout structure are inspired by [pauldix.com](https://pauldix.com/).
|
|
91
|
+
|
|
92
|
+
## License
|
|
93
|
+
|
|
94
|
+
[MIT](./LICENSE.txt)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<ul class="elsewhere">
|
|
2
|
+
{% if site.social.twitter != "" %}<li><a href="https://twitter.com/{{ site.social.twitter }}" rel="me">Twitter</a></li>{% endif %}
|
|
3
|
+
{% if site.social.linkedin != "" %}<li><a href="https://www.linkedin.com/in/{{ site.social.linkedin }}" rel="me">LinkedIn</a></li>{% endif %}
|
|
4
|
+
{% if site.social.github != "" %}<li><a href="https://github.com/{{ site.social.github }}" rel="me">GitHub</a></li>{% endif %}
|
|
5
|
+
{% if site.social.website != "" %}<li><a href="{{ site.social.website }}" rel="me">{{ site.social.website_label | default: site.social.website }}</a></li>{% endif %}
|
|
6
|
+
</ul>
|
data/_includes/head.html
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<meta charset="utf-8">
|
|
2
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
3
|
+
<title>{% if page.title %}{{ page.title }} · {{ site.title }}{% else %}{{ site.title }}{% endif %}</title>
|
|
4
|
+
<meta name="description" content="{{ page.description | default: site.description }}">
|
|
5
|
+
<meta property="og:description" content="{{ page.description | default: site.description }}">
|
|
6
|
+
<meta property="og:title" content="{{ page.title | default: site.title }}">
|
|
7
|
+
<meta property="og:type" content="{% if page.layout == 'post' %}article{% else %}website{% endif %}">
|
|
8
|
+
<meta property="og:url" content="{{ page.url | absolute_url }}">
|
|
9
|
+
<meta property="og:image" content="{{ '/assets/images/avatar.svg' | absolute_url }}">
|
|
10
|
+
<meta name="twitter:card" content="summary">
|
|
11
|
+
<link rel="canonical" href="{{ page.url | absolute_url }}">
|
|
12
|
+
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ '/feed.xml' | absolute_url }}">
|
|
13
|
+
<link rel="icon" href="{{ '/favicon.svg' | relative_url }}" type="image/svg+xml">
|
|
14
|
+
{% include style.html %}
|
|
15
|
+
<script>try{var t=localStorage.getItem('theme');if(t)document.documentElement.dataset.theme=t}catch(e){}</script>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<footer class="share">
|
|
2
|
+
Share or discuss
|
|
3
|
+
<ul>
|
|
4
|
+
<li><a href="https://news.ycombinator.com/submitlink?u={{ page.url | absolute_url | url_encode }}&t={{ page.title | url_encode }}">Submit to Hacker News</a></li>
|
|
5
|
+
<li><a href="https://www.reddit.com/submit?url={{ page.url | absolute_url | url_encode }}&title={{ page.title | url_encode }}">Reddit</a></li>
|
|
6
|
+
<li><a href="https://twitter.com/intent/tweet?url={{ page.url | absolute_url | url_encode }}&text={{ page.title | url_encode }}">Twitter</a></li>
|
|
7
|
+
<li><a href="https://www.linkedin.com/sharing/share-offsite/?url={{ page.url | absolute_url | url_encode }}">LinkedIn</a></li>
|
|
8
|
+
</ul>
|
|
9
|
+
</footer>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<div class="signup">
|
|
2
|
+
<p>Get an email when I publish something new. No other mail, ever.</p>
|
|
3
|
+
<form action="https://app.kit.com/forms/{{ site.convertkit.form_id }}/subscriptions" class="seva-form formkit-form" method="post" data-sv-form="{{ site.convertkit.form_id }}">
|
|
4
|
+
<input type="email" name="email_address" placeholder="you@example.com" aria-label="Email address" required autocomplete="email" spellcheck="false">
|
|
5
|
+
<button type="submit">Notify me</button>
|
|
6
|
+
</form>
|
|
7
|
+
<p class="rss">Or follow along by <a href="{{ '/feed.xml' | relative_url }}">RSS</a>.</p>
|
|
8
|
+
</div>
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
<style>
|
|
2
|
+
*,*::before,*::after{box-sizing:border-box}
|
|
3
|
+
:root{
|
|
4
|
+
--bg:#fff;--fg:#17171a;--muted:#5f5f6b;--rule:#e7e7ec;--link:#1a47c2;
|
|
5
|
+
--visited:#6b3fa0;--code-bg:#f4f4f7;--sel:#dbe6ff;
|
|
6
|
+
--serif:Charter,"Bitstream Charter","Iowan Old Style",Georgia,"Times New Roman",serif;
|
|
7
|
+
--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
|
|
8
|
+
--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
|
|
9
|
+
color-scheme:light}
|
|
10
|
+
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){
|
|
11
|
+
--bg:#131316;--fg:#e6e6ea;--muted:#9a9aa6;--rule:#2a2a31;--link:#8ab4ff;
|
|
12
|
+
--visited:#c3a6ff;--code-bg:#1c1c21;--sel:#2c3d63;color-scheme:dark}}
|
|
13
|
+
:root[data-theme=dark]{
|
|
14
|
+
--bg:#131316;--fg:#e6e6ea;--muted:#9a9aa6;--rule:#2a2a31;--link:#8ab4ff;
|
|
15
|
+
--visited:#c3a6ff;--code-bg:#1c1c21;--sel:#2c3d63;color-scheme:dark}
|
|
16
|
+
html{-webkit-text-size-adjust:100%}
|
|
17
|
+
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--serif);
|
|
18
|
+
font-size:19px;line-height:1.62;text-rendering:optimizeLegibility;
|
|
19
|
+
-webkit-font-smoothing:antialiased}
|
|
20
|
+
::selection{background:var(--sel)}
|
|
21
|
+
a{color:var(--link);text-decoration:underline;text-underline-offset:2px;
|
|
22
|
+
text-decoration-thickness:1px}
|
|
23
|
+
a:visited{color:var(--visited)}
|
|
24
|
+
img{max-width:100%;height:auto}
|
|
25
|
+
hr{border:0;border-top:1px solid var(--rule);margin:2.5rem 0}
|
|
26
|
+
code,pre,kbd{font-family:var(--mono);font-size:.85em}
|
|
27
|
+
code{background:var(--code-bg);padding:.1em .28em;border-radius:3px}
|
|
28
|
+
p,li,h1,h2,h3,h4{overflow-wrap:break-word}
|
|
29
|
+
pre{background:var(--code-bg);padding:1rem;border-radius:5px;overflow-x:auto;
|
|
30
|
+
line-height:1.45}
|
|
31
|
+
pre code{background:none;padding:0}
|
|
32
|
+
blockquote{margin:1.6rem 0;padding-left:1.1rem;border-left:3px solid var(--rule);
|
|
33
|
+
color:var(--muted)}
|
|
34
|
+
table{border-collapse:collapse;width:100%;font-size:.92em}
|
|
35
|
+
th,td{border-bottom:1px solid var(--rule);padding:.45rem .6rem;text-align:left}
|
|
36
|
+
h1,h2,h3,h4{font-family:var(--sans);line-height:1.25;margin:2.2rem 0 .8rem;
|
|
37
|
+
font-weight:640;letter-spacing:-.011em}
|
|
38
|
+
h1{font-size:1.85rem;margin-top:0}
|
|
39
|
+
h2{font-size:1.3rem}
|
|
40
|
+
h3{font-size:1.1rem}
|
|
41
|
+
figure{margin:1.8rem 0}
|
|
42
|
+
figcaption{font-family:var(--sans);font-size:.82rem;color:var(--muted);margin-top:.5rem}
|
|
43
|
+
|
|
44
|
+
.theme{position:absolute;top:1rem;right:1rem;background:none;border:0;padding:.4rem;
|
|
45
|
+
cursor:pointer;color:var(--muted);font-size:1rem;line-height:1;font-family:var(--sans);
|
|
46
|
+
border-radius:4px}
|
|
47
|
+
.theme:hover{color:var(--fg);background:var(--code-bg)}
|
|
48
|
+
|
|
49
|
+
.home{max-width:36rem;margin:0 auto;padding:4rem 1.4rem 5rem}
|
|
50
|
+
.mug{width:104px;height:104px;border-radius:50%;display:block;margin-bottom:1.3rem}
|
|
51
|
+
.home h1{font-size:1.7rem;margin:0 0 .2rem}
|
|
52
|
+
.tagline{font-family:var(--sans);color:var(--muted);font-size:.95rem;margin:0 0 1.4rem}
|
|
53
|
+
.bio p{margin:0 0 1rem}
|
|
54
|
+
.elsewhere{font-family:var(--sans);font-size:.92rem;margin:1.4rem 0 0;padding:0;
|
|
55
|
+
list-style:none;display:flex;flex-wrap:wrap;gap:0 1.1rem}
|
|
56
|
+
.elsewhere a{color:var(--link)}
|
|
57
|
+
|
|
58
|
+
.articles{list-style:none;padding:0;margin:0}
|
|
59
|
+
.articles li{margin:0;padding:.55rem 0;border-bottom:1px solid var(--rule);
|
|
60
|
+
display:flex;gap:1rem;align-items:baseline}
|
|
61
|
+
.articles li:last-child{border-bottom:0}
|
|
62
|
+
.articles time{font-family:var(--mono);font-size:.78rem;color:var(--muted);
|
|
63
|
+
flex:0 0 5.4rem;font-variant-numeric:tabular-nums}
|
|
64
|
+
.articles a{text-decoration:none}
|
|
65
|
+
.articles a:hover{text-decoration:underline}
|
|
66
|
+
.section-label{font-family:var(--sans);font-size:.74rem;letter-spacing:.09em;
|
|
67
|
+
text-transform:uppercase;color:var(--muted);margin:3rem 0 .4rem}
|
|
68
|
+
|
|
69
|
+
.signup{margin-top:3rem;padding-top:1.6rem;border-top:1px solid var(--rule)}
|
|
70
|
+
.signup p{font-family:var(--sans);font-size:.92rem;color:var(--muted);margin:0 0 .8rem}
|
|
71
|
+
.signup form{display:flex;gap:.5rem;flex-wrap:wrap}
|
|
72
|
+
.signup input[type=email]{flex:1 1 15rem;font:inherit;font-family:var(--sans);
|
|
73
|
+
font-size:.95rem;padding:.55rem .7rem;border:1px solid var(--rule);border-radius:5px;
|
|
74
|
+
background:var(--bg);color:var(--fg)}
|
|
75
|
+
.signup input[type=email]:focus{outline:2px solid var(--link);outline-offset:-1px;
|
|
76
|
+
border-color:transparent}
|
|
77
|
+
.signup button{font-family:var(--sans);font-size:.95rem;padding:.55rem 1.1rem;
|
|
78
|
+
border:1px solid var(--fg);border-radius:5px;background:var(--fg);color:var(--bg);
|
|
79
|
+
cursor:pointer}
|
|
80
|
+
.signup button:hover{opacity:.85}
|
|
81
|
+
.signup .rss{font-size:.85rem;margin:.9rem 0 0}
|
|
82
|
+
.hp{position:absolute;left:-9999px}
|
|
83
|
+
|
|
84
|
+
.layout{display:grid;grid-template-columns:11rem minmax(0,34rem);gap:0 3.2rem;
|
|
85
|
+
justify-content:center;padding:4rem 1.4rem 5rem;align-items:start}
|
|
86
|
+
.side{position:sticky;top:4rem;font-family:var(--sans);font-size:.85rem;
|
|
87
|
+
color:var(--muted);line-height:1.5}
|
|
88
|
+
.side .mug{width:76px;height:76px;margin-bottom:.8rem}
|
|
89
|
+
.side .who{display:block;color:var(--fg);font-weight:620;text-decoration:none;
|
|
90
|
+
font-size:.92rem;margin-bottom:.35rem}
|
|
91
|
+
.side p{margin:0}
|
|
92
|
+
.side .back{display:block;margin-top:.9rem;font-size:.85rem}
|
|
93
|
+
.side .elsewhere{flex-direction:column;gap:.25rem;font-size:.85rem;margin-top:1rem}
|
|
94
|
+
article h1{font-size:2rem;margin:0 0 .35rem;letter-spacing:-.02em}
|
|
95
|
+
.pubdate{font-family:var(--sans);font-size:.82rem;color:var(--muted);
|
|
96
|
+
margin:0 0 2.2rem;display:block}
|
|
97
|
+
.share{margin-top:4rem;padding-top:1.3rem;border-top:1px solid var(--rule);
|
|
98
|
+
font-family:var(--sans);font-size:.88rem;color:var(--muted)}
|
|
99
|
+
.share ul{list-style:none;padding:0;margin:.5rem 0 0;display:flex;flex-wrap:wrap;
|
|
100
|
+
gap:0 1.1rem}
|
|
101
|
+
.home-link{font-family:var(--sans);font-size:.88rem;margin-top:2.5rem;display:block}
|
|
102
|
+
@media (max-width:880px){
|
|
103
|
+
.layout{grid-template-columns:minmax(0,1fr);gap:2.5rem;padding-top:3rem;
|
|
104
|
+
justify-content:stretch}
|
|
105
|
+
.layout>main{max-width:34rem;width:100%}
|
|
106
|
+
.side{position:static;display:grid;grid-template-columns:76px minmax(0,1fr);
|
|
107
|
+
gap:0 1rem;align-items:center;max-width:34rem}
|
|
108
|
+
.side .mug{margin-bottom:0}
|
|
109
|
+
.side .elsewhere{flex-direction:row;gap:0 1rem;margin-top:.4rem}
|
|
110
|
+
.side>div{grid-column:2}
|
|
111
|
+
}
|
|
112
|
+
@media (max-width:560px){
|
|
113
|
+
body{font-size:18px}
|
|
114
|
+
.home{padding-top:2.5rem}
|
|
115
|
+
article h1{font-size:1.6rem}
|
|
116
|
+
.signup form{flex-direction:column}
|
|
117
|
+
.signup input[type=email],.signup button{width:100%}
|
|
118
|
+
.share ul{flex-direction:column;gap:.6rem 0}
|
|
119
|
+
}
|
|
120
|
+
</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<button class="theme" title="Toggle dark mode" aria-label="Toggle dark mode" onclick="var d=document.documentElement,n=d.dataset.theme==='dark'?'light':'dark';d.dataset.theme=n;try{localStorage.setItem('theme',n)}catch(e){}">◐</button>
|
data/_layouts/home.html
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
{% include head.html %}
|
|
5
|
+
</head>
|
|
6
|
+
<body>
|
|
7
|
+
{% include theme-toggle.html %}
|
|
8
|
+
<main class="home">
|
|
9
|
+
<img class="mug" src="{{ '/assets/images/avatar.svg' | relative_url }}" width="104" height="104" alt="{{ site.author }}">
|
|
10
|
+
<h1>{{ site.title }}</h1>
|
|
11
|
+
<p class="tagline">{{ site.tagline }}</p>
|
|
12
|
+
<div class="bio">
|
|
13
|
+
{{ content }}
|
|
14
|
+
</div>
|
|
15
|
+
{% include elsewhere.html %}
|
|
16
|
+
|
|
17
|
+
<p class="section-label">Writing</p>
|
|
18
|
+
<ul class="articles">
|
|
19
|
+
{% for post in site.posts %}
|
|
20
|
+
<li><time datetime="{{ post.date | date: '%Y-%m-%d' }}">{{ post.date | date: '%Y-%m-%d' }}</time><a href="{{ post.url | relative_url }}">{{ post.title }}</a></li>
|
|
21
|
+
{% endfor %}
|
|
22
|
+
</ul>
|
|
23
|
+
|
|
24
|
+
{% include signup.html %}
|
|
25
|
+
</main>
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|
data/_layouts/post.html
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
{% include head.html %}
|
|
5
|
+
</head>
|
|
6
|
+
<body>
|
|
7
|
+
{% include theme-toggle.html %}
|
|
8
|
+
<div class="layout">
|
|
9
|
+
<aside class="side">
|
|
10
|
+
<img class="mug" src="{{ '/assets/images/avatar.svg' | relative_url }}" width="76" height="76" alt="{{ site.author }}">
|
|
11
|
+
<div>
|
|
12
|
+
<a class="who" href="{{ '/' | relative_url }}">{{ site.title }}</a>
|
|
13
|
+
<p>{{ site.tagline }}</p>
|
|
14
|
+
<a class="back" href="{{ '/' | relative_url }}">← Home</a>
|
|
15
|
+
{% include elsewhere.html %}
|
|
16
|
+
</div>
|
|
17
|
+
</aside>
|
|
18
|
+
<main>
|
|
19
|
+
<article>
|
|
20
|
+
<h1>{{ page.title }}</h1>
|
|
21
|
+
<time class="pubdate" datetime="{{ page.date | date: '%Y-%m-%d' }}">{{ page.date | date: '%Y-%m-%d' }}</time>
|
|
22
|
+
{{ content }}
|
|
23
|
+
</article>
|
|
24
|
+
{% include signup.html %}
|
|
25
|
+
{% include share.html %}
|
|
26
|
+
</main>
|
|
27
|
+
</div>
|
|
28
|
+
</body>
|
|
29
|
+
</html>
|
metadata
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: jekyll-theme-colophon
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Ender Kuş
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: jekyll
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '3.7'
|
|
19
|
+
- - "<"
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '5.0'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
requirements:
|
|
26
|
+
- - ">="
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
version: '3.7'
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '5.0'
|
|
32
|
+
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: jekyll-feed
|
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
|
35
|
+
requirements:
|
|
36
|
+
- - "~>"
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: '0.12'
|
|
39
|
+
type: :runtime
|
|
40
|
+
prerelease: false
|
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
42
|
+
requirements:
|
|
43
|
+
- - "~>"
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0.12'
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: jekyll-sitemap
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
requirements:
|
|
50
|
+
- - "~>"
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '1.4'
|
|
53
|
+
type: :runtime
|
|
54
|
+
prerelease: false
|
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - "~>"
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '1.4'
|
|
60
|
+
- !ruby/object:Gem::Dependency
|
|
61
|
+
name: bundler
|
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
|
63
|
+
requirements:
|
|
64
|
+
- - "~>"
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '2.0'
|
|
67
|
+
type: :development
|
|
68
|
+
prerelease: false
|
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
70
|
+
requirements:
|
|
71
|
+
- - "~>"
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: '2.0'
|
|
74
|
+
- !ruby/object:Gem::Dependency
|
|
75
|
+
name: rake
|
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - "~>"
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '13.0'
|
|
81
|
+
type: :development
|
|
82
|
+
prerelease: false
|
|
83
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
84
|
+
requirements:
|
|
85
|
+
- - "~>"
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: '13.0'
|
|
88
|
+
description: 'Colophon is a minimal, single- and two-column personal blog theme for
|
|
89
|
+
Jekyll: system-font serif typography, light/dark mode, RSS, and a ConvertKit signup
|
|
90
|
+
form.'
|
|
91
|
+
email:
|
|
92
|
+
- ender@enderkus.com.tr
|
|
93
|
+
executables: []
|
|
94
|
+
extensions: []
|
|
95
|
+
extra_rdoc_files: []
|
|
96
|
+
files:
|
|
97
|
+
- LICENSE.txt
|
|
98
|
+
- README.md
|
|
99
|
+
- _includes/elsewhere.html
|
|
100
|
+
- _includes/head.html
|
|
101
|
+
- _includes/share.html
|
|
102
|
+
- _includes/signup.html
|
|
103
|
+
- _includes/style.html
|
|
104
|
+
- _includes/theme-toggle.html
|
|
105
|
+
- _layouts/home.html
|
|
106
|
+
- _layouts/post.html
|
|
107
|
+
- lib/jekyll-theme-colophon.rb
|
|
108
|
+
- lib/jekyll-theme-colophon/version.rb
|
|
109
|
+
homepage: https://github.com/enderkus/jekyll-theme-colophon
|
|
110
|
+
licenses:
|
|
111
|
+
- MIT
|
|
112
|
+
metadata:
|
|
113
|
+
bug_tracker_uri: https://github.com/enderkus/jekyll-theme-colophon/issues
|
|
114
|
+
changelog_uri: https://github.com/enderkus/jekyll-theme-colophon/releases
|
|
115
|
+
source_code_uri: https://github.com/enderkus/jekyll-theme-colophon
|
|
116
|
+
plugin_type: theme
|
|
117
|
+
rdoc_options: []
|
|
118
|
+
require_paths:
|
|
119
|
+
- lib
|
|
120
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: 2.7.0
|
|
125
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
|
+
requirements:
|
|
127
|
+
- - ">="
|
|
128
|
+
- !ruby/object:Gem::Version
|
|
129
|
+
version: '0'
|
|
130
|
+
requirements: []
|
|
131
|
+
rubygems_version: 3.6.7
|
|
132
|
+
specification_version: 4
|
|
133
|
+
summary: A minimal, serif-typography personal blog theme for Jekyll.
|
|
134
|
+
test_files: []
|