UNPKG

@mdfriday/shortcode

Version:

A flexible component-based shortcode system for Markdown content with theme support

82 lines (81 loc) 2.45 kB
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; }