add2176a6b
- offer editor: per-tier name input (mirrors public_name/internal_name) - offer list cards: show 3-tier services total + manual public price - shared PageHeader component, full-width layout across all admin pages - UI-RULES.md design conventions doc Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
18 lines
450 B
TypeScript
18 lines
450 B
TypeScript
import type { ReactNode } from "react";
|
|
|
|
export function PageHeader({ title, subtitle, action }: {
|
|
title: string;
|
|
subtitle?: string;
|
|
action?: ReactNode;
|
|
}) {
|
|
return (
|
|
<div className="mb-6 flex items-start justify-between gap-4">
|
|
<div>
|
|
<h1 className="text-2xl font-bold text-[#1a1a1a]">{title}</h1>
|
|
{subtitle && <p className="mt-1 text-sm text-[#71717a]">{subtitle}</p>}
|
|
</div>
|
|
{action}
|
|
</div>
|
|
);
|
|
}
|