import React from "react";
/**
 * CronInput component props
 * A visual cron expression builder that outputs standard cron syntax
 */
export interface CronInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
    /** Controlled cron expression string, e.g. "0 9 * * 1" */
    value?: string;
    /** Default cron expression for uncontrolled usage */
    defaultValue?: string;
    /** Callback fired when the cron expression changes */
    onChange?: (cronExpression: string) => void;
    /** Whether to show preset schedule buttons */
    showPresets?: boolean;
    /** Whether to show the human-readable description */
    showDescription?: boolean;
    /** Whether to show upcoming execution times */
    showNextRuns?: boolean;
    /** Number of next run times to display (default: 3) */
    nextRunCount?: number;
    /** Size variant */
    size?: CronInputSize;
    /** Display mode: visual builder, raw string input, or both */
    mode?: CronInputMode;
    /** Additional class name (highest priority, shadcn pattern) */
    className?: string;
    /** Theme overrides for sub-component styling */
    theme?: CronInputThemeOverrides;
    /** Whether the input is disabled */
    disabled?: boolean;
    /** Label text for the component */
    label?: string;
}
export type CronInputSize = "sm" | "md" | "lg";
export type CronInputMode = "visual" | "raw" | "both";
/**
 * Parsed cron fields
 */
export interface CronFields {
    minute: string;
    hour: string;
    dayOfMonth: string;
    month: string;
    dayOfWeek: string;
}
/**
 * Preset schedule definition
 */
export interface CronPreset {
    label: string;
    value: string;
    description: string;
}
/**
 * Theme structure for CronInput component
 */
export interface CronInputTheme {
    /** Outer wrapper */
    baseStyle: string;
    /** Label text */
    labelStyle: string;
    /** Visual builder section */
    builderStyle: string;
    /** Individual field group (label + select) */
    fieldGroupStyle: string;
    /** Field label */
    fieldLabelStyle: string;
    /** Select dropdown for each field */
    fieldSelectStyle: string;
    /** Size variants for the select dropdowns */
    fieldSelectSizes: Record<CronInputSize, string>;
    /** Raw input field */
    rawInputStyle: string;
    /** Size variants for the raw input */
    rawInputSizes: Record<CronInputSize, string>;
    /** Mode toggle button */
    modeToggleStyle: string;
    /** Active mode toggle button */
    modeToggleActiveStyle: string;
    /** Preset button */
    presetButtonStyle: string;
    /** Active preset button */
    presetButtonActiveStyle: string;
    /** Human-readable description */
    descriptionStyle: string;
    /** Next runs container */
    nextRunsStyle: string;
    /** Individual next run time */
    nextRunItemStyle: string;
    /** Section heading style */
    sectionHeadingStyle: string;
    /** Validation error style */
    errorStyle: string;
}
/**
 * Theme overrides - all optional for partial customization
 */
export type CronInputThemeOverrides = Partial<CronInputTheme>;
