@mdfriday/shortcode
Version:
A flexible component-based shortcode system for Markdown content with theme support
82 lines (81 loc) • 2.45 kB
TypeScript
import { Style, Layout, Typography, Animation, Interactive, Responsive, ClassBuilder } from './types';
import { Theme } from '../types';
/**
* Abstract base class for style builders
*/
export declare abstract class BaseClassBuilder implements ClassBuilder {
protected classes: Set<string>;
protected theme: Theme;
protected componentName: string;
constructor(theme: Theme);
withComponent(componentName: string): this;
/**
* Add style classes based on style props
* @param props Style props
*/
style(props: Style): this;
/**
* Add layout classes based on layout props
* @param props Layout props
*/
layout(props: Layout): this;
/**
* Add typography classes based on typography props
* @param props Typography props
*/
typography(props: Typography): this;
/**
* Add animation classes based on animation props
* @param props Animation props
*/
animation(props: Animation): this;
/**
* Add interactive classes based on interactive props
* @param props Interactive props
*/
interactive(props: Interactive): this;
/**
* Add responsive classes based on responsive props
* @param props Responsive props
*/
responsive(props: Responsive): this;
/**
* Build the final class string
*/
build(): string;
/**
* Add a class to the set of classes
* @param className Class name to add
*/
protected addClass(className: string): void;
/**
* Process style properties
* @param props Style props
*/
protected abstract processStyleProps(props: Style): void;
/**
* Process layout properties
* @param props Layout props
*/
protected abstract processLayoutProps(props: Layout): void;
/**
* Process typography properties
* @param props Typography props
*/
protected abstract processTypographyProps(props: Typography): void;
/**
* Process animation properties
* @param props Animation props
*/
protected abstract processAnimationProps(props: Animation): void;
/**
* Process interactive properties
* @param props Interactive props
*/
protected abstract processInteractiveProps(props: Interactive): void;
/**
* Process responsive properties
* @param props Responsive props
*/
protected abstract processResponsiveProps(props: Responsive): void;
}