Rocky_Mountain_Vending/components/page-wrapper.tsx
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

52 lines
1.1 KiB
TypeScript

import { ReactNode } from "react"
interface PageWrapperProps {
children: ReactNode;
maxWidth?: "4xl" | "5xl" | "6xl" | "7xl" | "full";
className?: string;
}
export function PageWrapper({ children, maxWidth = "4xl", className = "" }: PageWrapperProps) {
const maxWidthClass = {
"4xl": "max-w-4xl",
"5xl": "max-w-5xl",
"6xl": "max-w-6xl",
"7xl": "max-w-7xl",
"full": "max-w-full",
}[maxWidth];
return (
<div className={`container mx-auto px-4 py-8 md:py-12 ${maxWidthClass} ${className}`}>
{children}
</div>
);
}
interface PageHeaderProps {
title: string;
subtitle?: string;
className?: string;
}
export function PageHeader({ title, subtitle, className = "" }: PageHeaderProps) {
return (
<div className={`mb-8 md:mb-12 text-center ${className}`}>
<h1 className="text-4xl md:text-5xl lg:text-6xl font-bold mb-4 tracking-tight text-balance">
{title}
</h1>
{subtitle && (
<p className="text-xl md:text-2xl text-muted-foreground max-w-3xl mx-auto text-balance">
{subtitle}
</p>
)}
</div>
);
}