jekyll-theme-merida 0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 92a28fb315c85e65483cdcdd48f314fae2fe7668cb5a83625ae773b16b8056a6
4
+ data.tar.gz: 7c1398a339af2a92fe187b6f854b7fe6c12a3d66e4a934c1dac6d349c308c02b
5
+ SHA512:
6
+ metadata.gz: ced3d2e886a5633b458bed595de5d8b188c119196580080a45c5416c08935205648f74d02734486d1e7cc9539030a018c06744c44ee6ce807119801c509cc92b
7
+ data.tar.gz: e9677987787e10817dce7e7f317981d81ad6ddb42d87f24c77411fe97230d2efaf7451226939586fc56a0393c968758146d0638dd78c45830d627b255089c19b
data/README.md ADDED
@@ -0,0 +1 @@
1
+ # merida
data/_config.yml ADDED
@@ -0,0 +1,50 @@
1
+ url: "https://example.com" # the base hostname & protocol for your site, e.g. http://example.com
2
+ baseurl: "" # the subpath of your site, e.g. /blog
3
+ title: "Your Name" # the name of your site, e.g. ACME Corp.
4
+
5
+ permalink: /blog/:slug/
6
+
7
+ plugins:
8
+ - jekyll-tailwind
9
+ - jekyll-last-modified-at
10
+ - jekyll-scholar
11
+ - jekyll-feed
12
+ - jekyll-sitemap
13
+
14
+ tailwind:
15
+ input: assets/css/app.css
16
+ minify: true
17
+
18
+ collections:
19
+ pages:
20
+ output: true
21
+ news:
22
+ output: true
23
+ permalink: /news/:slug/
24
+ research:
25
+ output: true
26
+
27
+ markdown: kramdown
28
+ kramdown:
29
+ syntax_highlighter: rouge
30
+ syntax_highlighter_opts:
31
+ css_class: 'highlight'
32
+ span:
33
+ line_numbers: false
34
+ block:
35
+ line_numbers: true
36
+ start_line: 1
37
+
38
+ scholar:
39
+ bibliography: references.bib
40
+ style: apa
41
+ bibliography_template: bib
42
+ bibliography_list_tag: ul
43
+ sort_by: year
44
+ order: descending
45
+
46
+ exclude:
47
+ - README.md
48
+ - DESIGN.md
49
+ - tailwind_enabler.css
50
+
data/_data/menu.yaml ADDED
@@ -0,0 +1,16 @@
1
+ items:
2
+ - title: About
3
+ url: /
4
+
5
+ - title: Projects
6
+ url: /projects
7
+
8
+
9
+ - title: Publications
10
+ url: /publications
11
+
12
+ - title: Blog
13
+ url: /blog
14
+
15
+ - title: News
16
+ url: /news
data/_data/repos.yaml ADDED
@@ -0,0 +1,21 @@
1
+ items:
2
+ - name: Project Alpha
3
+ description: Linux Kernel by Legendary Linus Torvalds
4
+ date: 2020-05-19
5
+ user_name: torvalds
6
+ repo_name: linux
7
+ host: https://github.com/
8
+
9
+ - name: Project Beta
10
+ description: Python black formatter
11
+ date: 2023-05-07
12
+ user_name: python
13
+ repo_name: black
14
+ host: https://github.com/
15
+
16
+ - name: Project Gamma
17
+ description: The cute numpy
18
+ date: 2024-05-13
19
+ user_name: numpy
20
+ repo_name: numpy
21
+ host: https://github.com/
data/_data/social.yaml ADDED
@@ -0,0 +1,10 @@
1
+ items:
2
+ - name: Bluesky
3
+ url: https://bsky.app/
4
+
5
+ - name: GitHub
6
+ url: https://github.com/
7
+
8
+ - name: LinkedIn
9
+ url: https://www.linkedin.com/
10
+
@@ -0,0 +1,22 @@
1
+ <footer class=" border-border-main border-t-1 bg-gray-200 text-gray-700" data-pagefind-ignore>
2
+ <div class="max-w-theme mx-auto px-1 md:px-4 lg:px-0 py-1 flex flex-col md:flex-row justify-between items-center">
3
+
4
+ <!-- Left side -->
5
+ <p class="text-sm mb-0! sm:text-left text-center">&copy; {{ "now" | date: "%Y" }} <a class="text-primary" href="{{ site.url }}{{ site.baseurl }}" target="_blank">{{ site.title }}</a>. Powered by <a class="text-primary" href="https://jekyllrb.com/" target="_blank">Jekyll</a> with <a class="text-primary" href="https://javadkoushyar.com/merida" target="_blank">Merida</a> theme.</p>
6
+
7
+ <!-- Right side / links -->
8
+ <div class="flex space-x-4 mt-4 md:mt-0 font-medium! text-sm">
9
+ <a class="hover:text-blue-500 transition-colors" href="/">About</a>
10
+ <!-- Social links from _data/social.yml -->
11
+ {% for social in site.data.social.items %}
12
+ <a class="hover:text-blue-500 transition-colors"
13
+ href="{{ social.url }}"
14
+ rel="noopener noreferrer"
15
+ >
16
+ {{ social.name }}
17
+ </a>
18
+ {% endfor %}
19
+ </div>
20
+
21
+ </div>
22
+ </footer>
@@ -0,0 +1,18 @@
1
+ <!-- Stuff that will be places in the head element of the base layout. -->
2
+
3
+ <!-- MathJax -->
4
+ <script src="/assets/scripts/mathjax-config.js"></script>
5
+ <script async id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js"></script>
6
+ <!-- Favicons -->
7
+ <link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
8
+ <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon/favicon-32x32.png">
9
+ <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon/favicon-16x16.png">
10
+ <link rel="manifest" href="/assets/favicon/site.webmanifest">
11
+ <!-- Code Syntax Highlighting -->
12
+ <link
13
+ href="{{ '/assets/css/github-dark.css' | relative_url | bust_file_cache }}"
14
+ rel="stylesheet"
15
+ >
16
+ <!-- Merida Theme -->
17
+ <link rel="stylesheet" href="{{ "/assets/css/app.css" | relative_url }}">
18
+
@@ -0,0 +1,18 @@
1
+ <!-- Displays the latest news as a list -->
2
+ <ul class="prose pl-0 sm:pl-6 space-y-4">
3
+ {% assign sorted_news = site.news | sort: "date" | reverse %}
4
+ {% for news in sorted_news limit:5 %}
5
+ <li class="flex flex-row gap-4 sm:gap-6">
6
+ <time class="font-bold min-w-32">{{ news.date | date: "%b %d, %Y" }}</time>
7
+ <!-- Title always plain text -->
8
+ <p class="not-prose mb-0! truncate">
9
+ {{ news.description }}
10
+
11
+ <!-- Only add [more] if news has content -->
12
+ {% if news.content and news.content != "" %}
13
+ <a class="ml-1 text-blue-600 hover:underline" href="{{ news.url }}">[more]</a>
14
+ {% endif %}
15
+ </p>
16
+ </li>
17
+ {% endfor %}
18
+ </ul>
@@ -0,0 +1,9 @@
1
+ <!-- Displays the latest posts as a list -->
2
+ <ul class="prose pl-0 sm:pl-6 space-y-4">
3
+ {% for post in site.posts limit:5 %}
4
+ <li class="flex flex-row gap-4 sm:gap-6">
5
+ <time class="font-bold min-w-32">{{ post.date | date: "%b %d, %Y" }}</time>
6
+ <a class="wrap-break-word" href="{{ post.url }}">{{ post.title | truncate: 100, "..." }}</a>
7
+ </li>
8
+ {% endfor %}
9
+ </ul>
@@ -0,0 +1,67 @@
1
+ {% unless page.nav_exclude %}
2
+ <nav class="sticky top-0 z-50 bg-gray-800 border-b border-blue-100" data-pagefind-ignore>
3
+ <div class="px-6 xl:px-0 max-w-theme mx-auto">
4
+
5
+ <div class="flex items-center justify-between py-2">
6
+
7
+ <!-- Hamburger Button -->
8
+ <button class="hover:cursor-pointer md:hidden rounded text-4xl" id="menu-btn">
9
+ <svg class="size-10 stroke-blue-300" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
10
+ <path d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" stroke-linecap="round" stroke-linejoin="round" />
11
+ </svg>
12
+ </button>
13
+
14
+ <!-- Desktop Menu -->
15
+ <ul class="hidden md:flex items-center space-x-6">
16
+ {% for item in site.data.menu.items %}
17
+ <li>
18
+ <a class="p-2 rounded text-white hover:text-blue-300 {% if item.url == page.url %}bg-blue-500 hover:text-white {% endif %}"
19
+ href="{{ item.url }}">
20
+ {{ item.title }}
21
+ </a>
22
+ </li>
23
+ {% endfor %}
24
+
25
+ <!-- Search Icon -->
26
+ <li>
27
+ <button class="search-open flex items-center gap-2 p-2 rounded text-white hover:text-blue-300 hover:cursor-pointer">
28
+ <svg class="size-4" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
29
+ <path d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" stroke-linecap="round" stroke-linejoin="round"/>
30
+ </svg>
31
+ Search
32
+ </button>
33
+ </li>
34
+ </ul>
35
+
36
+
37
+ </div>
38
+
39
+ <!-- Mobile Menu -->
40
+ <ul class="hidden flex-col space-y-2 pb-4 md:hidden" id="mobile-menu">
41
+ {% for item in site.data.menu.items %}
42
+ <li>
43
+ <a class="block p-2 rounded text-white hover:text-blue-300 {% if item.url == page.url %}bg-blue-500 hover:text-white {% endif %}"
44
+ href="{{ item.url }}">
45
+ {{ item.title }}
46
+ </a>
47
+ </li>
48
+ {% endfor %}
49
+
50
+ <!-- Search -->
51
+ <li>
52
+ <button class="text-white search-open flex items-center gap-2 p-2 rounded text-black hover:text-blue-500 hover:cursor-pointer">
53
+ <svg class=" size-4" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
54
+ <path d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" stroke-linecap="round" stroke-linejoin="round"/>
55
+ </svg>
56
+ Search
57
+ </button>
58
+ </li>
59
+ </ul>
60
+
61
+
62
+ </div>
63
+
64
+ {% include search-modal.html %}
65
+
66
+ </nav>
67
+ {% endunless %}
@@ -0,0 +1,5 @@
1
+ <script src="/assets/scripts/navbar.js"></script>
2
+ <script src="/assets/scripts/copy-code.js"></script>
3
+ <script src="/assets/scripts/without-prose.js"></script>
4
+ <script src="/assets/scripts/table-wrapper.js"></script>
5
+ <script src="/assets/scripts/search.js"></script>
@@ -0,0 +1,43 @@
1
+ <!-- Search Modal -->
2
+ <div class="fixed inset-0 z-50 hidden bg-black/40 flex items-start justify-center pt-24" id="search-modal">
3
+
4
+ <div class="modal-animate bg-white w-full max-w-2xl mx-4 rounded-lg shadow-lg overflow-hidden">
5
+
6
+ <!-- Search Box -->
7
+ <div class="border-b p-4">
8
+ <div class="relative">
9
+
10
+ <input
11
+ class="w-full outline-none text-lg pr-8"
12
+ id="search-input"
13
+ placeholder="Type to start searching"
14
+ type="text"
15
+ >
16
+
17
+ <button
18
+ class="hover:cursor-pointer absolute right-0 top-1/2 -translate-y-1/2 text-gray-700 hover:text-gray-800 hidden"
19
+ id="search-clear"
20
+ type="button"
21
+ >
22
+ <svg class="size-5"
23
+ fill="none"
24
+ stroke="currentColor"
25
+ stroke-width="1.5"
26
+ viewBox="0 0 24 24"
27
+ xmlns="http://www.w3.org/2000/svg">
28
+ <path d="M6 18 18 6M6 6l12 12" stroke-linecap="round"
29
+ stroke-linejoin="round"/>
30
+ </svg>
31
+ </button>
32
+
33
+ </div>
34
+ </div>
35
+
36
+ <!-- Results -->
37
+ <div class="h-[376px] overflow-y-auto rounded-b-lg">
38
+ <div class="p-4 h-full flex items-center justify-center" id="search-results">
39
+ <p class="text-sm text-gray-500 text-center">Start typing to search...</p>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
data/_layouts/404.html ADDED
@@ -0,0 +1,28 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+
5
+ <section class="min-h-[70vh] flex flex-col items-center justify-center px-6 text-center">
6
+
7
+ <!-- Big 404 -->
8
+ <div class="text-7xl sm:text-8xl font-bold tracking-tight mb-4">
9
+ {{ page.title }}
10
+ </div>
11
+
12
+ <!-- Title -->
13
+ <h1 class="text-2xl sm:text-3xl mb-3">
14
+ {{ page.short_message }}
15
+ </h1>
16
+
17
+ <!-- Description -->
18
+ <p class="text-gray-500 mb-8">
19
+ {{ page.long_message }}
20
+ </p>
21
+
22
+ <!-- Button -->
23
+ <a
24
+ href="/">
25
+ Back to home
26
+ </a>
27
+
28
+ </section>
@@ -0,0 +1,34 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+ <div class="prose max-w-full">
5
+ <h1>{{ site.title }}</h1>
6
+ <div class="flex flex-col md:flex-row flex-wrap xl:gap-16 sm:gap-6 mb-10">
7
+ <div class="prose flex-1">
8
+ {{ content }}
9
+ </div>
10
+ {% if page.profile %}
11
+ <div>
12
+ {% if page.profile.image %}
13
+ {% assign profile_image_path = page.profile.image | prepend: 'assets/img/' %}
14
+ <img alt="{{ page.profile.caption }}" class="mx-auto mb-0 mt-5 rounded shrink-0 w-64 h-auto" src="{{ profile_image_path }}"/>
15
+ {% endif %}
16
+ {% if page.profile.caption %}
17
+ <p class="text-xs! mt-2 text-center text-gray-500">{{ page.profile.caption }}</p>
18
+
19
+ {% endif %}
20
+ </div>
21
+
22
+ {% endif %}
23
+ </div>
24
+
25
+ {% if page.latest_news and page.latest_news.enabled %}
26
+ <h2 class="mt-0">Latest News</h2>
27
+ {% include latest-news.html %}
28
+ {% endif %}
29
+
30
+ {% if page.latest_posts and page.latest_posts.enabled %}
31
+ <h2>Latest Posts</h2>
32
+ {% include latest-posts.html %}
33
+ {% endif %}
34
+ </div>
@@ -0,0 +1,21 @@
1
+ <!DOCTYPE html>
2
+ <html lang="{{ site.lang | default: "en-US" }}">
3
+ <!-- Headers -->
4
+ <head>
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <meta charset="utf-8">
7
+ <title>{{ page.title }} | {{ site.title }}</title>
8
+ {% include header.html %}
9
+ </head>
10
+ <body data-pagefind-body class="font-main min-h-screen flex flex-col">
11
+
12
+ {% include navbar.html %}
13
+ <!-- Child Content -->
14
+ <div data-pagefind-body class="px-6 xl:px-0 font-main pb-16 main flex flex-col flex-1 mx-auto mt-16 max-w-theme w-full px-2 xl:px-0 grow-1">
15
+ {{ content }}
16
+ </div>
17
+
18
+ {% include post-body.html %}
19
+ {% include footer.html %}
20
+ </body>
21
+ </html>
data/_layouts/bib.html ADDED
@@ -0,0 +1,65 @@
1
+ ---
2
+ ---
3
+ <div
4
+ class="bib-entry border-1 border-border-main break-words px-2 pb-2 mb-8! last:mb-0 text-center">
5
+
6
+ <!-- Title -->
7
+ <h2 class="mt-2! mb-0! text-center!">
8
+ {{ entry.title }}
9
+ </h2>
10
+
11
+ <!-- Venue / Conference / Journal -->
12
+ {% assign year_str = entry.year | append: "" %}
13
+ {% assign clean_booktitle = entry.booktitle | default: "" | strip %}
14
+ {% assign prefix = clean_booktitle | slice: 0, 4 %}
15
+ {% if prefix == year_str %}
16
+ {% assign cleaned_booktitle = clean_booktitle | remove_first: year_str | strip %}
17
+ {% else %}
18
+ {% assign cleaned_booktitle = clean_booktitle %}
19
+ {% endif %}
20
+
21
+ <p class="text-neutral-500 truncate">
22
+ {% if cleaned_booktitle != "" %}
23
+ <span>{{ cleaned_booktitle }},</span>
24
+ {% endif %}
25
+ {% if entry.journal %}
26
+ <span>{{ entry.journal }},</span>
27
+ {% endif %}
28
+ {% if entry.year %}
29
+ <span>{{ entry.year }}</span>
30
+ {% endif %}
31
+ </p>
32
+
33
+ <!-- Authors -->
34
+ <p>{{ entry.author }}</p>
35
+
36
+ <!-- Optional abstract -->
37
+ {% if entry.abstract %}
38
+ <p class="text-neutral-600 text-sm">{{ entry.abstract | truncate: 250, "..." }}</p>
39
+ {% endif %}
40
+
41
+ <!-- Links -->
42
+ <div class="flex flex-wrap gap-3 text-sm justify-center">
43
+ {% if entry.url %}
44
+ <a class=" border border-border-main px-2 bg-blue-50" href="{{ entry.url }}">Paper</a>
45
+ {% endif %}
46
+ {% if entry.code %}
47
+ <a class=" text-green-500! border border-border-main px-2 bg-green-50" href="{{ entry.code }}">Code</a>
48
+ {% endif %}
49
+ {% if entry.slides %}
50
+ <a class=" text-violet-500! border border-border-main px-2 bg-violet-50" href="{{ entry.slides }}">Slides</a>
51
+ {% endif %}
52
+ {% if entry.bibtex %}
53
+ <button class="hover:cursor-pointer border border-border-main px-2 bg-gray-50 bibtex-toggle" type="button">BibTeX</button>
54
+ {% endif %}
55
+ </div>
56
+
57
+ <!-- Hidden details -->
58
+ {% if entry.bibtex %}
59
+ <details class="bibtex-details mt-4">
60
+ <summary class="sr-only">BibTeX</summary>
61
+ <pre class="text-left mt-2 bg-neutral-200 rounded-lg p-4 text-xs font-mono whitespace-pre-wrap break-words">{{ entry.bibtex }}</pre>
62
+ </details>
63
+ {% endif %}
64
+
65
+ </div>
@@ -0,0 +1,46 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+
5
+ <div class="prose min-w-full">
6
+ {{ content }}
7
+
8
+ <section class="w-full">
9
+ <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
10
+ {% for post in site.posts %}
11
+ <article class="border border-border-main rounded-lg p-6 flex flex-col h-full">
12
+
13
+ <!-- Main content (title + date) -->
14
+ <div class="flex flex-col flex-1">
15
+ <a class="mb-2" href="{{ post.url }}">
16
+ {{ post.title }}
17
+ </a>
18
+
19
+ <div class="text-gray-500">
20
+ <time class="text-sm" datetime="{{ post.date | date_to_xmlschema }}">
21
+ {{ post.date | date: "%B %-d, %Y" }}
22
+ </time>
23
+ </div>
24
+ </div>
25
+
26
+ <!-- Tags (first 3 only) -->
27
+ <div class="flex flex-wrap gap-2 mt-3 min-h-[1.5rem]">
28
+ {% if post.tags %}
29
+ {% assign limited_tags = post.tags | slice: 0, 3 %}
30
+ {% for tag in limited_tags %}
31
+ <span class="bg-gray-200 text-gray-700 px-2 py-1 rounded text-xs">
32
+ {{ tag }}
33
+ </span>
34
+ {% endfor %}
35
+ {% else %}
36
+ <!-- empty spacer to preserve height -->
37
+ <span class="invisible px-2 py-1 rounded text-xs">empty</span>
38
+ {% endif %}
39
+ </div>
40
+
41
+ </article>
42
+ {% endfor %}
43
+
44
+ </div>
45
+ </section>
46
+ </div>
@@ -0,0 +1,35 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+ <div class="prose min-w-full">
5
+ {{ content }}
6
+ <div>
7
+ <ul class="pl-0 divide-y divide-gray-200">
8
+ {% assign sorted_news = site.news | sort: "date" | reverse %}
9
+ {% for news in sorted_news %}
10
+ <li class="px-2 py-2 even:bg-gray-100 my-0! text-center sm:text-left flex flex-col sm:flex-row sm:items-center gap-0 sm:gap-4">
11
+ <!-- Date column -->
12
+ <time class="min-w-32 flex-shrink-0 text-sm">
13
+ {{ news.date | date: "%b %d, %Y" }}
14
+ </time>
15
+
16
+ <!-- Description column -->
17
+ <div class="flex-1 min-w-0">
18
+ {% if news.description %}
19
+ <p class="truncate font-bold">
20
+ {{ news.description }}
21
+ </p>
22
+ {% endif %}
23
+ </div>
24
+
25
+ <!-- Read more column -->
26
+ {% if news.content and news.content != "" %}
27
+ <div class="flex-shrink-0 mt-2 sm:mt-0">
28
+ <a class="text-blue-600 hover:underline" href="{{ news.url }}">[more]</a>
29
+ </div>
30
+ {% endif %}
31
+ </li>
32
+ {% endfor %}
33
+ </ul>
34
+ </div>
35
+ </div>
@@ -0,0 +1,74 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+ <div class="prose prose-sm sm:prose-sm md:prose-lg min-w-full">
5
+ <nav class="flex items-center gap-2">
6
+ {% if page.collection == "news" %}
7
+ <a class="text-blue-600 hover:underline" href="/news/">News</a>
8
+ {% else %}
9
+ <a class="text-blue-600 hover:underline" href="/blog/">Blog</a>
10
+ {% endif %}
11
+ <span class="text-gray-400">/</span>
12
+ <span class="text-gray-800 font-semibold">{{ page.title }}</span>
13
+ </nav>
14
+
15
+ <article class="mx-auto w-full px-0 py-8 flex flex-col space-y-4">
16
+
17
+ <!-- Post meta container -->
18
+ <div class="relative overflow-hidden py-3 px-2 md:px-3 rounded-tl-lg rounded-tr-lg mb-0 border border-gray-200">
19
+
20
+ {% if page.background.file %}
21
+ <div
22
+ class="absolute inset-0 -z-10 rounded-tl-lg rounded-tr-lg"
23
+ style="
24
+ background-image: url('{{ page.background.file }}');
25
+ background-size: {{ page.background.size | default: 'cover' }};
26
+ background-repeat: no-repeat;
27
+ background-position: {{ page.background.x | default: '50%' }} {{ page.background.y | default: '50%' }};
28
+ opacity: {{ page.background.opacity | default: 0.8 }};
29
+ {% if page.background.blur %}
30
+ filter: blur({{ page.background.blur | times: 10 }}px);
31
+ {% endif %}
32
+ ">
33
+ </div>
34
+ {% else %}
35
+ <div class="absolute inset-0 -z-10 bg-gray-100 rounded-tl-lg rounded-tr-lg"></div>
36
+ {% endif %}
37
+
38
+ <div class="relative flex flex-col gap-4">
39
+ <!-- Published / Updated Date -->
40
+ <span class="text-gray-800 text-sm flex flex-wrap mx-auto md:mx-0 items-center space-x-2">
41
+ <time datetime="{{ page.date | date_to_xmlschema }}">
42
+ {{ page.date | date: "%B %-d, %Y" }}
43
+ </time>
44
+ {% if page.last_modified_at %}
45
+ <span>•</span>
46
+ <time datetime="{{ page.last_modified_at | date_to_xmlschema }}">
47
+ Updated {{ page.last_modified_at | date: "%B %-d, %Y" }}
48
+ </time>
49
+ {% endif %}
50
+ </span>
51
+
52
+ <!-- Title -->
53
+ <h1 class="wrap-break-word text-left">{{ page.title }}</h1>
54
+
55
+ {% if page.tags and page.tags.size > 0 %}
56
+ <!-- Tags -->
57
+ <div class="flex flex-wrap gap-1 sm:gap-2 text-sm md:text-base justify-center md:justify-start">
58
+ {% for tag in page.tags %}
59
+ <span class="bg-gray-700 text-white px-2 py-1 rounded">
60
+ {{ tag }}
61
+ </span>
62
+ {% endfor %}
63
+ </div>
64
+ {% endif %}
65
+ </div>
66
+ </div>
67
+
68
+ <!-- Post content -->
69
+ <div class="px-1 md:px-4 pt-6! max-w-full border-x border-b rounded-b-lg border-b-gray-200 border-x-gray-200">
70
+ {{ content }}
71
+ </div>
72
+
73
+ </article>
74
+ </div>
@@ -0,0 +1,31 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+
5
+ <div class="prose max-w-full ">
6
+ {{ content }}
7
+ <div class="{% if content != "" %}mt-16{% endif %}">
8
+ <ul class="divide-y divide-border-main pl-0!">
9
+ {% assign sorted_repos = site.data.repos.items | sort: "date" | reverse %}
10
+ {% for repo in sorted_repos %}
11
+ <li class="not-prose flex flex-col sm:flex-row sm:items-center py-6 last:pb-0 gap-0 sm:gap-4">
12
+ <!-- Date column -->
13
+ <time class="min-w-[100px] max-w-[100px] flex-shrink-0 text-sm!">
14
+ {{ repo.date | date: "%b %d, %Y" }}
15
+ </time>
16
+ {% if repo.host %}
17
+ <a class="mb-0! min-w-[200px] max-w-[200px] font-bold! truncate sm:text-center" href="{{ repo.host }}/{{ repo.user_name }}/{{ repo.repo_name}}">
18
+ {{ repo.name }}
19
+ </a>
20
+ {% endif %}
21
+
22
+ <p class="not-prose mb-0! truncate grow">
23
+ {{ repo.description }}
24
+ </p>
25
+ <img alt="GitHub Repo stars" class="not-prose w-[100px] min-w-[100px] mt-1 sm:mt-0 h-auto" src="https://img.shields.io/github/stars/{{ repo.user_name }}/{{ repo.repo_name }}?style=flat-square&cacheSeconds=3600">
26
+ </li>
27
+ {% endfor %}
28
+ </ul>
29
+ </div>
30
+ </div>
31
+
@@ -0,0 +1,8 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+
5
+ <section class="prose max-w-full">
6
+ {{ content }}
7
+ {% bibliography %}
8
+ </section>