import { AnchorHTMLAttributes, DetailedHTMLProps, FC } from "react";
import * as class_variance_authority_types4 from "class-variance-authority/types";
import { VariantProps } from "class-variance-authority";
import { LocalesValues } from "@intlayer/types";

//#region src/components/Link/Link.d.ts

/**
 * Visual style variants for Link component
 *
 * @enum {string}
 */
declare enum LinkVariant {
  /** Default underlined link with hover effects */
  DEFAULT = "default",
  /** Link without visible underline or hover effects */
  INVISIBLE_LINK = "invisible-link",
  /** Button-styled link with solid background */
  BUTTON = "button",
  /** Button-styled link with outlined border */
  BUTTON_OUTLINED = "button-outlined",
  /** Link with subtle hover background effect */
  HOVERABLE = "hoverable",
}
/**
 * Color theme variants for Link component
 *
 * @enum {string}
 */
declare enum LinkColor {
  /** Primary brand color */
  PRIMARY = "primary",
  /** Secondary brand color */
  SECONDARY = "secondary",
  /** Destructive/danger color for critical actions */
  DESTRUCTIVE = "destructive",
  /** Neutral/muted color for less prominent links */
  NEUTRAL = "neutral",
  /** Light color for dark backgrounds */
  LIGHT = "light",
  /** Dark color for light backgrounds */
  DARK = "dark",
  /** Default text color */
  TEXT = "text",
  /** Inverse text color for opposite backgrounds */
  TEXT_INVERSE = "text-inverse",
  /** Error/red color for error states */
  ERROR = "error",
  /** Success/green color for positive actions */
  SUCCESS = "success",
  /** Custom color - no default styling applied */
  CUSTOM = "custom",
}
/** Available rounded corner sizes for the container */
declare enum LinkRoundedSize {
  NONE = "none",
  SM = "sm",
  MD = "md",
  LG = "lg",
  XL = "xl",
  TWO_XL = "2xl",
  THREE_XL = "3xl",
  FULL = "full",
}
declare enum LinkSize {
  SM = "sm",
  MD = "md",
  LG = "lg",
  XL = "xl",
  CUSTOM = "custom",
}
/**
 * Underline style options for Link component
 *
 * @enum {string}
 */
declare enum LinkUnderlined {
  /** Default underline behavior based on variant */
  DEFAULT = "default",
  /** Always show underline */
  TRUE = "true",
  /** Never show underline */
  FALSE = "false",
}
/**
 * Class variance authority configuration for Link component styling
 * Defines the visual appearance based on variant, color, and underline options
 */
declare const linkVariants: (props?: {
  variant?: "default" | "invisible-link" | "hoverable" | "button" | "button-outlined";
  roundedSize?: "md" | "lg" | "none" | "sm" | "xl" | "2xl" | "3xl" | "full";
  color?: "text" | "primary" | "secondary" | "destructive" | "neutral" | "light" | "dark" | "text-inverse" | "error" | "success" | "custom";
  size?: "md" | "lg" | "sm" | "xl" | "custom";
  underlined?: boolean | LinkUnderlined.DEFAULT;
} & class_variance_authority_types4.ClassProp) => string;
/**
 * Props interface for the Link component
 *
 * @interface LinkProps
 * @extends {DetailedHTMLProps<AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>}
 * @extends {VariantProps<typeof linkVariants>}
 */
type LinkProps = DetailedHTMLProps<AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> & VariantProps<typeof linkVariants> & {
  /**
   * Accessible label for screen readers (required)
   * Provides context about what the link does or where it leads
   * @example "Navigate to home page"
   */
  label: string;
  /**
   * Whether this link opens in a new tab/window
   * When true, adds target="_blank" and security attributes
   * Auto-detected for URLs starting with http/https when undefined
   * @default undefined (auto-detect based on href)
   */
  isExternalLink?: boolean;
  /**
   * If a link is a page section as '#id'
   * @default false
   */
  isPageSection?: boolean;
  /**
   * Whether this link represents the current page/active state
   * Adds aria-current="page" for accessibility
   * @default false
   */
  isActive?: boolean;
  /**
   * Locale for internationalized URLs
   * When provided, URLs are automatically localized using Intlayer
   * @example 'fr', 'es', 'en'
   */
  locale?: LocalesValues;
};
/**
 * Utility function to determine if a link should be treated as external
 *
 * @param props - Link component props containing href and isExternalLink
 * @returns {boolean} True if the link should open externally
 *
 * @example
 * ```tsx
 * checkIsExternalLink({ href: '[https://example.com](https://example.com)' }) // true
 * checkIsExternalLink({ href: '/internal-page' }) // false
 * checkIsExternalLink({ href: '/page', isExternalLink: true }) // true
 * ```
 */
declare const checkIsExternalLink: ({
  href,
  isExternalLink: isExternalLinkProp
}: LinkProps) => boolean;
/**
 * Link Component
 *
 * A versatile link component that handles both internal and external navigation
 * with comprehensive internationalization support and multiple visual variants.
 * ...
 */
declare const Link: FC<LinkProps>;
//#endregion
export { Link, LinkColor, LinkProps, LinkRoundedSize, LinkSize, LinkUnderlined, LinkVariant, checkIsExternalLink, linkVariants };
//# sourceMappingURL=Link.d.ts.map