A Component Library for Vue 3
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Flexible layout system for organizing content with containers, grids, and spacing utilities. Foundation for responsive design.
Layout container for structuring page sections.
declare const ElContainer: Component;
interface ContainerProps {
/** Layout direction */
direction?: 'horizontal' | 'vertical';
}
declare const ElHeader: Component;
interface HeaderProps {
/** Header height */
height?: string;
}
declare const ElAside: Component;
interface AsideProps {
/** Aside width */
width?: string;
}
declare const ElMain: Component;
declare const ElFooter: Component;
interface FooterProps {
/** Footer height */
height?: string;
}Usage Example:
<template>
<el-container>
<el-header height="60px">Header</el-header>
<el-container>
<el-aside width="200px">Aside</el-aside>
<el-main>Main</el-main>
</el-container>
<el-footer height="60px">Footer</el-footer>
</el-container>
</template>Responsive grid layout based on 24-column system.
declare const ElRow: Component;
interface RowProps {
/** Grid spacing */
gutter?: number;
/** Horizontal alignment */
justify?: 'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly';
/** Vertical alignment */
align?: 'top' | 'middle' | 'bottom';
/** Custom tag */
tag?: string;
}
declare const ElCol: Component;
interface ColProps {
/** Column span */
span?: number;
/** Column offset */
offset?: number;
/** Column push */
push?: number;
/** Column pull */
pull?: number;
/** Extra small screens (<576px) */
xs?: number | ColResponsive;
/** Small screens (≥576px) */
sm?: number | ColResponsive;
/** Medium screens (≥768px) */
md?: number | ColResponsive;
/** Large screens (≥992px) */
lg?: number | ColResponsive;
/** Extra large screens (≥1200px) */
xl?: number | ColResponsive;
/** Custom tag */
tag?: string;
}
interface ColResponsive {
span?: number;
offset?: number;
push?: number;
pull?: number;
}Usage Example:
<template>
<el-row :gutter="20">
<el-col :span="6">
<div>Column 1</div>
</el-col>
<el-col :span="6">
<div>Column 2</div>
</el-col>
<el-col :span="6">
<div>Column 3</div>
</el-col>
<el-col :span="6">
<div>Column 4</div>
</el-col>
</el-row>
</template>Spacing component for consistent element spacing.
declare const ElSpace: Component;
interface SpaceProps {
/** Alignment */
alignment?: 'start' | 'end' | 'center' | 'baseline' | 'stretch';
/** Space direction */
direction?: 'horizontal' | 'vertical';
/** Space size */
size?: SpaceSize | SpaceSize[];
/** Whether to wrap */
wrap?: boolean;
/** Fill container */
fill?: boolean;
/** Fill ratio */
fillRatio?: number;
/** Prefix content */
prefixCls?: string;
}
type SpaceSize = 'small' | 'default' | 'large' | number;Usage Example:
<template>
<el-space direction="vertical" size="large" fill>
<el-card>Card 1</el-card>
<el-card>Card 2</el-card>
<el-card>Card 3</el-card>
</el-space>
</template>Visual separator between content sections.
declare const ElDivider: Component;
interface DividerProps {
/** Divider direction */
direction?: 'horizontal' | 'vertical';
/** Content position */
contentPosition?: 'left' | 'center' | 'right';
/** Border style */
borderStyle?: 'solid' | 'dashed' | 'dotted';
}Usage Example:
<template>
<div>
<p>Section 1</p>
<el-divider content-position="left">Section Title</el-divider>
<p>Section 2</p>
</div>
</template>interface Component {
name?: string;
props?: Record<string, any>;
emits?: string[] | Record<string, any>;
setup?: Function;
}Install with Tessl CLI
npx tessl i tessl/npm-element-plus