---
/**
* — the one true mark, rendered as text.
*
* Brand rules (org-site-v2 / dc.css):
* - JetBrains Mono, bold, ligatures off.
* - Brackets sit at ~70% opacity on dark surfaces (default), ~50% on
* light — dark needs more help holding presence; light already has
* enough contrast.
* - The mark never wraps on its own.
* - When it *must* split (narrow contexts, avatars, logo lockup), the
* only sanctioned break is at the dot: "".
* Enable with `collapsed`.
*/
type Size = "hero" | "nav" | "footer" | "inline" | number;
type Mode = "green" | "ink" | "inherit";
interface Props {
/** "hero" = responsive clamp(36px, 7vw, 76px); "nav" = 14px; "footer"/"inline" = inherit. Or a number in px. */
size?: Size;
/** Color treatment. Default "ink". Brand rule: green only on dark. */
mode?: Mode;
/** Override bracket opacity (0–1). Default: 0.7 (dark). */
bracketOpacity?: number;
/** Break at the dot — renders as two lines: "". The only sanctioned split. */
collapsed?: boolean;
/** Extra utility classes applied to the outer span. */
class?: string;
}
const {
size = "nav",
mode = "ink",
bracketOpacity,
collapsed = false,
class: className = "",
} = Astro.props;
const resolvedOpacity = bracketOpacity ?? 0.7;
const fontSize =
size === "hero"
? "clamp(36px, 7vw, 76px)"
: size === "nav"
? "14px"
: size === "footer"
? "13px"
: size === "inline"
? "inherit"
: `${size}px`;
const tracking = size === "hero" ? "-0.03em" : "-0.02em";
const modeClass =
mode === "green" ? "text-green" : mode === "ink" ? "text-ink" : "";
const baseClass = [
"mono font-bold whitespace-nowrap border-none",
collapsed ? "inline-block leading-[1.08]" : "inline-block leading-none",
modeClass,
className,
];
const styleAttr = `font-size: ${fontSize}; letter-spacing: ${tracking};`;
const openBracketStyle = `opacity: ${resolvedOpacity};`;
const closeBracketStyle = `opacity: ${resolvedOpacity};`;
---
{collapsed ? (
<dummy.cafe />
) : (
<dummy.cafe />
)}