/**
 * Shared types for the admin settings UI.
 */

export type Shape = "square";
export type Layout = "wrap";
export type SelectorStyle = "underline";
export type SwatchAnimation = "none";
export type PreviewMode = "colors" | "buttons";

export type ToastState = {
  show: boolean;
  type: "success" | "error" | "info";
  message: string;
};

export type Settings = {
  shape?: Shape;
  layout?: Layout;
  swatch_style?: SelectorStyle;
  swatch_gap?: number | string;
  swatch_width?: number;
  swatch_height?: number;

  padding_top?: number | string;
  padding_right?: number | string;
  padding_bottom?: number | string;
  padding_left?: number | string;
  layout_padding_top?: number | string;
  layout_padding_right?: number | string;
  layout_padding_bottom?: number | string;
  layout_padding_left?: number | string;
  external_padding_top?: number | string;
  external_padding_right?: number | string;
  external_padding_bottom?: number | string;
  external_padding_left?: number | string;

  show_labels?: boolean;
  show_labels_colors?: boolean;
  enable_tooltips?: boolean;
  selected_color?: string;
  auto_convert_dropdowns?: boolean;
  remove_on_uninstall?: boolean;

  heading_font_color?: string;
  heading_font_size?: number | string;
  label_font_size?: number | string;
  label_text_color?: string;

  [key: string]: any;
};

/**
 * Tab IDs for the settings UI.
 */
export type BaseTabId =
  | "general"
  | "chips"
  | "typography"
  | "tooltips"
  | "advanced";
export type TabId = BaseTabId | (string & {});

/**
 * Live preview demo data types.
 */
export type LivePreviewColorItem = {
  value: string;
  label: string;
  color: string;
};
