import { ComponentType } from '@angular/cdk/portal';
import { InjectionToken } from '@angular/core';

/**
 * Injection token for providing the dialog title text
 * Used internally by the dialog system to display the title
 */
export const DIALOG_TITLE = new InjectionToken<string | undefined>(
  'DIALOG_TITLE',
);

/**
 * Injection token for controlling the display of the close button in the dialog
 * If set to true, a close button will be displayed; if false, it will not be shown
 * If undefined, the default behavior is used (usually true)
 */
export const DISPLAY_DIALOG_CLOSE = new InjectionToken<boolean | undefined>(
  'DISPLAY_DIALOG_CLOSE',
);

/**
 * Injection token for providing the dialog content component
 * Used internally by the dialog system to instantiate the correct content component
 */
export const DIALOG_CONTENT = new InjectionToken<ComponentType<unknown>>(
  'DIALOG_CONTENT',
);

/**
 * Injection token for providing additional CSS classes to the dialog
 * Allows customization of dialog appearance through external styles
 */
export const DIALOG_CLASS_LIST = new InjectionToken<string[]>(
  'DIALOG_CLASS_LIST',
);
