neurapress/src/lib/types.ts
2025-02-02 14:20:20 +08:00

123 lines
2.7 KiB
TypeScript

import type { CSSProperties } from 'react'
import type { CodeThemeId } from '@/config/code-themes'
export interface StyleOptions {
// Layout
display?: string
position?: string
top?: string | number
left?: string | number
right?: string | number
bottom?: string | number
width?: string | number
height?: string | number
margin?: string | number
marginTop?: string | number
marginRight?: string | number
marginBottom?: string | number
marginLeft?: string | number
padding?: string | number
paddingTop?: string | number
paddingRight?: string | number
paddingBottom?: string | number
paddingLeft?: string | number
maxWidth?: string | number
// Typography
color?: string
fontSize?: string | number
fontFamily?: string
fontWeight?: string | number
fontStyle?: string
lineHeight?: string | number
textAlign?: 'left' | 'center' | 'right'
textDecoration?: string
textIndent?: string | number
letterSpacing?: string | number
whiteSpace?: string
wordBreak?: string
// Border & Background
border?: string
borderTop?: string
borderRight?: string
borderBottom?: string
borderLeft?: string
borderRadius?: string
borderCollapse?: string
background?: string
backgroundColor?: string
backgroundImage?: string
// List
listStyle?: string
listStyleType?: string
listStylePosition?: string
// Flexbox
alignItems?: string
justifyContent?: string
flexDirection?: string
flexWrap?: string
gap?: string
// Other
opacity?: number
overflow?: string
overflowX?: string
overflowY?: string
verticalAlign?: string
userSelect?: string
cursor?: string
zIndex?: number
boxShadow?: string
transition?: string
transform?: string
WebkitBackgroundClip?: string
WebkitTextFillColor?: string
}
export interface RendererOptions {
base?: {
themeColor?: string
fontSize?: string
lineHeight?: string
textAlign?: 'left' | 'center' | 'right'
fontFamily?: string
padding?: string
margin?: string
maxWidth?: string
wordBreak?: string
whiteSpace?: string
color?: string
}
block?: {
h1?: StyleOptions
h2?: StyleOptions
h3?: StyleOptions
h4?: StyleOptions
h5?: StyleOptions
h6?: StyleOptions
p?: StyleOptions
blockquote?: StyleOptions
code_pre?: StyleOptions
image?: StyleOptions
ul?: StyleOptions
ol?: StyleOptions
table?: StyleOptions
th?: StyleOptions
td?: StyleOptions
footnotes?: StyleOptions
}
inline?: {
strong?: StyleOptions
em?: StyleOptions
codespan?: StyleOptions
link?: StyleOptions
listitem?: StyleOptions
checkbox?: StyleOptions
del?: StyleOptions
footnote?: StyleOptions
}
codeTheme?: CodeThemeId
}