import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; import { ArrowLeft } from "lucide-react"; import type { ReactNode } from "react"; import { Link } from "wouter"; export function PortalDashboardHeader({ title, description, actions, backHref = "/dashboard", className, contentClassName, tourId, }: { title: string; description?: string; actions?: ReactNode; backHref?: string; className?: string; contentClassName?: string; tourId?: string; }) { return (
); } export function PortalPageHeader({ title, description, actions, }: { title: string; description?: string; actions?: ReactNode; }) { return (

{title}

{description ?

{description}

: null}
{actions ?
{actions}
: null}
); } export function PortalSectionIntro({ eyebrow, title, description, aside, className, eyebrowClassName, titleClassName, descriptionClassName, }: { eyebrow?: string; title: string; description?: string; aside?: ReactNode; className?: string; eyebrowClassName?: string; titleClassName?: string; descriptionClassName?: string; }) { return (
{eyebrow ? (

{eyebrow}

) : null}

{title}

{description ?

{description}

: null}
{aside ? (
{aside}
) : null}
); } export function PortalSurface({ title, description, badge, children, className, bodyClassName, }: { title?: string; description?: string; badge?: ReactNode; children: ReactNode; className?: string; bodyClassName?: string; }) { return (
{title || description || badge ? (
{title ?

{title}

: null} {description ?

{description}

: null}
{badge ?
{badge}
: null}
) : null}
{children}
); } export function PortalMetricTile({ label, value, detail, tone = "default", }: { label: string; value: ReactNode; detail?: ReactNode; tone?: "default" | "success" | "info" | "warning"; }) { const toneClassName = tone === "success" ? "border-emerald-200 bg-emerald-50" : tone === "info" ? "border-blue-200 bg-blue-50" : tone === "warning" ? "border-amber-200 bg-amber-50" : "border-slate-200 bg-white"; return (

{label}

{value}
{detail ?
{detail}
: null}
); } export function PortalActionGroup({ children, className, }: { children: ReactNode; className?: string; }) { return
{children}
; }