import * as React$1 from "react";

//#region src/plugins/email-theming/types.d.ts
type InputType = 'color' | 'number' | 'select' | 'text' | 'textarea';
type InputUnit = 'px' | '%';
type Options = Record<string, string>;
type EditorTheme = 'basic' | 'minimal';
type PanelSectionId = 'body' | 'container' | 'typography' | 'h1' | 'h2' | 'h3' | 'paragraph' | 'list' | 'nested-list' | 'list-item' | 'link' | 'image' | 'button' | 'code-block' | 'inline-code';
type KnownThemeComponents = 'reset' | 'body' | 'container' | 'h1' | 'h2' | 'h3' | 'paragraph' | 'nestedList' | 'list' | 'bulletList' | 'orderedList' | 'listItem' | 'listParagraph' | 'blockquote' | 'codeBlock' | 'inlineCode' | 'codeTag' | 'link' | 'footer' | 'hr' | 'image' | 'button' | 'section';
type KnownCssProperties = 'align' | 'backgroundColor' | 'color' | 'fontSize' | 'fontWeight' | 'letterSpacing' | 'lineHeight' | 'textDecoration' | 'borderRadius' | 'borderTopLeftRadius' | 'borderTopRightRadius' | 'borderBottomLeftRadius' | 'borderBottomRightRadius' | 'borderWidth' | 'borderTopWidth' | 'borderRightWidth' | 'borderBottomWidth' | 'borderLeftWidth' | 'borderStyle' | 'borderTopStyle' | 'borderRightStyle' | 'borderBottomStyle' | 'borderLeftStyle' | 'borderColor' | 'borderTopColor' | 'borderRightColor' | 'borderBottomColor' | 'borderLeftColor' | 'padding' | 'paddingTop' | 'paddingRight' | 'paddingBottom' | 'paddingLeft' | 'width' | 'height';
type ResetTheme = Record<KnownThemeComponents, React$1.CSSProperties>;
type CssJs = { [K in KnownThemeComponents]: React$1.CSSProperties & {
  align?: 'center' | 'left' | 'right';
} };
type SupportedCssProperties = { [K in KnownCssProperties]: {
  category: 'layout' | 'appearance' | 'typography';
  label: string;
  type: InputType;
  defaultValue: string | number;
  unit?: InputUnit;
  options?: Options;
  excludeNodes?: string[];
  placeholder?: string;
  customUpdate?: (props: Record<string, unknown>, update: (func: (tree: PanelGroup[]) => PanelGroup[]) => void) => void;
} };
interface PanelInputProperty {
  label: string;
  type: InputType;
  value?: string | number;
  prop: KnownCssProperties;
  classReference?: KnownThemeComponents;
  unit?: InputUnit;
  options?: Options;
  placeholder?: string;
  category: SupportedCssProperties[KnownCssProperties]['category'];
}
interface PanelGroup {
  id?: PanelSectionId;
  title: string;
  category?: string;
  headerSlot?: React$1.ReactNode;
  classReference?: KnownThemeComponents;
  inputs: Omit<PanelInputProperty, 'category'>[];
}
type ThemeableComponent = Extract<KnownThemeComponents, 'body' | 'container' | 'h1' | 'h2' | 'h3' | 'link' | 'image' | 'button' | 'codeBlock' | 'inlineCode' | 'listItem' | 'list' | 'nestedList' | 'paragraph'>;
type ThemeComponentStyles = { [K in ThemeableComponent]?: React$1.CSSProperties & {
  align?: 'center' | 'left' | 'right';
} };
interface ThemeConfig {
  extends?: EditorTheme;
  styles: ThemeComponentStyles;
}
type EditorThemeInput = EditorTheme | ThemeConfig;
//#endregion
export { KnownThemeComponents as a, PanelSectionId as c, ThemeComponentStyles as d, ThemeConfig as f, KnownCssProperties as i, ResetTheme as l, EditorTheme as n, PanelGroup as o, ThemeableComponent as p, EditorThemeInput as r, PanelInputProperty as s, CssJs as t, SupportedCssProperties as u };
//# sourceMappingURL=types-DUTo2zJ5.d.cts.map