straw-ui-vue

一个基于 Vue 3 + TypeScript + UnoCSS 的现代组件库。
8,507
Install
npm install straw-ui-vue
Latest Version:0.1.49
Vue:3
Last Updated:Oct 22, 2026
Links: npm
Maintainer: hehy

Straw UI

一个基于 Vue 3 + TypeScript + UnoCSS 的现代组件库。

特性

  • 🚀 Vue 3 + TypeScript - 完整的类型支持
  • 🎨 UnoCSS - 原子化 CSS,按需生成
  • 📦 运行时依赖极轻 - 仅 @vueuse/core、@vueuse/math、clsx、tailwind-merge,Vue 3 为 peerDependency
  • 🔧 按需导入 - 支持 tree-shaking
  • 🌙 暗色主题 - 内置暗色模式支持

安装

npm install straw-ui-vue

快速开始

完整引入

import { createApp } from 'vue';
import StrawUI from 'straw-ui-vue';

const app = createApp(App);
app.use(StrawUI);

按需导入

<script setup lang="ts">
import { StButton, StInput } from 'straw-ui-vue';
</script>

<template>
	<StButton>Click me</StButton>
	<StInput v-model="value" placeholder="Type something" />
</template>

UnoCSS 集成

Straw UI 基于 UnoCSS 构建,需要配置 content 以确保组件库中使用的样式类能被正确扫描:

// uno.config.ts
import { defineConfig, presetWind4, presetIcons } from 'unocss';
import { presetStrawUI } from 'straw-ui-vue/unocss';

export default defineConfig({
	presets: [
		presetWind4(),
		presetIcons(),
		presetStrawUI(), // Straw UI 预设
	],
	content: {
		pipeline: {
			include: [
				// 默认的模板文件匹配
				/\.(vue|[jt]sx|mdx?|html)($|\?)/,
				// 让 pipeline 过滤器放行组件库 dist 文件
				'node_modules/straw-ui-vue/dist/**/*.{js,mjs}',
			],
		},
		filesystem: [
			// 扫描组件库 dist 产物中使用的样式类
			'node_modules/straw-ui-vue/dist/**/*.{js,mjs}',
		],
	},
});
// main.ts
import 'straw-ui-vue/variables.css'; // 主题预设变量,或使用自己的变量文件

详细配置请参阅 快速开始。

TypeScript 支持

Straw UI 提供完整的 TypeScript 类型支持。

组件列表

组件 说明
StButton 按钮组件
StCard 卡片组件(含 StCardGroup、StCardGroupHeader、StCardGroupTitle、StCardGroupContent、StCardGroupFooter、StCardGroupAction、StCardGroupDescription 子组件)
StCascade / StCascadePanel 级联选择组件
StCheckbox / StCheckboxGroup 复选框 / 复选框组组件
StColorPicker / StColorPickerPanel 颜色选择器组件
StDatePicker / StDatePickerPanel 日期选择器组件
StDateTimePicker / StDateTimePickerPanel 日期时间选择器组件
StDialog 对话框组件(含 StDialogGroup、StDialogGroupHeader、StDialogGroupTitle、StDialogGroupBody、StDialogGroupContent、StDialogGroupFooter、StDialogGroupAction、StDialogGroupOverlay、StDialogGroupDraggable 子组件)
StDivider 分割线组件
StDrawer 抽屉组件(含 StDrawerGroup、StDrawerGroupHeader、StDrawerGroupTitle、StDrawerGroupBody、StDrawerGroupContent、StDrawerGroupFooter、StDrawerGroupAction、StDrawerGroupOverlay 子组件)
StEmpty 空状态组件
StFormControl / StFormDescription / StFormItem / StFormLabel / StFormMessage 表单字段系列组件
StImage 图片组件
StInput / StInputGroup / StInputGroupAddon / StInputGroupButton / StInputGroupInput / StInputGroupText / StInputGroupTextarea / StInputNumber / StTextarea 输入框系列组件
StLabel 标签组件
StMenu(含 StMenuContainer、StMenuContent、StMenuDivider、StMenuGroup、StMenuItem、StMenuNode、StMenuTrigger) 菜单组件
StPagination 分页组件
StPopover(含 StPopoverArrow、StPopoverContainer、StPopoverContent、StPopoverTrigger) 弹出卡片组件
StProgress 进度条组件
StRadio / StRadioGroup 单选框 / 单选框组组件
StScrollbar 滚动条组件
StSegmented 分段控制器组件
StSelect(含 StSelectContainer、StSelectContent、StSelectEmpty、StSelectGroup、StSelectItem、StSelectTrigger) 下拉选择器组件
StSidebar / StSidebarItem 侧边栏 / 侧边栏项组件
StSkeleton / StSkeletonItem 骨架屏组件
StSlider 滑块组件
StSplitter / StSplitterPanel 分割面板组件
StSwitch 开关组件
StTabs / StTabsPane 标签页组件
StTag 标签组件
StTimePicker / StTimePickerPanel 时间选择器组件
StToggle 切换按钮组件
StTooltip(含 StTooltipContainer、StTooltipContent、StTooltipTrigger) 工具提示组件
StTree / StTreeNode 树形组件

自定义指令

指令 说明
v-intersection 元素可视区域监听
v-resize 元素尺寸变化监听

主题定制

Straw UI 使用 CSS 变量定义主题,你可以通过覆盖变量来自定义主题:

:root {
	--primary: #3b82f6;
	--primary-foreground: #ffffff;
	--radius: 0.5rem;
	/* 更多变量... */
}

[data-theme='dark'] {
	--primary: #3b82f6;
	/* 暗色主题变量... */
}

完整变量列表请参阅 快速开始。

文档

  • 快速开始
  • 全局配置
  • 类型可从 straw-ui-vue/types 子路径导入,组件的 props/emits/slots 均有声明。

License

MIT

Version History

Version Released License
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45