import { type HTMLAttributes, type ReactNode } from 'react';
import { pageContainerVariants, type PageContainerSize } from '@lib/theme/variants';
import { cn } from '@lib/utils/cn';

export interface PageContainerProps extends HTMLAttributes<HTMLDivElement> {
  size?: PageContainerSize;
  /** 지도/3단 패널 등 풀화면 페이지: padding 0, space-y 0 */
  fullBleed?: boolean;
  children: ReactNode;
}

/**
 * PageContainer — 모든 feature 페이지의 표준 루트 컨테이너
 *
 * 기본값: `p-5 space-y-4` (프로젝트 전역 기준)
 * - size="sm" → p-4 space-y-3
 * - size="lg" → p-6 space-y-4 (admin 계열)
 * - fullBleed → padding 없음 (LiveMapView, VesselDetail 패턴)
 *
 * ESLint rule로 feature 페이지 루트는 PageContainer 필수 강제 (예정).
 */
export function PageContainer({
  className,
  size,
  fullBleed,
  children,
  ...props
}: PageContainerProps) {
  return (
    <div className={cn(pageContainerVariants({ size, fullBleed }), className)} {...props}>
      {children}
    </div>
  );
}
