presseportale/resources/views/components/web/brand-mark.blade.php
Kevin Adametz 9b47296cea
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run
Rebrand Hub+Flux
2026-05-20 15:44:15 +02:00

98 lines
3.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@props([
'brand' => 'pressekonto',
'variant' => 'auto',
'serif' => true,
])
@php
/**
* Zentrale Brand-Wortmarke für alle drei Marken der Verlags-Familie.
*
* Schreibweise (verbindlich):
* - presseecho → "presse" + "echo" (echo grün)
* - businessportal24 → "businessportal" + "24" (24 orange)
* - pressekonto → "presse" + "konto" (konto bernstein)
*
* Keine TLD-Endung (".de", ".com") direkt am Markennamen. Diese gehören
* falls überhaupt getrennt in den juristischen Bereich (Impressum, Kontakt).
*
* Schriftart:
* - Standard `font-serif` (Source Serif 4) passt zum Editorial-Charakter
* aller drei Portale.
* - `:serif="false"` schaltet auf font-sans (Inter Tight) etwa für die
* Top-Utility-Bar, in der die Marken sehr klein erscheinen.
*
* Variant:
* - `auto` → Name + Akzent in den Marken-Standardfarben (auf hellem Grund)
* - `on-dark` → Name in Weiß (Negativ), Akzent in der dunkel-tauglichen Variante
* - `mono` → Name + Akzent erben vom Parent (z. B. wenn beides weiß sein soll)
*
* Logo-Farben (siehe Brand-Manual):
* - businessportal: #232A33 (auf hell) / #FFFFFF (negativ)
* - presse (Echo): #1B2417 (auf hell) / #FFFFFF (negativ)
* - presse (Konto): #1A2540 (auf hell) / #FFFFFF (negativ)
* - 24: #C84A1E immer
* - echo: #345636 (auf hell) / #9BD5B2 (negativ)
* - konto: #B07A3A immer
*/
$marks = [
'presseecho' => [
'name' => 'presse',
'accent' => 'echo',
'name_color_auto' => '#1B2417',
'name_color_on_dark' => '#FFFFFF',
'accent_color_auto' => '#345636',
'accent_color_on_dark' => '#9BD5B2',
],
'businessportal24' => [
'name' => 'businessportal',
'accent' => '24',
'name_color_auto' => '#232A33',
'name_color_on_dark' => '#FFFFFF',
'accent_color_auto' => '#C84A1E',
'accent_color_on_dark' => '#C84A1E',
],
'pressekonto' => [
'name' => 'presse',
'accent' => 'konto',
'name_color_auto' => '#1A2540',
'name_color_on_dark' => '#FFFFFF',
'accent_color_auto' => '#B07A3A',
'accent_color_on_dark' => '#B07A3A',
],
];
$mark = $marks[$brand] ?? $marks['pressekonto'];
$nameColor = match ($variant) {
'on-dark' => $mark['name_color_on_dark'],
'mono' => 'inherit',
default => $mark['name_color_auto'],
};
$accentColor = match ($variant) {
'on-dark' => $mark['accent_color_on_dark'],
'mono' => 'inherit',
default => $mark['accent_color_auto'],
};
$fontClass = $serif ? 'font-serif' : 'font-sans';
$baseAttributes = $attributes->merge(['class' => $fontClass]);
/**
* Variant=auto: Inline-Color über CSS-Custom-Property mit Light-Fallback.
* Damit kann das Portal im Dark Mode `--brand-mark-name-color` global auf
* weiß setzen, ohne dass das Hub-Frontend (Light-Only) tangiert wird —
* dort ist die Variable nie definiert und der Fallback (Marken-Standardfarbe)
* greift. Bei `on-dark` und `mono` bleibt der Inline-Style hart, weil der
* Aufrufer dort explizit eine Farb-Intention setzt.
*/
$nameStyle = $variant === 'auto'
? "color: var(--brand-mark-name-color, {$nameColor});"
: "color: {$nameColor};";
@endphp
<span {{ $baseAttributes }}><span
style="{{ $nameStyle }}">{{ $mark['name'] }}</span><span
style="color: {{ $accentColor }};">{{ $mark['accent'] }}</span></span>