bugs and fixes
This commit is contained in:
@@ -146,9 +146,6 @@ export default function Search() {
|
||||
<path d="m21 21-4.3-4.3" />
|
||||
</svg>
|
||||
<span className="tc-label">Search</span>
|
||||
<kbd className="tc-kbd">
|
||||
<span>{isMac ? '⌘' : 'Ctrl'}</span><span className="opacity-50">+</span><span>K</span>
|
||||
</kbd>
|
||||
</button>
|
||||
|
||||
{open && (
|
||||
|
||||
@@ -469,7 +469,7 @@ export default function Editor({ editSlug }: Props) {
|
||||
{/* Slug */}
|
||||
<div>
|
||||
<label className="field-label">
|
||||
Slug <span className="normal-case tracking-normal text-[var(--overlay0)] italic font-display">— auto-derived from title</span>
|
||||
Slug <span className="slug-hint normal-case tracking-normal text-[var(--overlay0)] italic font-display">— auto-derived from title</span>
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
|
||||
@@ -130,11 +130,19 @@ const hasContact = (siteConfig.contact_links?.length ?? 0) > 0;
|
||||
)}
|
||||
<Search client:idle />
|
||||
<ThemeSwitcher client:only="react" defaultTheme={siteConfig.theme} />
|
||||
{isAdmin && (
|
||||
<>
|
||||
<span class="topbar-divider" aria-hidden="true"></span>
|
||||
{isAdmin ? (
|
||||
<LogoutButton client:idle />
|
||||
</>
|
||||
) : (
|
||||
<a
|
||||
href="/admin/login"
|
||||
class="topbar-control tc-collapse-sm"
|
||||
aria-label="Admin login"
|
||||
title="Admin login"
|
||||
>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 18v3c0 .6.4 1 1 1h4v-3h3v-3h2l1.4-1.4a6.5 6.5 0 1 0-4-4Z"/><circle cx="16.5" cy="7.5" r=".5" fill="currentColor"/></svg>
|
||||
<span class="tc-label">Admin</span>
|
||||
</a>
|
||||
)}
|
||||
</nav>
|
||||
)}
|
||||
@@ -173,16 +181,10 @@ const hasContact = (siteConfig.contact_links?.length ?? 0) > 0;
|
||||
<a href="/contact" class="hover:text-[var(--mauve)] transition-colors">Contact</a>
|
||||
</>
|
||||
)}
|
||||
{!isAdmin && (
|
||||
<>
|
||||
<span class="text-[var(--overlay0)]" aria-hidden="true">·</span>
|
||||
<a href="/admin/login" class="hover:text-[var(--mauve)] transition-colors">Admin login</a>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
<div class="text-[var(--overlay0)] text-xs italic">
|
||||
<div class="site-copyright text-[var(--overlay0)] text-xs italic">
|
||||
© {year} · {siteConfig.title}
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@@ -60,7 +60,7 @@ function obfuscateEmail(addr: string): { user: string; host: string; display: st
|
||||
<section class="max-w-2xl mx-auto">
|
||||
<div class="mb-10 md:mb-14">
|
||||
<div class="font-display italic text-[var(--subtext0)] text-xs tracking-[0.3em] uppercase mb-4">Correspondence</div>
|
||||
<h1 class="font-display italic font-semibold text-[var(--text)] text-5xl md:text-6xl leading-[0.95] tracking-tight mb-6">
|
||||
<h1 class="font-display italic font-semibold text-[var(--text)] text-5xl md:text-6xl leading-[1.08] tracking-tight mb-6">
|
||||
Get in touch
|
||||
</h1>
|
||||
{intro && (
|
||||
|
||||
@@ -68,7 +68,7 @@ const isAdmin = Astro.cookies.get('admin_session')?.value === '1';
|
||||
)}
|
||||
<section class="relative mb-16 md:mb-24">
|
||||
<div class="max-w-2xl">
|
||||
<h1 class="font-display italic font-semibold text-[var(--text)] text-5xl md:text-7xl lg:text-8xl leading-[0.95] tracking-tight mb-6">
|
||||
<h1 class="font-display italic font-semibold text-[var(--text)] text-5xl md:text-7xl lg:text-8xl leading-[1.08] tracking-tight mb-6">
|
||||
{isAdmin ? (
|
||||
<EditableText
|
||||
client:visible
|
||||
|
||||
@@ -110,7 +110,7 @@ const displayTitle = post ? (post.title || formatSlug(post.slug)) : 'Work';
|
||||
|
||||
{/* Plaque header */}
|
||||
<header class="max-w-3xl mx-auto text-center mb-12 md:mb-16">
|
||||
<h1 class="font-display italic font-semibold text-[var(--text)] text-4xl md:text-6xl lg:text-7xl leading-[0.95] tracking-tight mb-6">
|
||||
<h1 class="font-display italic font-semibold text-[var(--text)] text-4xl md:text-6xl lg:text-7xl leading-[1.08] tracking-tight mb-6">
|
||||
{displayTitle}
|
||||
</h1>
|
||||
|
||||
|
||||
@@ -330,8 +330,9 @@ code, pre, kbd, samp {
|
||||
font-style: italic;
|
||||
color: var(--text);
|
||||
margin: 0 0 1.25rem;
|
||||
line-height: 1.05;
|
||||
line-height: 1.15;
|
||||
letter-spacing: -0.02em;
|
||||
padding-bottom: 0.06em;
|
||||
}
|
||||
.prose h2 {
|
||||
font-family: var(--font-display);
|
||||
@@ -741,13 +742,18 @@ code, pre, kbd, samp {
|
||||
font-style: italic;
|
||||
font-weight: 500;
|
||||
font-size: 1.18rem;
|
||||
line-height: 1.18;
|
||||
line-height: 1.3;
|
||||
color: var(--text);
|
||||
letter-spacing: -0.005em;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
/* line-clamp's overflow:hidden clips italic-Fraunces descenders (g, y, p).
|
||||
* Pad the clip box and pull the layout back with a matching negative
|
||||
* margin so descenders survive without shifting siblings. */
|
||||
padding-bottom: 0.16em;
|
||||
margin-bottom: -0.16em;
|
||||
transition: color 0.25s ease;
|
||||
}
|
||||
.plate:hover .plate-caption-title {
|
||||
@@ -757,12 +763,14 @@ code, pre, kbd, samp {
|
||||
font-family: var(--font-sans);
|
||||
font-style: italic;
|
||||
font-size: 0.82rem;
|
||||
line-height: 1.4;
|
||||
line-height: 1.45;
|
||||
color: var(--subtext0);
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
padding-bottom: 0.14em;
|
||||
margin-bottom: -0.14em;
|
||||
}
|
||||
.plate .plate-caption-meta {
|
||||
font-family: var(--font-sans);
|
||||
@@ -823,7 +831,7 @@ code, pre, kbd, samp {
|
||||
font-size: 1.6rem;
|
||||
letter-spacing: -0.01em;
|
||||
color: var(--text);
|
||||
line-height: 1;
|
||||
line-height: 1.12;
|
||||
}
|
||||
.nameplate-subtitle {
|
||||
font-family: var(--font-sans);
|
||||
@@ -1116,9 +1124,6 @@ select.topbar-control.theme-select {
|
||||
* phones. Written unlayered (not Tailwind utilities) so it reliably wins
|
||||
* over the `.topbar-control` base in the Tailwind v4 cascade. */
|
||||
.topbar-control .tc-label { display: inline; }
|
||||
@media (max-width: 1023px) {
|
||||
.topbar-control .tc-kbd { display: none; }
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.topbar-control.tc-collapse-md { width: 2rem; padding: 0; }
|
||||
.topbar-control.tc-collapse-md .tc-label { display: none; }
|
||||
@@ -1368,18 +1373,32 @@ input[type="date"] { color-scheme: light; }
|
||||
}
|
||||
.breakcore .section-rule::before,
|
||||
.breakcore .section-rule::after {
|
||||
height: 6px;
|
||||
opacity: 0.55;
|
||||
background: repeating-linear-gradient(
|
||||
45deg,
|
||||
var(--yellow) 0 8px,
|
||||
var(--crust) 8px 16px
|
||||
height: 1px;
|
||||
opacity: 0.85;
|
||||
background: linear-gradient(
|
||||
to right,
|
||||
transparent,
|
||||
color-mix(in srgb, var(--mauve) 70%, transparent) 45%,
|
||||
color-mix(in srgb, var(--teal) 70%, transparent) 55%,
|
||||
transparent
|
||||
);
|
||||
}
|
||||
.breakcore .section-rule .ornament {
|
||||
color: var(--mauve);
|
||||
}
|
||||
|
||||
/* Readability — `--overlay0` (#5A2D8E) is near-invisible on the breakcore
|
||||
* ground. Lift the spots that use it as actual copy to the readable
|
||||
* subtext ramp. */
|
||||
.breakcore .prose h6,
|
||||
.breakcore .prose del,
|
||||
.breakcore .hljs-comment,
|
||||
.breakcore .hljs-quote,
|
||||
.breakcore .site-copyright,
|
||||
.breakcore .slug-hint {
|
||||
color: var(--subtext0);
|
||||
}
|
||||
|
||||
/* Chips — neon outline, monospace caps. */
|
||||
.breakcore .chip {
|
||||
background: transparent;
|
||||
@@ -1518,22 +1537,17 @@ input[type="date"] { color-scheme: light; }
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
/* Breakcore: hard edges + hazard cap + chromatic title. */
|
||||
/* Breakcore: hard edges + neon cap + chromatic title. */
|
||||
.breakcore .cdialog-panel {
|
||||
border-radius: 0;
|
||||
padding-top: 1.9rem;
|
||||
padding-top: 1.85rem;
|
||||
}
|
||||
.breakcore .cdialog-panel::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0 0 auto 0;
|
||||
height: 5px;
|
||||
background: repeating-linear-gradient(
|
||||
45deg,
|
||||
var(--yellow) 0 8px,
|
||||
var(--crust) 8px 16px
|
||||
);
|
||||
opacity: 0.6;
|
||||
height: 2px;
|
||||
background: linear-gradient(90deg, var(--mauve), var(--teal));
|
||||
}
|
||||
.breakcore .cdialog-title {
|
||||
text-shadow: -1px 0 0 var(--teal), 1px 0 0 var(--mauve);
|
||||
|
||||
Reference in New Issue
Block a user