import { ReactNode, ButtonHTMLAttributes } from 'react';
/**
 * Button component dengan berbagai hierarchy (primary, secondary, tertiary, link),
 * size (2xl, xl, lg, md, sm), dan mendukung prefixIcon / suffixIcon.
 *
 * Mendukung state:
 * - default: styling dasar sesuai hierarchy
 * - hover: menyesuaikan warna latar/border/teks
 * - focus: menyesuaikan latar sedikit lebih gelap
 * - disabled: opacity rendah + pointer-events none
 *
 * @param {"primary" | "secondary" | "tertiary" | "link" | "custom"} [hierarchy] - Hierarchy styling button. Default: "primary".
 * @param {"2xl" | "xl" | "lg" | "md" | "sm"} [size] - Ukuran button mempengaruhi max-height, padding & font-size. Default: "md".
 * @param {ReactNode} [prefixIcon] - Ikon di sebelah kiri teks.
 * @param {ReactNode} [suffixIcon] - Ikon di sebelah kanan teks.
 * @param {ReactNode} children - Konten button (teks atau elemen custom).
 * @param {boolean} [disabled] - Jika true, button dalam keadaan disabled.
 * @param {string} [className] - ClassName tambahan untuk override styling.
 */
export type ButtonHierarchy = 'primary' | 'secondary' | 'tertiary' | 'link' | 'custom';
export type ButtonSize = '2xl' | 'xl' | 'lg' | 'md' | 'sm';
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
    /**
     * Hierarchy button:
     * - "primary": background-color: primary-300, color: text-white
     * - "secondary": background-color: white, color: text-content-primary, border: stroke-primary
     * - "tertiary": background-color: white, color: text-content-primary, border: none, hover: background-tertiary
     * - "link": background-color: white, color: text-content-guide, border: none, hover: text-guide-400
     * - "custom": untuk custom styling
     *
     * @default "primary"
     */
    hierarchy?: ButtonHierarchy;
    /**
     * Ukuran button:
     * - "2xl": max-height: 56px, font-size: 16px, padding: 16px
     * - "xl": max-height: 48px, font-size: 16px, padding: 12px 16px
     * - "lg": max-height: 44px, font-size: 14px, padding: 12px
     * - "md": max-height: 40px, font-size: 14px, padding: 10px 12px
     * - "sm": max-height: 32px, font-size: 12px, padding: 8px
     *
     * @default "md"
     */
    size?: ButtonSize;
    /**
     * Ikon di sebelah kiri teks (opsional).
     */
    prefixIcon?: ReactNode | undefined;
    /**
     * Ikon di sebelah kanan teks (opsional).
     */
    suffixIcon?: ReactNode | undefined;
    /**
     * Konten utama button, bisa berupa teks atau JSX custom.
     */
    children: ReactNode;
    /**
     * Jika true, button dipastikan dalam keadaan disabled
     * (tidak bisa di-klik, gaya berubah).
     */
    disabled?: boolean;
    /**
     * ClassName tambahan untuk override styling wrapper.
     */
    className?: string;
}
export default function Button(props: ButtonProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=Button.d.ts.map