"use client";
import { Button } from "@openstatus/ui/components/ui/button";
import { cn } from "@openstatus/ui/lib/utils";
/**
* StatusPageHeader — presentation-only header chrome.
*
* Compose with `StatusPageHeaderContent`, `StatusPageHeaderBrand`,
* `StatusPageHeaderNav` (+ `Item`), and `StatusPageHeaderActions`. Embed
* gating, route-aware active state, mobile menu shell, brand link target,
* and tRPC fetch all stay in the wrapping app.
*/
export function StatusPageHeader({
className,
...props
}: React.ComponentProps<"header">) {
return (
);
}
export function StatusPageHeaderContent({
className,
...props
}: React.ComponentProps<"nav">) {
return (
);
}
/**
* StatusPageHeaderBrand — left-side fixed-width slot. Pass the brand button
* (with link target) as children.
*/
export function StatusPageHeaderBrand({
className,
...props
}: React.ComponentProps<"div">) {
return (
);
}
/**
* StatusPageHeaderBrandButton — outlined size-8 icon button that hosts the
* brand link. Pass the actual link element as children via `asChild`.
*/
export function StatusPageHeaderBrandButton({
className,
...props
}: React.ComponentProps) {
return (
);
}
/**
* StatusPageHeaderBrandFallback — letter-from-title typography used when no
* page icon is present. Renders the first character of up to two words,
* uppercased.
*/
export function StatusPageHeaderBrandFallback({
title,
className,
...props
}: Omit, "children"> & { title?: string }) {
const initials =
(title ?? "")
.trim()
.split(/\s+/)
.filter(Boolean)
.map((word) => word.charAt(0))
.slice(0, 2)
.join("")
.toUpperCase() || "?";
return (
{initials}
);
}
/**
* StatusPageHeaderNav — desktop nav list. Compose with
* `StatusPageHeaderNavItem` children.
*/
export function StatusPageHeaderNav({
className,
...props
}: React.ComponentProps<"ul">) {
return (
);
}
/**
* StatusPageHeaderNavItem — single nav entry. Pass the link element via
* `asChild`; the block renders the Button chrome and active styling.
*/
export function StatusPageHeaderNavItem({
isActive,
className,
...props
}: React.ComponentProps & { isActive?: boolean }) {
return (
);
}
/**
* StatusPageHeaderActions — right-side fixed-width cluster (subscribe,
* contact, mobile-menu trigger). Pass actions as children; the block is
* layout-only.
*/
export function StatusPageHeaderActions({
className,
...props
}: React.ComponentProps<"div">) {
return (
);
}