declare module "*";

interface LayoutProps {
  children: React.ReactNode;
  UserMenu?: React.ReactNode;
}

/**
 * Default Layout with Header (Helmet & SEO) and Footer
 * @param {LayoutProps} props - Page content
 * @returns {JSX.Element} The complete page
 */
export function Layout(props: LayoutProps): JSX.Element;

interface ContentProps {
  children: React.ReactNode;
  className?: string;
}

/**
 * Centered section for page content
 * @param {ContentProps} props - Section content
 * @returns {JSX.Element} The complete section
 */
export function Content(props: ContentProps): JSX.Element;

interface ButtonProps {
  children?: React.ReactNode;
  title?: string;
  to?: string;
  className?: string;
}
export function Button(props: ButtonProps): JSX.Element;

interface CardProps {
  to?: string;
  className?: string;
  anime?: boolean;
  side?: boolean;
  icon?: string;
  title?: string;
  content?: string;
}
export function Card(props: CardProps): JSX.Element;

interface BadgeProps {
  children?: React.ReactNode;
  color?: string;
  className?: string;
}
export function Badge(props: BadgeProps): JSX.Element;

interface LinkProps {
  children?: React.ReactNode;
  to: string;
  activeClassName?: string;
  partiallyActive?: string;
}
export function Link(props: LinkProps): JSX.Element;

interface SearchProps {}
export function Search(props: SearchProps): JSX.Element;

interface Service {
  title: string;
  subtitle: string;
  icon: string;
}
interface Action {
  title: string;
  to: string;
}
interface HeroProps {
  title?: string;
  subtitle?: string;
  description?: string;
  action: Action;
  services?: Array<Service>;
}

/**
 * Hero section with background image and buttons action
 * @param {HeroProps} props - Section content
 * @returns {JSX.Element} The complete section
 */
export function Hero(props: HeroProps): JSX.Element;

declare module "@onegeo/gatsby-theme-onegeo";