straw-ui-vue
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;
/* 暗色主题变量... */
}
完整变量列表请参阅 快速开始。
文档
License
MIT
Version History
| Version | Released | License |
|---|---|---|
| 0.1.49 | ||
| 0.1.48 | ||
| 0.1.47 | ||
| 0.1.46 | ||
| 0.1.45 | ||
| 0.1.44 | ||
| 0.1.43 | ||
| 0.1.42 | ||
| 0.1.41 | ||
| 0.1.40 | ||
| 0.1.39 | ||
| 0.1.38 | ||
| 0.1.37 | ||
| 0.1.36 | ||
| 0.1.35 | ||
| 0.1.34 | ||
| 0.1.33 | ||
| 0.1.32 | ||
| 0.1.31 | ||
| 0.1.30 | ||
| 0.1.29 | ||
| 0.1.28 | ||
| 0.1.27 | ||
| 0.1.26 | ||
| 0.1.25 | ||
| 0.1.24 | ||
| 0.1.23 | ||
| 0.1.22 | ||
| 0.1.21 | ||
| 0.1.20 |
Showing the latest 30 of 50. See every release on npm