'use client';
import { useTranslations } from 'next-intl';
import { BRAND_OLIVE, BRAND_OLIVE_FILL, BRAND_PLATE, BRAND_YELLOW } from './brand';
export type TesseraLogoVariant = 'mark' | 'horizontal';
export interface TesseraLogoProps {
/** Welche Bausteine gerendert werden. Vorgabe: `'horizontal'`. */
variant?: TesseraLogoVariant;
/** Kantenlaenge der Bildmarke in Pixeln. Vorgabe: 32. */
size?: number;
/**
* Optionaler Untertitel unter dem Schriftzug, rechts neben der Bildmarke —
* die Anordnung der gelieferten Datei `tessera-logo-schriftzug.svg`. Ohne
* Angabe steht rechts nur der Name. Nur fuer `variant="horizontal"`.
*/
tagline?: string;
/**
* Schaltet die halbtransparente helle Kontur der Grundplatte im dunklen
* Erscheinungsbild ein. Auf Flaechen, die unabhaengig vom
* Erscheinungsbild immer hell sind (etwa das gelbe Anmelde-Panel), muss
* dies auf `false` gesetzt werden. Vorgabe: `true`.
*/
plateOutline?: boolean;
/** Zusaetzliche Klassen fuer das aeusserste Element der gewaehlten Variante. */
className?: string;
/** Zusaetzliche Klassen fuer den Schriftzug (nur `horizontal`). */
wordmarkClassName?: string;
/** Zusaetzliche Klassen fuer den Untertitel (nur zusammen mit `tagline`). */
taglineClassName?: string;
}
function LogoMark({
size,
plateOutline,
className,
ariaLabel,
}: {
size: number;
plateOutline: boolean;
className?: string;
ariaLabel: string;
}) {
return (
);
}
/**
* Zentrale Bildmarken-Komponente von Tessera. Buendelt die Bildmarke, den
* Schriftzug und deren Anordnung an einer einzigen Stelle -- eine spaetere
* mandantenspezifische Gestaltung setzt hier an, nicht an den einzelnen
* Verwendungsstellen.
*
* Die gesamte Bildmarke folgt der persoenlichen Akzentfarbe (CSS-Token
* `--primary`, siehe LogoMark): die gedrehte Signalkachel direkt, die vier
* anderen als daraus abgeleiteter dunklerer Ton (siehe brand.ts).
*/
export function TesseraLogo({
variant = 'horizontal',
size = 32,
tagline,
plateOutline = true,
className,
wordmarkClassName,
taglineClassName,
}: TesseraLogoProps) {
const t = useTranslations('common');
const ariaLabel = t('brand.logoAlt');
if (variant === 'mark') {
return (
);
}
// Bildmarke links, Schriftzug rechts daneben. Traegt die Komponente einen
// Untertitel, steht er unter dem Namen — dieselbe Anordnung wie in der
// gelieferten Datei `tessera-logo-schriftzug.svg`.
return (
{t('appName')}
{tagline ? (
{tagline}
) : null}
);
}