Files
mintel.me/apps/web/src/components/site/ButtonLink.tsx
T
mmintelandClaude Sonnet 5.5 f258e2a483 feat: dark theme foundation, new header/footer, shared site primitives
Adds dark design tokens, Inter + JetBrains Mono, a header with Notes,
Process, About and a Book a call button, and a footer with the availability
line driven by the tested domain core. Shared primitives live in
src/components/site, site constants in src/content/site.ts. Legacy pages
(blog, legal, contact, tags, technologies) keep a light surface via
LegacyLightSurface. Stub routes for /notes, /process and /book.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-03 19:00:07 +02:00

32 lines
936 B
TypeScript

import Link from "next/link";
import * as React from "react";
type ButtonVariant = "primary" | "secondary";
type ButtonLinkProps = {
readonly href: string;
readonly children: React.ReactNode;
readonly variant?: ButtonVariant;
readonly className?: string;
};
const BASE =
"inline-flex items-center justify-center rounded-md px-5 py-2.5 text-sm font-semibold transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent";
const VARIANTS: Record<ButtonVariant, string> = {
primary: "bg-accent !text-accent-fg hover:bg-accent-hover",
secondary:
"border border-border-strong !text-fg hover:border-muted hover:bg-surface",
};
export const ButtonLink: React.FC<ButtonLinkProps> = ({
href,
children,
variant = "primary",
className = "",
}) => (
<Link href={href} className={`${BASE} ${VARIANTS[variant]} ${className}`}>
{children}
</Link>
);