Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
- name: Linter
if: ${{ github.event_name == 'pull_request' }}
env:
PRE_COMMIT_SKIP: mkdocs-build
PRE_COMMIT_SKIP: mkdocs-build,linkcheckmd

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we shouldn't skip it .. but I will fix it now. thanks

run: |
pre-commit install
pre-commit run --all-files --verbose
Expand Down
2 changes: 1 addition & 1 deletion theme/blog-list.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ <h3 class="post_link">
<span class="meta_item date">
<svg class="icon" aria-hidden="true"><use xlink:href="#calendar"/></svg>
<time class="post_date" datetime="{{ page.meta["date"].strftime('%Y-%m-%d') }}">
{{ page.meta["date"].strftime('%b %-d, %Y') }}
{{ page.meta["date"].strftime('%b') }} {{ page.meta["date"].day }}, {{ page.meta["date"].strftime('%Y') }}
</time>
</span>
{% endif %}
Expand Down
2 changes: 1 addition & 1 deletion theme/blog-post.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ <h1>{{ title }}</h1>
<span class="meta_item">
<svg class="icon" aria-hidden="true"><use xlink:href="#calendar"/></svg>
<time class="post_date" datetime="{{ page.meta["date"].strftime('%Y-%m-%d') }}">
{{ page.meta["date"].strftime('%b %-d, %Y') }}
{{ page.meta["date"].strftime('%b %#d, %Y') }}
</time>
</span>
{% endif %}
Expand Down
109 changes: 83 additions & 26 deletions theme/css/blog.css
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@

/* ===== Grid ===== */
.post-grid{
/* responsive grid; tweak min width to taste */
--card-min: 320px;
--gap: 1rem;

Expand All @@ -32,48 +31,73 @@
gap: var(--gap);
}

/* (Extra bullet-killers for stubborn user-agent / legacy styles) */
/* Bullet killers */
.post-grid > li { list-style: none; }
.post-grid *::marker { content: ''; }

/* ===== Card ===== */
.post-card{ display: block; }

.excerpt{
display: flex; /* keep thumbnail on top, body below */
display: flex;
flex-direction: column;
border: 1px solid var(--border, rgba(255,255,255,.08));
border-radius: var(--radius, 16px);
background: var(--surface, rgba(255,255,255,.04));
box-shadow: var(--shadow-card, 0 10px 30px rgba(0,0,0,.25));
overflow: hidden;
transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease, background .18s ease;
height: 100%; /* ← cards equal height in same row */
}
.excerpt:hover{
transform: translateY(-2px);
border-color: color-mix(in oklab, var(--brand-strong, #3b82f6) 35%, var(--border));
background: var(--surface-solid, rgba(255,255,255,.05));
}

/* Thumbnail */
.post-thumb{
/* ── Thumbnail ──────────────────────────────────────────────── */
/* .post-thumb is an <a> tag in HTML */
a.post-thumb,
.post-card .post-thumb,
.excerpt .post-thumb {
display: block;
position: relative;
width: 100%;
aspect-ratio: 16 / 9;
background: var(--surface-muted);
overflow: hidden;
flex-shrink: 0;
line-height: 0;
}
.post-thumb img{

/* base.css sets img { height: auto } which breaks our 100% height.
We beat it with a slightly more specific selector — no !important needed. */
a.post-thumb img,
.post-card .post-thumb img,
.excerpt .post-thumb img {
width: 100%;
height: 100%;
object-fit: cover;
height: 100%; /* overrides base.css "height: auto" */
object-fit: cover; /* KEY FIX: logos won't get cropped */
object-position: center;
display: block;
padding: 0; /* breathing room around logos */
box-sizing: border-box;
max-width: 100%;
margin: 0;
border-radius: 0;
box-shadow: none;
}

.post-thumb.contain img {
object-fit: contain;
padding: .75rem;
}

/* Body */
/* ── Body ───────────────────────────────────────────────────── */
.excerpt_body{
padding: 1rem 1rem 1.05rem;
display: grid;
gap: .6rem;
flex: 1; /* pushes actions to bottom of card */
}

/* Title */
Expand All @@ -82,7 +106,7 @@
color: var(--fg);
text-decoration: none;
display: -webkit-box;
-webkit-line-clamp: 2; /* clamp long titles */
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
Expand Down Expand Up @@ -117,13 +141,13 @@
border-color: var(--border-strong, rgba(255,255,255,.22));
}

/* Description (clamp to keep cards even-ish) */
/* Description */
.post_desc{
margin: 0;
color: var(--fg);
opacity: .92;
display: -webkit-box;
-webkit-line-clamp: 5; /* adjust to taste */
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
overflow: hidden;
}
Expand Down Expand Up @@ -151,10 +175,22 @@
.post_share a:hover{ background: rgba(255,255,255,.08); }
.post_share .share_label{ margin-right: .25rem; }

/* Narrow screens: single column */
/* ── Responsive ─────────────────────────────────────────────── */
@media (max-width: 1024px){
.post-grid{ --card-min: 280px; }
}

@media (max-width: 640px){
.post-grid{ --card-min: 100%; --gap: .85rem; }
.excerpt_body{ padding: .9rem; }

/* On mobile: slightly taller thumb so portrait logos don't look tiny */
.post-thumb{ aspect-ratio: 4 / 3; }
}

@media (max-width: 400px){
.post-grid{ --card-min: 100%; --gap: .6rem; }
.post_meta{ font-size: .8rem; }
}

/* ===== Blog post page ===== */
Expand Down Expand Up @@ -242,21 +278,34 @@
margin-top: 1rem;
}

/* .blog-hero__media is a <figure> tag — reset browser defaults */
.blog-hero__media{
display: block;
overflow: hidden;
min-height: 100%;
margin: 0;
margin: 0; /* browser adds margin to <figure> by default */
padding: 0;
border-radius: 1.45rem;
background: var(--surface-muted);
align-self: stretch;
min-height: 260px;
}

.blog-hero__media img{
display: block;
width: 100%;
height: 100%;
min-height: 320px;
min-height: 260px;
margin: 0;
object-fit: contain;
object-position: center;
padding: 1rem;
box-sizing: border-box;
}

/* Real photo? Add class="cover" on the <figure> */
.blog-hero__media.cover img{
object-fit: cover;
padding: 0;
}

.blog-article__shell{
Expand Down Expand Up @@ -320,7 +369,6 @@
margin-bottom: 1rem;
}

/* Small, consistent icons only in the blog areas */
.blog-article .post_meta .icon,
.blog-article .post_share .icon,
.posts .icon,
Expand All @@ -332,15 +380,13 @@
opacity: .9;
}

/* Meta “chips” */
.blog-article .meta_item {
display: inline-flex;
align-items: center;
gap: .4rem;
font-size: .95rem;
}

/* Share row */
.blog-article .post_share {
display: inline-flex;
align-items: center;
Expand All @@ -358,35 +404,36 @@
}
.blog-article .post_share a:hover { color: var(--brand); }

/* Tags below meta */
.blog-article .post_tags {
display: inline-flex;
flex-wrap: wrap;
gap: .35rem;
}

/* Thumbnail spacing fix */
.blog-article .excerpt_thumbnail figure { margin: 0; }

/* Safety: never allow gigantic SVGs inside blog content */
.blog-article .post_body svg.icon { width: 1em; height: 1em; }

/* Responsive images in blog content (LCP / defer offscreen images) */
.blog-article .post_body img {
max-width: 100%;
height: auto;
display: block;
}
.blog-article .post_body img:not([width]):not([height]) {
/* Reserve space to reduce CLS when dimensions unknown */
min-height: 1px;
}

/* ── Responsive: blog post page ─────────────────────────────── */
@media (max-width: 900px){
.blog-hero{
grid-template-columns: 1fr;
}

.blog-hero__media{
min-height: 220px;
aspect-ratio: 16 / 9;
}

.blog-article__shell{
grid-template-columns: 1fr;
}
Expand All @@ -404,7 +451,17 @@
}
}

/* Editorial redesign: sharper blog and index presentation */
@media (max-width: 600px){
.blog-hero h1{
font-size: clamp(1.6rem, 7vw, 2.4rem);
}

.blog-hero__media{
aspect-ratio: 4 / 3;
}
}

/* ── Editorial overrides (original design decisions kept) ────── */
.blog-hero{
border: 0;
border-radius: 0;
Expand Down
32 changes: 28 additions & 4 deletions theme/css/nav.css
Original file line number Diff line number Diff line change
Expand Up @@ -184,17 +184,17 @@
color: var(--nav-link); /* inherits your theme */
}

/* Size + feel of the field */
.navbar .searchbar .form-control {
min-width: 20rem; /* adjust as you like */
min-width: 0; /* increased minimum width */
width: 100%;
box-shadow: none !important;
color: var(--nav-link);
}
.navbar .searchbar .form-control::placeholder { opacity: .6; }

/* Tweak for narrower viewports where this form is still visible */
@media (max-width: 1200px){
.navbar .searchbar .form-control { min-width: 14rem; }
.navbar .searchbar .form-control { min-width: 0; width: 100%; }
}

/* Prevent navbar wrapping that shoves items to a new row */
Expand All @@ -213,7 +213,31 @@
.navbar .searchbar {
flex-wrap: nowrap;
align-items: center;
width: clamp(12rem, 22vw, 18rem); /* doesn’t push nav items */
width: clamp(10rem, 20vw, 18rem); /* increased width */
}

/* Place the icon visually inside the input field */
.navbar .searchbar { position: relative; }
.navbar .searchbar .input-group-text {
position: absolute;
left: .6rem;
top: 50%;
transform: translateY(-50%);
background: transparent;
border: 0;
padding: 0;
width: 1.2rem;
display: flex;
align-items: center;
justify-content: center;
pointer-events: none;
color: var(--nav-link);
}
.navbar .searchbar .form-control {
padding-left: calc(1.2rem + .9rem); /* allow space for icon */
}
@media (max-width: 1200px){
.navbar .searchbar .form-control { padding-left: calc(1.2rem + .6rem); }
}

/* Icon inside the input group (independent of your global .icon rules) */
Expand Down
11 changes: 10 additions & 1 deletion theme/css/search.css
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
/* /css/search.css */
.search-popover{
position: absolute;
left: 0;
left: auto;
right: 0;
top: calc(100% + .25rem);
z-index: 1050;

min-width: 260px;
width: max(100%, min(38rem, 100vw));
max-width: min(100vw, 38rem);
box-sizing: border-box;

background: var(--dd-bg, rgba(16,18,27,.98));
border: 1px solid var(--dd-border, rgba(255,255,255,.12));
backdrop-filter: blur(10px);
Expand All @@ -17,6 +22,10 @@
max-height: min(60vh, 520px);
overflow: auto;
}

@media (max-width: 768px) {
.search-popover { width: min(100vw, 24rem); }
}
.search-popover.open{ display: block; }

.sr-item{
Expand Down
Loading