@stacksjs/stx
Version:
A performant UI Framework. Powered by Bun.
129 lines (128 loc) • 2.69 kB
TypeScript
/**
* Component prop definition for validation
*/
export declare interface PropDefinition {
type: PropType | PropType[]
required?: boolean
default?: unknown
validator?: (value: unknown) => boolean
}
/**
* Component props schema for validation
*
* @example
* ```typescript
* const alertProps: ComponentPropsSchema = {
* title: { type: 'string', required: true },
* type: { type: 'string', default: 'info' },
* dismissible: { type: 'boolean', default: false }
* }
* ```
*/
export declare interface ComponentPropsSchema {
}
/**
* Component definition with metadata
*/
export declare interface ComponentDefinition {
name: string
path?: string
props?: ComponentPropsSchema
description?: string
}
/**
* Component configuration
*/
export declare interface ComponentConfig {
validateProps?: boolean
components?: Record<string, ComponentDefinition>
}
/**
* Web component definition
*/
export declare interface WebComponent {
name: string
tag: string
file: string
extends?: string
shadowDOM?: boolean
template?: boolean
styleSource?: string
attributes?: string[]
description?: string
outputFormat?: 'js' | 'ts'
attributeTypes?: Record<string, 'string' | 'number' | 'boolean' | 'object'>
}
/**
* Web components configuration
*/
export declare interface WebComponentConfig {
enabled: boolean
outputDir: string
components: WebComponent[]
}
/**
* Component property documentation
*/
export declare interface ComponentPropDoc {
name: string
type?: string
required?: boolean
default?: string
description?: string
}
/**
* Component documentation
*/
export declare interface ComponentDoc {
name: string
path: string
description?: string
props: ComponentPropDoc[]
example?: string
isWebComponent?: boolean
tag?: string
}
/**
* Template documentation
*/
export declare interface TemplateDoc {
name: string
path: string
description?: string
components?: string[]
directives?: string[]
}
/**
* Directive documentation
*/
export declare interface DirectiveDoc {
name: string
description?: string
hasEndTag: boolean
example?: string
}
/**
* Documentation generator configuration
*/
export declare interface DocGeneratorConfig {
enabled: boolean
outputDir: string
format: DocFormat
components: boolean
templates: boolean
directives: boolean
extraContent?: string
template?: string
}
/**
* Component System Types
*/
/**
* Prop type definition for component prop validation
*/
export type PropType = 'string' | 'number' | 'boolean' | 'array' | 'object' | 'function' | 'any'
/**
* Documentation format options
*/
export type DocFormat = 'markdown' | 'html' | 'json'