// Type definitions for mjml-react 1.0 // Project: https://github.com/wix-incubator/mjml-react // Definitions by: Henri Normak // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 import * as React from 'react'; export namespace extensions { class MjmlComment extends React.Component<{ children: string }> { } class MjmlConditionalComment extends React.Component<{ children: string; condition: string }> { } class MjmlTrackingPixel extends React.Component<{ src: string }> { } class MjmlYahooStyle extends React.Component<{ children: string }> { } } export namespace utils { function namedEntityToHexCode(html: string): string; function fixConditionalComment(html: string, havingContent: string, newCondition: string): string; function useHttps(url?: string): string | undefined; function toMobileFontSize(sizeWithUnit: string): number; function addQueryParams(url: string, params: { [key: string]: any }): string; type TextAlignment = 'left' | 'right' | 'center' | 'justify' | 'inherit'; function getTextAlign(value: string, fallback?: TextAlignment): TextAlignment; } export function renderToMjml(email: React.ReactElement): string; export interface Mjml2HtmlOptions { fonts?: { [key: string]: string }; keepComments?: boolean; beautify?: boolean; minify?: boolean; validationLevel?: 'strict' | 'soft' | 'skip'; filePath?: string; } export function render(email: React.ReactElement, options?: Mjml2HtmlOptions): { html: string; errors: Error[] }; // Components export interface RequiredChildrenProps { children: React.ReactNode; } export interface PaddingProps { padding?: string | number; paddingTop?: string | number; paddingRight?: string | number; paddingBottom?: string | number; paddingLeft?: string | number; } export interface BorderProps { border?: string; borderBottom?: string; borderLeft?: string; borderTop?: string; borderRight?: string; borderRadius?: string | number; } export interface ClassNameProps { cssClass?: string; } export interface HrefProps { href?: string; target?: string; rel?: string; } // mjml export interface MjmlProps { lang?: string; owa?: string; } export class Mjml extends React.Component { } // mj-head export class MjmlHead extends React.Component { } // mj-attributes export class MjmlAttributes extends React.Component { } export class MjmlAll extends React.Component<{ [key: string]: any; children?: React.ReactNode }> { } export class MjmlClass extends React.Component<{ [key: string]: any; children?: React.ReactNode; name: string }> { } // mj-breakpoint export interface MjmlBreakpointProps { width?: string | number; } export class MjmlBreakpoint extends React.Component { } // mj-body export interface MjmlBodyProps { width ?: number; backgroundColor?: React.CSSProperties['backgroundColor']; } export class MjmlBody extends React.Component { } // mj-font export interface MjmlFontProps { href?: string; name?: string; } export class MjmlFont extends React.Component { } // mj-preview export class MjmlPreview extends React.Component<{ children: string }> { } // mj-style export class MjmlStyle extends React.Component<{ children: string, inline?: boolean }> { } // mj-title export class MjmlTitle extends React.Component<{ children: string }> { } // mj-accordion export class MjmlAccordion extends React.Component { } export interface MjmlAccordionElementProps { fontFamily?: string; iconAlign?: string; iconWrappedUrl?: string; iconWrappedAlt?: string; iconUnwrappedAlt?: string; iconUnwrappedUrl?: string; iconPosition?: 'left' | 'right'; iconHeight?: string; iconWidth?: string; backgroundColor?: React.CSSProperties['backgroundColor']; } export class MjmlAccordionElement extends React.Component { } export interface MjmlAccordionTextProps { color?: React.CSSProperties['color']; fontFamily?: string; fontSize?: string | number; backgroundColor?: React.CSSProperties['backgroundColor']; } export class MjmlAccordionText extends React.Component { } export interface MjmlAccordionTitleProps { color?: React.CSSProperties['color']; backgroundColor?: React.CSSProperties['backgroundColor']; fontFamily?: string; fontSize?: string | number; } export class MjmlAccordionTitle extends React.Component { } // mj-button export interface MjmlButtonProps { backgroundColor?: React.CSSProperties['backgroundColor']; containerBackgroundColor?: React.CSSProperties['backgroundColor']; fontStyle?: string; fontSize?: string | number; fontWeight?: number; fontFamily?: string; color?: React.CSSProperties['color']; textAlign?: React.CSSProperties['textAlign']; textDecoration?: string; textTransform?: string; align?: string; verticalAlign?: React.CSSProperties['verticalAlign']; lineHeight?: string | number; innerPadding?: string; width?: string | number; height?: string | number; } export class MjmlButton extends React.Component { } // mj-carousel export interface MjmlCarouselProps { backgroundColor?: React.CSSProperties['backgroundColor']; align?: string; borderRadius?: string | number; thumbnails?: 'hidden' | 'visible'; tbBorder?: React.CSSProperties['border']; tbBorderRadius?: React.CSSProperties['borderRadius']; tbHoverBorderColor?: string; tbSelectedBorderColor?: string; tbWidth?: string; leftIcon?: string; rightIcon?: string; iconWidth?: string; } export class MjmlCarousel extends React.Component {} export interface MjmlCarouselImageProps { src?: string; thumbnailsSrc?: string; alt?: string; title?: string; } export class MjmlCarouselImage extends React.Component { } // mj-carousel export interface MjmlColumnProps { width?: string | number; verticalAlign?: React.CSSProperties['verticalAlign']; backgroundColor?: React.CSSProperties['backgroundColor']; } export class MjmlColumn extends React.Component { } // mj-divider export interface MjmlDividerProps { borderColor?: React.CSSProperties['borderColor']; borderStyle?: React.CSSProperties['borderStyle']; borderWidth?: string | number; width?: string | number; containerBackgroundColor?: React.CSSProperties['backgroundColor']; } export class MjmlDivider extends React.Component { } // mj-group export interface MjmlGroupProps { width?: string | number; verticalAlign?: React.CSSProperties['verticalAlign']; backgroundColor?: React.CSSProperties['backgroundColor']; } export class MjmlGroup extends React.Component { } // mj-hero export interface MjmlHeroProps { width?: string | number; height?: string | number; mode?: 'fluid-height' | 'fixed-height'; backgroundWidth?: string; backgroundHeight?: string; backgroundUrl?: string; backgroundPosition?: React.CSSProperties['backgroundPosition']; verticalAlign?: React.CSSProperties['verticalAlign']; backgroundColor?: React.CSSProperties['backgroundColor']; } export class MjmlHero extends React.Component { } // mj-image export interface MjmlImageProps { containerBackgroundColor?: React.CSSProperties['backgroundColor']; border?: React.CSSProperties['border']; borderRadius?: string | number; width?: string | number; height?: string | number; src?: string; srcset?: string; alt?: string; align?: string; title?: string; fluidOnMobile?: string; } export class MjmlImage extends React.Component { } // mj-navbar export interface MjmlNavbarProps { baseUrl?: string; hamburger?: 'hamburger'; align?: string; icoOpen?: string; icoClose?: string; icoPadding?: string; icoPaddingTop?: string; icoPaddingRight?: string; icoPaddingBottom?: string; icoPaddingLeft?: string; icoAlign?: string; icoColor?: React.CSSProperties['color']; icoFontSize?: string; icoTextTransform?: string; icoTextDecoration?: string; icoLineHeight?: string; } export class MjmlNavbar extends React.Component { } export interface MjmlNavbarLinkProps { color?: React.CSSProperties['color']; fontFamily?: string; fontSize?: string | number; fontStyle?: string; fontWeight?: number; lineHeight?: string | number; textDecoration?: string; textTransform?: string; } export class MjmlNavbarLink extends React.Component { } // mj-raw export class MjmlRaw extends React.Component { } // mj-section export interface MjmlSectionProps { fullWidth?: boolean; backgroundColor?: React.CSSProperties['backgroundColor']; backgroundUrl?: string; backgroundRepeat?: React.CSSProperties['backgroundRepeat']; backgroundSize?: React.CSSProperties['backgroundSize']; verticalAlign?: React.CSSProperties['verticalAlign']; textAlign?: React.CSSProperties['textAlign']; direction?: 'ltr' | 'rtl'; } export class MjmlSection extends React.Component { } // mj-social export interface MjmlSocialProps { borderRadius?: string | number; fontFamily?: string; fontSize?: string | number; iconSize?: string; iconHeight?: string; lineHeight?: string | number; mode?: 'vertical' | 'horizontal'; textDecoration?: string; align?: string; color?: React.CSSProperties['color']; innerPadding?: string; containerBackgroundColor?: React.CSSProperties['backgroundColor']; } export class MjmlSocial extends React.Component { } export interface MjmlSocialElementProps { borderRadius?: string | number; backgroundColor?: React.CSSProperties['backgroundColor']; fontFamily?: string; fontSize?: string | number; iconSize?: string; iconHeight?: string; lineHeight?: string | number; mode?: 'vertical' | 'horizontal'; textDecoration?: string; align?: string; color?: React.CSSProperties['color']; name?: 'facebook' | 'facebook-noshare' | 'twitter' | 'twitter-noshare' | 'google' | 'google-noshare' | 'pinterest' | 'pinterest-noshare' | 'linkedin' | 'linkedin-noshare' | 'tumblr' | 'tumblr-noshare' | 'xing' | 'xing-noshare' | 'github' | 'instagram' | 'web' | 'snapchat' | 'youtube' | 'vimeo' | 'medium' | 'soundcloud' | 'dribbble'; src?: string; alt?: string; } export class MjmlSocialElement extends React.Component { } // mj-spacer export interface MjmlSpacerProps { height?: string | number; width?: string | number; containerBackgroundColor?: React.CSSProperties['backgroundColor']; verticalAlign?: React.CSSProperties['verticalAlign']; } export class MjmlSpacer extends React.Component { } // mj-table export interface MjmlTableProps { color?: React.CSSProperties['color']; cellpadding?: string; cellspacing?: string; fontFamily?: string; fontSize?: string | number; fontStyle?: string; lineHeight?: string | number; containerBackgroundColor?: React.CSSProperties['backgroundColor']; width?: string | number; tableLayout?: 'auto' | 'fixed' | 'initial' | 'inherit'; } export class MjmlTable extends React.Component { } // mj-text export interface MjmlTextProps { color?: React.CSSProperties['color']; fontFamily?: string; fontSize?: string | number; fontStyle?: string; fontWeight?: number; lineHeight?: string; letterSpacing?: string; height?: string | number; textDecoration?: string; textTransform?: string; align?: string; containerBackgroundColor?: React.CSSProperties['backgroundColor']; } export class MjmlText extends React.Component { } // mj-wrapper export interface MjmlWrapperProps { fullWidth?: boolean; backgroundColor?: React.CSSProperties['backgroundColor']; backgroundUrl?: string; backgroundRepeat?: React.CSSProperties['backgroundRepeat']; backgroundSize?: React.CSSProperties['backgroundSize']; verticalAlign?: React.CSSProperties['verticalAlign']; textAlign?: React.CSSProperties['textAlign']; } export class MjmlWrapper extends React.Component { }