import { IconsTokenType } from '../../types/design-token.type';

/**
 * Metadata for a file uploaded through the image uploader.
 */
export type VegaUploadedFile = {
	/**
	 * The URL of the uploaded file.
	 */
	url: string;
	/**
	 * The name of the uploaded file.
	 */
	name?: string;
};

/**
 * Union of uploaded metadata and native File objects.
 */
export type VegaFile = VegaUploadedFile | File;

/**
 * Status values for image uploads.
 */
export type VegaImageUploaderStatus = 'uploading' | 'done';

/**
 * Configuration for a confirm button.
 */
export type VegaConfirmButtonProp = {
	/**
	 * Button label text.
	 */
	text: string;
};

/**
 * Supported action types in the image uploader.
 */
export type UploaderActionTypes = 'Preview' | 'Delete' | 'Replace';

/**
 * Configuration for an action button within the uploader.
 */
export type ActionButtonOptions = {
	/**
	 * Icon token for the button.
	 */
	icon: IconsTokenType;
	/**
	 * Label text for the button.
	 */
	label: string;
};

/**
 * Nullable file type used by the uploader.
 */
export type VegaFileOptional = VegaFile | null;
