import { cn } from "@/lib/utils";

/** Arch-shaped photo frame with a fine champagne-gold keyline. */
export function ArchImage({
  src,
  alt,
  className,
  imgClassName,
  frame = true,
  small = false,
}: {
  src: string;
  alt: string;
  className?: string;
  imgClassName?: string;
  frame?: boolean;
  small?: boolean;
}) {
  return (
    <div
      className={cn(
        small ? "arch-sm" : "arch",
        "relative h-full w-full",
        frame && "outline outline-gold/40 outline-offset-[10px]",
        className,
      )}
    >
      <img
        src={src}
        alt={alt}
        loading="lazy"
        className={cn("h-full w-full object-cover", imgClassName)}
      />
    </div>
  );
}

/** Faint oversized script monogram watermark for section backgrounds. */
export function MonogramWatermark({
  className,
  text = "ESj",
}: {
  className?: string;
  text?: string;
}) {
  return (
    <span aria-hidden="true" className={cn("monogram-watermark", className)}>
      {text}
    </span>
  );
}

/** Soft plant-leaf shadow layer. */
export function LeafShadow({ className }: { className?: string }) {
  return <div aria-hidden="true" className={cn("leaf-glow absolute inset-0", className)} />;
}

/** Circular badge with a fine line icon, in one of the four brand tones. */
const badgeTones = {
  jungle: "bg-jungle text-ivory",
  gold: "bg-gold text-jungle-deep",
  terra: "bg-terra text-ivory",
  charcoal: "bg-charcoal text-ivory",
} as const;

export function CircleBadge({
  tone = "gold",
  children,
  className,
}: {
  tone?: keyof typeof badgeTones;
  children: React.ReactNode;
  className?: string;
}) {
  return (
    <span
      className={cn(
        "inline-flex h-12 w-12 shrink-0 items-center justify-center rounded-full border-2",
        tone === "gold" ? "border-jungle-deep/10" : "border-ivory/20",
        badgeTones[tone],
        className,
      )}
    >
      {children}
    </span>
  );
}

/** Thin champagne-gold hairline divider with a centered diamond. */
export function GoldRule({ className }: { className?: string }) {
  return (
    <div className={cn("flex items-center justify-center gap-3", className)} aria-hidden="true">
      <span className="hairline w-16" />
      <span className="h-1.5 w-1.5 rotate-45 bg-gold" />
      <span className="hairline w-16" />
    </div>
  );
}
