feat(brand): ganzes T der Bildmarke übernimmt die Akzentfarbe – Kacheln als abgeleiteter dunklerer Ton
- BRAND_OLIVE_MIX (54 %, #363636) und BRAND_OLIVE_FILL in brand.ts, Kalibrierung kommentiert - vier achsenparallele Kacheln in tessera-logo.tsx: Inline-Style BRAND_OLIVE_FILL, festes Oliv-Attribut als Rückfall - brand.test.ts (neu): rechnet Kalibrierung, Neutralität und Grenzfälle aus denselben Konstanten nach - tessera-logo.test.tsx: Kacheltest auf Token-Fuellung (1x) und abgeleitete Fuellung (4x) umgestellt Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
'use client';
|
||||
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { BRAND_OLIVE, BRAND_PLATE, BRAND_YELLOW } from './brand';
|
||||
import { BRAND_OLIVE, BRAND_OLIVE_FILL, BRAND_PLATE, BRAND_YELLOW } from './brand';
|
||||
|
||||
export type TesseraLogoVariant = 'mark' | 'horizontal';
|
||||
|
||||
@@ -66,16 +66,39 @@ function LogoMark({
|
||||
: 'stroke-transparent'
|
||||
}
|
||||
/>
|
||||
{/*
|
||||
Alle fuenf Kacheln folgen `--primary`: die gedrehte Signalkachel
|
||||
direkt, die vier anderen als abgeleiteter dunklerer Ton
|
||||
(BRAND_OLIVE_FILL, Kalibrierung in brand.ts). `var()`/`color-mix()`
|
||||
sind in SVG-Praesentationsattributen nicht zuverlaessig, im
|
||||
Inline-Style schon -- deshalb tragen alle fuenf Kacheln ihre
|
||||
Akzentfarben-Fuellung als Inline-Style. Der feste Olivton bleibt an
|
||||
den vier Kacheln zusaetzlich als Praesentationsattribut stehen: ein
|
||||
Browser ohne `color-mix()`-Unterstuetzung verwirft die
|
||||
Inline-Deklaration, und ohne dieses Attribut waere die Kachel
|
||||
schwarz (SVG-Standardfuellung). `--primary` wird von
|
||||
applyAccentColor() in auth-store.ts gesetzt und hat in globals.css
|
||||
immer einen Standardwert (oklch(0.91 0.19 102), Markengelb).
|
||||
*/}
|
||||
<g>
|
||||
<rect x="16" y="16" width="12" height="12" rx="2.5" fill={BRAND_OLIVE} />
|
||||
<rect x="30" y="16" width="12" height="12" rx="2.5" fill={BRAND_OLIVE} />
|
||||
{/*
|
||||
`var()` ist in SVG-Praesentationsattributen (fill="...") nicht
|
||||
zuverlaessig, im Inline-Style schon — deshalb hier style statt fill.
|
||||
`--primary` wird von applyAccentColor() in auth-store.ts gesetzt;
|
||||
ohne angemeldeten Nutzer (z. B. Anmeldeseite) ist der Token nicht
|
||||
definiert und der Rueckfall in var() greift: BRAND_YELLOW.
|
||||
*/}
|
||||
<rect
|
||||
x="16"
|
||||
y="16"
|
||||
width="12"
|
||||
height="12"
|
||||
rx="2.5"
|
||||
fill={BRAND_OLIVE}
|
||||
style={{ fill: BRAND_OLIVE_FILL }}
|
||||
/>
|
||||
<rect
|
||||
x="30"
|
||||
y="16"
|
||||
width="12"
|
||||
height="12"
|
||||
rx="2.5"
|
||||
fill={BRAND_OLIVE}
|
||||
style={{ fill: BRAND_OLIVE_FILL }}
|
||||
/>
|
||||
<rect
|
||||
x="45"
|
||||
y="15"
|
||||
@@ -85,8 +108,24 @@ function LogoMark({
|
||||
transform="rotate(12 51 21)"
|
||||
style={{ fill: `var(--primary, ${BRAND_YELLOW})` }}
|
||||
/>
|
||||
<rect x="30" y="30" width="12" height="12" rx="2.5" fill={BRAND_OLIVE} />
|
||||
<rect x="30" y="44" width="12" height="12" rx="2.5" fill={BRAND_OLIVE} />
|
||||
<rect
|
||||
x="30"
|
||||
y="30"
|
||||
width="12"
|
||||
height="12"
|
||||
rx="2.5"
|
||||
fill={BRAND_OLIVE}
|
||||
style={{ fill: BRAND_OLIVE_FILL }}
|
||||
/>
|
||||
<rect
|
||||
x="30"
|
||||
y="44"
|
||||
width="12"
|
||||
height="12"
|
||||
rx="2.5"
|
||||
fill={BRAND_OLIVE}
|
||||
style={{ fill: BRAND_OLIVE_FILL }}
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
);
|
||||
@@ -98,8 +137,9 @@ function LogoMark({
|
||||
* mandantenspezifische Gestaltung setzt hier an, nicht an den einzelnen
|
||||
* Verwendungsstellen.
|
||||
*
|
||||
* Die gedrehte Signalkachel der Bildmarke folgt der persoenlichen
|
||||
* Akzentfarbe (CSS-Token `--primary`, siehe LogoMark).
|
||||
* 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',
|
||||
|
||||
Reference in New Issue
Block a user