import * as React from "react";
import { Input as InputPrimitive } from "@base-ui/react/input";

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

/**
 * The shadcn `aria-invalid:ring-3 aria-invalid:ring-destructive/20` halo is
 * dropped: the only field on the site is the newsletter input, styled
 * « machined » per `docs/brand.md` § Input Fields — a single 1px bottom rule,
 * square corners, no glow. The caller already flattens the focus ring with
 * `focus-visible:ring-0`, but a `ring-*` under `aria-invalid:` is a different
 * `tailwind-merge` group, so the halo survived and only ever appeared in the
 * error state, where the design is least prepared for it. Invalidity is carried
 * by `aria-invalid:border-destructive` — the bottom rule turns red — plus the
 * `role="status"` message, so it is never colour alone (WCAG 1.4.1).
 */
function Input({ className, type, ...props }: React.ComponentProps<"input">) {
  return (
    <InputPrimitive
      type={type}
      data-slot="input"
      className={cn(
        "h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50",
        className,
      )}
      {...props}
    />
  );
}

export { Input };
