feat(ui): Seitenabschluesse, Wissens-Verzeichnis, Kopfzeile ohne Ueberlauf
- Imkerei, Herkunft und Ernten endeten mit dem letzten Absatz direkt vor der Fusszeile. Neuer PageOutro: zwei naechste Wege als grosse Serif-Links mit Kurztext (Ernten/Shop bzw. Herkunft/Shop). - Kopfzeile: bei 1280 px lief sie 54 px ueber (horizontale Scrollleiste), weil die nicht umbrechbare Slogan-Zeile unter dem Logo schon ab xl erschien. Jetzt erst ab 2xl; geprueft 1024 bis 1920 px ohne Ueberlauf. - Wissen: Inhaltsverzeichnis statt zehn gleicher Bloecke mit je einem "Weiterlesen" - ganze Zeile ist der Link, Titel und Kurztext nebeneinander. Ungenutzter Schluessel readMore entfernt. - Produktseite: bei ein, zwei Empfehlungen steht die Ueberschrift als erste Rasterspalte statt ueber einer einzelnen verlorenen Karte. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
908afebacb
commit
b588975317
10 files changed
+123
-25
No files matched your search
@@ -0,0 +1,49 @@
|
||||
import Link from "next/link";
|
||||
import { Container } from "@/components/ui";
|
||||
|
||||
export interface PageOutroLink {
|
||||
href: string;
|
||||
label: string;
|
||||
text: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Abschluss einer Inhaltsseite (Imkerei, Herkunft, Ernten): zwei naechste
|
||||
* Wege als grosse Serif-Links, getrennt durch eine Linie. Ohne ihn endeten
|
||||
* diese Seiten mit dem letzten Absatz direkt vor der Fusszeile — eine
|
||||
* Sackgasse, gerade fuer Besuch, der ueber die Suche mitten einsteigt.
|
||||
*/
|
||||
export function PageOutro({ links, ariaLabel }: { links: PageOutroLink[]; ariaLabel: string }) {
|
||||
return (
|
||||
<nav aria-label={ariaLabel} className="mt-24 border-t border-ink/10">
|
||||
<Container className="grid md:grid-cols-2">
|
||||
{links.map((link, i) => (
|
||||
<Link
|
||||
key={link.href}
|
||||
href={link.href}
|
||||
className={`group flex items-end justify-between gap-6 py-12 md:py-16 ${
|
||||
i === 0 ? "md:pr-12" : "border-t border-ink/10 md:border-l md:border-t-0 md:pl-12"
|
||||
}`}
|
||||
>
|
||||
<span>
|
||||
<span className="block font-serif text-4xl leading-tight text-forest md:text-5xl">
|
||||
{link.label}
|
||||
</span>
|
||||
<span className="mt-3 block max-w-[40ch] text-sm leading-relaxed text-ink/65">{link.text}</span>
|
||||
</span>
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
aria-hidden="true"
|
||||
className="mb-2 h-6 w-6 flex-shrink-0 text-honey-dark transition-transform duration-500 ease-[var(--ease-arrive)] group-hover:translate-x-1.5 motion-reduce:transition-none"
|
||||
>
|
||||
<path d="M4 12h15M13 6l6 6-6 6" strokeLinecap="round" strokeLinejoin="round" />
|
||||
</svg>
|
||||
</Link>
|
||||
))}
|
||||
</Container>
|
||||
</nav>
|
||||
);
|
||||
}
|
||||
@@ -84,7 +84,7 @@ function Logo({ t, companyName, logoSrc }: { t: Dictionary; companyName: string;
|
||||
<span className="text-2xl tracking-[0.2em] text-forest font-serif">
|
||||
{companyName}
|
||||
</span>
|
||||
<span className="hidden xl:block text-[10px] tracking-[0.3em] uppercase text-honey-dark mt-1 whitespace-nowrap">
|
||||
<span className="hidden 2xl:block text-[10px] tracking-[0.3em] uppercase text-honey-dark mt-1 whitespace-nowrap">
|
||||
{t.footer.tagline}
|
||||
</span>
|
||||
</span>
|
||||
|
||||
Reference in new issue
Block a user