All checks were successful
Container-Image bauen und veröffentlichen / build-and-push (push) Successful in 5m15s
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
"use client"
|
|
|
|
import { ShieldCheck } from "lucide-react"
|
|
|
|
import { useAppName } from "@/components/providers/app-config-provider"
|
|
import { DEFAULT_APP_NAME } from "@/lib/app-config"
|
|
import { cn } from "@/lib/utils"
|
|
|
|
interface BrandProps {
|
|
className?: string
|
|
subtitle?: string
|
|
}
|
|
|
|
export function Brand({ className, subtitle }: BrandProps) {
|
|
const name = useAppName()
|
|
|
|
return (
|
|
<div className={cn("flex items-center gap-2.5", className)}>
|
|
<div className="flex size-8 shrink-0 items-center justify-center rounded-lg bg-brand text-brand-foreground">
|
|
<ShieldCheck className="size-4.5" />
|
|
</div>
|
|
<div className="flex min-w-0 flex-wrap items-baseline gap-2">
|
|
<span className="text-base leading-none font-semibold tracking-tight">
|
|
{name === DEFAULT_APP_NAME ? (
|
|
// Der Vorgabename wird zweifarbig gesetzt; ein konfigurierter
|
|
// Firmenname bleibt unangetastet.
|
|
<>
|
|
Syncova
|
|
<span className="font-normal text-muted-foreground"> Policies</span>
|
|
</>
|
|
) : (
|
|
name
|
|
)}
|
|
</span>
|
|
{subtitle && (
|
|
<span className="hidden text-sm leading-none text-muted-foreground sm:inline">
|
|
· {subtitle}
|
|
</span>
|
|
)}
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|