import { LabelSlots } from './slots';
import { OverridesStyleRules } from '@mui/material/styles/overrides';
import { Theme } from '@mui/material';
import { LABEL_KEY_COMPONENT } from './constants';
import { Sizes } from '@m4l/styles';
import { TypographyProps } from '@m4l/base';
export type LabelVariants = 'standard';
/**
 * Base props for Label component, excluding control and layout properties.
 * This type is commonly used as a base for form field components that need
 * Label's content and configuration props but manage their own control/layout.
 */
export type LabelPropsBase = Omit<LabelProps, 'children' | 'disabled' | 'size' | 'className' | 'error'>;
export interface LabelProps {
    /** Optional skeleton width forwarded to the typography primitive when a loading placeholder is needed. */
    skeletonWidth?: TypographyProps['skeletonWidth'];
    /**
     * Helper message for the field. When it is a string, a help icon is shown
     * with that string as tooltip content. When it is boolean `true`, the icon is
     * shown without tooltip content.
     */
    helperMessage?: boolean | string;
    /** Main label text for the component. */
    label?: string;
    /**
     * Optional symbol rendered wrapped in parentheses right after the label text,
     * e.g. `symbol="°C"` renders `Temperatura (°C)`. Omitted or empty keeps the
     * label unchanged (backwards compatible).
     */
    symbol?: string;
    /** Controls whether the mandatory marker next to the label is rendered. */
    mandatory?: boolean;
    /** Custom mandatory marker text. Defaults to `*` when omitted. */
    mandatoryMessage?: string;
    /** Connects the label to a form control so clicking the label focuses the related field. */
    htmlFor?: string | undefined;
    /** Unique id for the wrapping HTML label element. */
    id?: string;
    /** Label size. Defaults to `medium`. */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /** Child elements rendered inside the component. */
    children?: React.ReactNode;
    /** Custom CSS class applied to the component. */
    className?: string;
    /** Whether the related field is currently in an error state. */
    error?: boolean;
    /** Whether the component is disabled. */
    disabled?: boolean;
}
export type OwnerState = Pick<LabelProps, 'size'>;
export interface LabelOwnerState extends LabelProps, OwnerState {
    /** Whether the component is disabled. */
    disabled?: boolean;
    /** Component size. */
    size?: Extract<Sizes, 'small' | 'medium'>;
}
export type LabelSlotsType = keyof typeof LabelSlots;
export type LabelStyles = OverridesStyleRules<LabelSlots, typeof LABEL_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map