import type { HTMLAttributes, ReactNode } from "react";
/** Floating unsaved-changes bar driven by `isOpen`; other `
` attributes land on the positioned root. */
export interface SaveBarProps extends Omit, "color" | "children" | "dangerouslySetInnerHTML"> {
/** Shows the bar and animates it in; unmounts (not just hides) it when false. */
isOpen: boolean;
/** Status text, announced via role="status"; defaults to "You have unsaved changes". */
message?: ReactNode;
/** Called when Save is clicked. */
onSave: () => void;
/** Called when Discard is clicked. */
onDiscard: () => void;
/** Shows a spinner on Save and disables Discard. */
isSaving?: boolean;
/** Keeps Save disabled, e.g. while a field is invalid. */
isSaveDisabled?: boolean;
/** Save button label; defaults to "Save changes". */
saveLabel?: string;
/** Discard button label; defaults to "Discard". */
discardLabel?: string;
/** CSS position for the bar; defaults to "sticky". */
position?: "sticky" | "fixed";
}