tailwind-compositor
Version:
Compositor is a system of constraints designed to produce aesthetically pleasing, typographic compositions, based on objective, constant dimensions of space.
115 lines (114 loc) • 2.9 kB
TypeScript
import * as CSS from 'csstype';
export declare type NumberScale = Array<number>;
export declare type FontConfigCache = Array<iFontOpenType>;
export declare type iTailwindTheme = Function;
export declare type iTailwindConfig = {
theme: {
extend: any;
[key: string]: any;
};
variants: any;
corePlugins: any;
plugins: any;
compositor: ICompositorConfig;
};
export interface iFontOpenType {
key: string;
file?: string;
fallback: string;
familyName: string;
upm: number;
xHeight: number;
capHeight: number;
lineGap: number;
ascent: number;
descent: number;
weight: number;
italic: boolean;
}
export declare type FontConfigFile = {
file: string;
key: string;
familyName: string;
fallback: string;
weight?: number;
italic?: boolean;
upm: undefined;
xHeight: undefined;
capHeight: undefined;
ascent: undefined;
descent: undefined;
};
export declare type FontsConfig = Array<FontConfigFile | iFontOpenType>;
export interface UtilityOptions {
useRem: boolean;
snap: boolean;
type: boolean;
rhythm: boolean;
measure: boolean;
matrix: boolean;
xray: boolean;
}
export interface ICompositorConfig {
root: number;
baseline: number;
leading: number;
matrix: number;
type: NumberScale;
measure: NumberScale;
rhythm: NumberScale;
fonts: FontsConfig;
options: UtilityOptions;
styles: iCompositorThemeStyles;
}
export interface iCompositorThemeStyles {
ruler: {
color: string;
};
}
export interface Style extends CSS.Properties {
[key: string]: any;
}
export interface TypeFamilyParams {
font: iFontOpenType;
}
export interface StyleFamily {
fontFamily: CSS.FontFamilyProperty;
fontWeight: CSS.FontWeightProperty;
fontStyle: CSS.FontStyleProperty;
display: CSS.DisplayProperty;
'&::before, &::after': {
content: CSS.ContentProperty;
height: CSS.HeightProperty<number>;
display: CSS.DisplayProperty;
};
}
export interface TypeStyleRelParams {
font: iFontOpenType;
baseline: number;
root: number;
size: number;
leading: number;
useRem: boolean;
}
export interface TypeStyleParams {
font: iFontOpenType;
baseline: number;
size: number;
snap: boolean;
leading: number;
root?: number;
useRem: boolean;
}
export interface StyleTypography {
fontSize: CSS.FontSizeProperty<string>;
lineHeight: CSS.LineHeightProperty<string | number>;
paddingTop: CSS.PaddingTopProperty<string>;
paddingBottom: CSS.PaddingTopProperty<string>;
'&::before': {
marginTop: CSS.MarginProperty<string>;
};
'&::after': {
marginBottom: CSS.MarginProperty<string>;
};
}