npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

skeuo-ui

v1.0.7

Published

Skeuo UI — 拟物风 Vue3 组件库

Readme


✨ 特性

  • 🎨 纯正新拟物 — 同色背景 + 双向柔和阴影,凸起与凹陷一目了然。无边框、无渐变、无纹理、无发光
  • ⚡️ Vue3 + TS Strict — 全部 <script setup> 编写,类型导出完整,strict 模式零 any
  • 🌗 浅深双主题 — 纯 CSS 变量 Token 驱动,data-theme="dark" 一键切换
  • 🧩 73 个组件 — 表单 / 展示 / 反馈 / 导航 / 工具 / 页面全品类覆盖
  • 📦 双模式引入 — app.use(SkeuoUI) 全量 / 按需导入
  • 📊 图表封装 — SChart 基于 ECharts 按需注册,只打包用到的图表类型(体积 -37%)
  • 🔔 编程式 API — message / notification / confirm 开箱即用
  • 🚀 可发布 — ESM + UMD + 类型声明,npm pack 真实安装验证通过
  • 以下为部分展示,效果图在./docs/public中 ヾ(´∀ ˋ)ノ

📚 文档

完整组件文档在 docs/ 目录(VitePress 构建),本地运行 npm run docs:dev 预览。 部署后可访问在线文档站(未部署前此为占位说明)。

🔧 安装

npm install skeuo-ui

🚀 快速上手

全量引入

// main.ts
import { createApp } from 'vue'
import SkeuoUI from 'skeuo-ui'
import 'skeuo-ui/style.css'

const app = createApp(App)
app.use(SkeuoUI)
app.mount('#app')

按需引入

import { SButton, SInput, message } from 'skeuo-ui'
import 'skeuo-ui/style.css'

编程式 API

import { message, notification, confirm } from 'skeuo-ui'

message.success('保存成功')
notification.info('任务完成', '文档已生成')

const ok = await confirm('确定删除该项目吗?', {
  okType: 'danger',
})
if (ok) {
  // 执行删除
}

🌗 深色模式

// 在 <html> 上设置 data-theme="dark"
document.documentElement.setAttribute('data-theme', 'dark')

浅色为默认(#f7f6f2 微暖白底),深色自动切换整套阴影与色彩。组件内部样式 scoped 自足,只需引入一次全局样式。

🧩 组件清单

表单类

| 组件 | 说明 | | --- | --- | | SButton 按钮 | 6 种类型 × 3 种尺寸,通栏/禁用/加载 | | SInput 输入框 | 前缀图标/可清空/密码显隐 | | STextarea 文本域 | 行数/最大长度/禁用 | | SSelect 下拉选择 | 单选/禁用项/分组 | | SCheckbox 勾选框 | 单选/全选 | | SRadio / SRadioGroup 单选框 | 水平/垂直 | | SSwitch 开关 | 加载/禁用 | | SSlider 滑块 | 单选 + Range 双滑块 | | SInputNumber 数字输入 | min/max/step/precision | | SRate 评分 | 支持半星 | | SSearch 搜索框 | 可清空/回车搜索 | | SForm / SFormItem 表单 | 同步校验 + 错误提示 | | SDatePicker 日期 | 完整月面板 42 格 | | STimePicker 时间 | 时分选择 | | SDateRangePicker 日期范围 | 起止日期 + 区间高亮 | | SColorPicker 颜色 | 预设色 + HSV 调色盘 | | SCascader 级联 | 多级联动选择 | | SCodeInput 验证码 | OTP 风格,自动跳格/粘贴 | | SCalendar 日历 | 月视图/标记日期 |

展示类

| 组件 | 说明 | | --- | --- | | SCard 卡片 | 标题/阴影层级 | | STag 标签 | 5 色可关闭 | | SAvatar 头像 | 图片/文字/加载失败回退 | | SProgress 进度条 | 线形 + 圆形 SVG | | STabs / STab 标签页 | 禁用/切换动画 | | SBadge 徽章 | 数字/99+/红点/零隐藏 | | SEmpty 空状态 | 拟物插画 | | SSkeleton 骨架屏 | 行/头像/动画 | | SQRCode 二维码 | 自动重绘 | | SImage 图片 | 点击放大预览 | | SChart 图表 | ECharts 按需注册,6 图表类型 | | SStatistic 统计 | 千分位/前后缀 | | SDescriptions 描述列表 | 网格详情展示 | | SNumberAnimate 数字滚动 | easeOut 动画 | | SWatermark 水印 | canvas 生成 | | STree 树形 | 多级折叠/图标 |

反馈类

| 组件 | 说明 | | --- | --- | | message 轻提示 | 4 类型/位置/最多 3 条 | | notification 通知 | 角落弹窗/操作按钮 | | confirm 确认框 | Promise 风格 | | SMessage 消息条(组件形态) | 常驻/可关闭 | | SNotification 通知卡片(组件形态) | 标题/正文/操作按钮 | | SConfirmDialog 确认对话框(组件形态) | danger 确认/static 内嵌 | | SModal 对话框 | 遮罩/标题/插槽/关闭 | | SPopconfirm 气泡确认 | 轻量确认 | | SAlert 警告条 | 4 类型可关闭 | | SResult 结果页 | 成功/错误/空/404 | | SUpload 上传 | 多文件/大小限制 | | STooltip 悬浮提示 | 4 方向 |

导航类

| 组件 | 说明 | | --- | --- | | STable 表格 | 列配置/插槽 | | SPagination 分页 | 省略号智能折叠 | | SBreadcrumb 面包屑 | 自定义分隔符 | | SDivider 分割线 | 水平/垂直/内凹 | | STimeline 时间线 | 审批流配色 | | SSteps 步骤条 | 方向/状态 | | SCollapse 折叠面板 | 手风琴 | | SDrawer 抽屉 | 4 方向 | | SPageHeader 页头 | 返回/标题/操作 | | SAnchor 锚点 | 滚动监听 | | SBackTop 回到顶部 | 阈值控制 |

工具类

| 组件 | 说明 | | --- | --- | | SCarousel 轮播 | 拖拽切换(45% 阈值)+ 箭头/指示器 | | SSpinner 加载 | 拟物旋转 | | SRefreshButton 刷新 | 旋转动画 | | SSegmented 分段 | 功能切换 | | SDropdown 下拉菜单 | 危险项/分隔线 | | SContextMenu 右键菜单 | 视口自适应 | | SCopy 复制 | clipboard + 降级 | | SEllipsis 省略 | 单行/多行可展开 | | SFullScreen 全屏 | 浏览器全屏 API | | SInfiniteScroll 无限滚动 | IntersectionObserver | | SLazyLoad 懒加载 | 进视口才加载 | | STransfer 穿梭框 | 搜索/禁用项 |

页面

| 组件 | 说明 | | --- | --- | | SAuthPage 登录/注册 | 密码/扫码/验证码三种登录 + 5 平台滑条切换二维码 | | SVerifyPage 验证码页 | 手机/邮箱 + 60s 倒计时 + OTP 输入 |

🎨 设计原则

纯正 Neumorphism:同一背景色上同时存在亮影与暗影。

凸起(按钮/卡片)          凹陷(输入框/轨道)
┌──────────┐              ┌──────────┐
│ 亮↖ 暗↘  │              │ 暗↖ 亮↘  │
└──────────┘              └──────────┘
  • ❌ 无边框(用阴影替代)· ❌ 无渐变 · ❌ 无纹理
  • ✅ 全部样式走 CSS 变量 Token(--s-*),改一处全局生效
  • ✅ 浅色 #f7f6f2 / 深色 data-theme="dark"

🛠 开发

npm install          # 安装依赖
npm run dev          # 启动组件实验室(playground)
npm run build        # 构建产物(vue-tsc + vite build)
npm run docs:dev     # 启动文档站
npm run docs:build   # 构建文档站
npm run gen:docs     # 从源码重新生成组件文档页

📄 License

MIT © 2026 qiangqiang554