/** * Prefix for CSS class names */ export declare const prefix = "ids-form-layout"; /** * Tracks, per child element, the set of attribute names a given propagator * (form-layout / group / inline) has pushed onto it. This lets us tell apart * values the user authored directly on a child (which we must never touch) * from values we inherited down — so that when a parent setting is removed or * changed, we can correctly clear/update the inherited value on the child. */ export type PropagatedKeys = WeakMap>; /** * Tag names of form-layout sub-containers that manage their own descendants. * Propagation stops at these boundaries so each container owns its children. */ export declare const NESTED_LAYOUT_TAGS: string[]; /** * Tag names of supported child form controls. */ export declare const FORM_CONTROL_TAGS: string[]; /** * Collect the direct propagation targets for a form-layout container. * * Walks descendants but does NOT descend into nested form-layout containers * (group / inline) — those are returned as targets themselves and are * responsible for propagating to their own children. This prevents an outer * container from reaching into (and clobbering) the controls a nested wrapper * manages, e.g. applying `validate` to inputs inside an inline group. * @param {HTMLElement} root the container whose children to collect * @returns {HTMLElement[]} the elements to propagate settings to */ export declare function collectPropagationTargets(root: HTMLElement): HTMLElement[]; /** * Synchronize a single inherited setting from a parent onto a child. * * Behavior: * - If the child has the attribute and we did NOT propagate it, the value is * user-authored — leave it untouched (child always wins). * - If the parent has a value, set it on the child (via the property setter) * and remember that we own this attribute on that child. * - If the parent has no value but we previously propagated one, clear it * (set the property to `null`/`false`) and forget our ownership. * @param {HTMLElement} child the child element to update * @param {string} attr the observed attribute name that backs the property * @param {string} prop the property name to assign on the child * @param {unknown} parentValue the resolved value from the parent (falsy = unset) * @param {PropagatedKeys} tracker per-propagator map of propagated attribute keys * @param {boolean} isBoolean when true, clearing assigns `false` instead of `null` */ export declare function syncSettingToChild(child: HTMLElement, attr: string, prop: string, parentValue: unknown, tracker: PropagatedKeys, isBoolean?: boolean): void; /** * Observed attributes for IdsFormLayout */ export declare const FORM_LAYOUT_ATTRIBUTES: string[]; /** * Label position type */ export type IdsFormLayoutLabelPosition = 'top' | 'inline-start' | 'inline-end' | null; /** * Valid label positions */ export declare const LABEL_POSITIONS: Array; /** * Label wrap type */ export type IdsFormLayoutLabelWrap = 'ellipsis' | 'wrap' | 'ellipsis-no-stretch' | 'wrap-no-stretch' | null; /** * Valid label wraps */ export declare const LABEL_WRAPS: Array; /** * Label break type (controls how label and value behave when space is constrained) */ export type IdsFormLayoutLabelBreak = 'shrink-value' | 'shrink-label' | 'break' | null; /** * Valid label break values */ export declare const LABEL_BREAKS: Array; /** * Label vertical alignment type */ export type IdsFormLayoutLabelAlignY = 'baseline' | 'center' | 'flex-start' | 'flex-end' | 'stretch' | null; /** * Valid label vertical alignments */ export declare const LABEL_ALIGN_Y_VALUES: Array; /** * Label text alignment type */ export type IdsFormLayoutLabelAlignment = 'start' | 'end' | null; /** * Valid label text alignments */ export declare const LABEL_ALIGNMENTS: Array; /** * Gap type values */ export type IdsFormLayoutGapType = undefined | 'none' | '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'; /** * Valid gap types array */ export declare const GAP_TYPES: Array; /** * Maximum number of columns supported */ export declare const MAX_COLS = 12; /** * Field height type */ export type IdsFormLayoutFieldHeight = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | null; /** * Valid field heights */ export declare const FIELD_HEIGHTS: Array; /** * Margin block end / field spacing type (matches IdsInput MarginBlockEndKey) */ export type IdsFormLayoutFieldSpacing = 'none' | '4xs' | '3xs' | '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | null; /** * Valid field spacing values */ export declare const FIELD_SPACING_VALUES: Array; /** * Align items type for grid alignment */ export type IdsFormLayoutAlignItems = 'anchor-center' | 'center' | 'baseline' | 'end' | 'start' | null; /** * Valid align items values */ export declare const ALIGN_ITEMS_VALUES: Array; /** * Size type for form controls (matches IdsInput sizes) */ export type IdsFormLayoutSize = 'xs' | 'sm' | 'mm' | 'md' | 'lg' | 'full' | null; /** * Valid size values */ export declare const SIZE_VALUES: Array; /** * Observed attributes for IdsFormLayoutGroup */ export declare const FORM_LAYOUT_GROUP_ATTRIBUTES: string[]; /** * Observed attributes for IdsFormLayoutInline */ export declare const FORM_LAYOUT_INLINE_ATTRIBUTES: string[];