import * as React from 'react';
import { FormFieldConfig, PageSpeedFormConfig } from '@page-speed/forms/integration';
import { f as SectionBackground, g as SectionSpacing, t as PatternName } from './community-initiatives-hxnFe3w6.js';
import { A as ActionConfig } from './blocks-DRE-f6cS.js';
import 'react/jsx-runtime';
import 'class-variance-authority';
import './button-variants-8mtEHxev.js';
import 'class-variance-authority/types';

interface ContactDarkOption {
    /**
     * Icon name for the contact option
     */
    icon: string;
    /**
     * Contact information text
     */
    info: string;
    /**
     * Optional href for the contact option
     */
    href?: string;
}
interface ContactDarkSocialLink {
    /**
     * Icon name for the social platform
     */
    icon: string;
    /**
     * Link href
     */
    href: string;
    /**
     * Accessible label for the link
     */
    label: string;
}
interface ContactDarkProps {
    /**
     * Main heading content
     */
    heading?: React.ReactNode;
    /**
     * Description text below the heading
     */
    description?: React.ReactNode;
    /**
     * Contact information heading
     */
    contactHeading?: React.ReactNode;
    /**
     * Contact information description
     */
    contactDescription?: React.ReactNode;
    /**
     * Submit button text
     */
    buttonText?: string;
    /**
     * Submit button icon (displayed before text)
     */
    buttonIcon?: React.ReactNode;
    /**
     * Array of action configurations for additional buttons
     */
    actions?: ActionConfig[];
    /**
     * Custom slot for rendering actions (overrides actions array and default submit)
     */
    actionsSlot?: React.ReactNode;
    /**
     * Contact options to display
     */
    contactOptions?: ContactDarkOption[];
    /**
     * Custom slot for rendering contact options (overrides contactOptions array)
     */
    contactOptionsSlot?: React.ReactNode;
    /**
     * Social media links to display
     */
    socialLinks?: ContactDarkSocialLink[];
    /**
     * Custom slot for rendering social links (overrides socialLinks array)
     */
    socialLinksSlot?: React.ReactNode;
    /**
     * Array of form field configurations
     * If not provided, defaults to: firstName, lastName, email, message
     */
    formFields?: FormFieldConfig[];
    /**
     * Success message to display after form submission
     * @default "Thank you! Your message has been sent successfully."
     */
    successMessage?: React.ReactNode;
    /**
     * Additional CSS classes for the section
     */
    className?: string;
    /**
     * Additional CSS classes for the container
     */
    containerClassName?: string;
    /**
     * Additional CSS classes for the header wrapper
     */
    headerClassName?: string;
    /**
     * Additional CSS classes for the heading
     */
    headingClassName?: string;
    /**
     * Additional CSS classes for the description
     */
    descriptionClassName?: string;
    /**
     * Additional CSS classes for the card
     */
    cardClassName?: string;
    /**
     * Additional CSS classes for the form panel
     */
    formPanelClassName?: string;
    /**
     * Additional CSS classes for the form
     */
    formClassName?: string;
    /**
     * Additional CSS classes for the submit button
     */
    submitClassName?: string;
    /**
     * Additional CSS classes for the info panel
     */
    infoPanelClassName?: string;
    /**
     * Additional CSS classes for the contact options container
     */
    contactOptionsClassName?: string;
    /**
     * Additional CSS classes for the social links container
     */
    socialLinksClassName?: string;
    /**
     * Additional CSS classes for the success message
     */
    successMessageClassName?: string;
    /**
     * Additional CSS classes for the error message
     */
    errorMessageClassName?: string;
    /**
     * Background style for the section
     */
    background?: SectionBackground;
    /**
     * Vertical spacing for the section
     */
    spacing?: SectionSpacing;
    /**
     * Optional background pattern name or URL
     */
    pattern?: PatternName | undefined;
    /**
     * Pattern overlay opacity (0-1)
     */
    patternOpacity?: number;
    /**
     * Optional form submission configuration.
     *
     * **Universal Usage**: Works with ANY REST API endpoint. Simply provide an `endpoint` URL
     * and the form will submit to it in JSON format.
     *
     * @example
     * // Works with any API
     * formConfig={{ endpoint: "https://api.mysite.com/contact", format: "json" }}
     *
     * @example
     * // With custom headers (e.g., authentication)
     * formConfig={{
     *   endpoint: "/api/contact",
     *   headers: { "Authorization": "Bearer token123" }
     * }}
     *
     * **Note**: The `apiKey`, `contactCategoryToken`, and other platform-specific fields
     * are OPTIONAL and only needed when integrating with DashTrack's Rails backend.
     * For generic REST APIs, just use `endpoint`, `method`, `format`, and `headers`.
     *
     * See `FORMS_INTEGRATION_GUIDE.md` for complete examples with Next.js, React, and more.
     */
    formConfig?: PageSpeedFormConfig;
    /**
     * Optional custom submission handler for maximum flexibility.
     *
     * Use this when you need complete control over the submission logic,
     * such as custom API calls, analytics tracking, or multi-step workflows.
     *
     * Can be used alone or in combination with `formConfig` for hybrid approaches.
     *
     * @example
     * onSubmit={async (values) => {
     *   await fetch("/api/contact", {
     *     method: "POST",
     *     body: JSON.stringify(values)
     *   });
     * }}
     */
    onSubmit?: (values: Record<string, any>) => void | Promise<void>;
    /**
     * Optional success callback invoked after successful submission.
     *
     * Called after `formConfig` submission and/or `onSubmit` completes successfully.
     * Use for showing success messages, redirecting, analytics tracking, etc.
     */
    onSuccess?: (data: unknown) => void;
    /**
     * Optional error callback invoked if submission fails.
     *
     * Receives the error object for custom error handling, logging, or user notifications.
     */
    onError?: (error: Error) => void;
}
/**
 * ContactDark - A dark-themed contact form with split layout featuring a form
 * on one side and contact information with social links on a dark background.
 * Perfect for modern, high-contrast designs.
 *
 * @example
 * ```tsx
 * <ContactDark
 *   heading="Contact Us"
 *   description="Any questions or remarks? Just write us a message!"
 *   buttonText="Send Message"
 *   formConfig={{ endpoint: "/api/contact", format: "json" }}
 * />
 * ```
 */
declare function ContactDark({ heading, description, contactHeading, contactDescription, buttonText, buttonIcon, actions, actionsSlot, contactOptions, contactOptionsSlot, socialLinks, socialLinksSlot, formFields, successMessage, className, headerClassName, headingClassName, descriptionClassName, cardClassName, formPanelClassName, formClassName, submitClassName, infoPanelClassName, contactOptionsClassName, socialLinksClassName, successMessageClassName, errorMessageClassName, background, spacing, containerClassName, pattern, patternOpacity, formConfig, onSubmit, onSuccess, onError, }: ContactDarkProps): React.JSX.Element;

export { ContactDark, type ContactDarkProps };
