按钮与状态 触发动作、告诉用户「在跑」

FlowButton flowbtn

悬停时圆形色块自中心扩散铺满,左箭头滑入、右箭头滑出,文字右移让位,胶囊收成圆角矩形。把鼠标移上去看。

RippleButton rippbtn

点击处扩散的反馈:ripple 实心水波 · echo 单圈细环 · sonar 三圈错开 · flash 整块闪一下 · ping 常驻向外脉冲(拉视线用,可随时关)。水波直径按「点击点到最远角」算,多宽的按钮都盖得满;波色取 currentColor,所以实心/描边/幽灵/危险四种配色通吃。键盘按空格也有波。

LoadingState loadst

3×3 像素网格 + 流光标签 + 等宽实时计时。适合 10 秒以上的长任务:转圈只说明「在跑」,这个还回答「跑了多久」。

Drive
Dots
Orbit

Toast toast

角落弹出的反馈条:四种语义 + 两种样式(default 描边 · filled 实心),自动消失并带倒计时,悬停或键盘聚焦时停表,移开接着算。原件只是「一条 alert 的长相」,容器、堆叠、自动消失都要自己搭;这里做成一句话就能弹。

default 描边
filled 实心
弹出位置

筛选与选择 都是持有值的控件,看板工具栏三件套

SlideTabs slidetabs

滑块在标签之间移动:悬停先滑过去「预演」,点击才真正切换,移出容器自动归位。做切片器 / 分段控件 / 视图切换。方向键也能切。

全部
含禁用项 · 铺不下时可横滑

PillTabs pilltabs

分立胶囊标签:每个标签是一颗独立胶囊,未选中只露图标,选中的那颗向右展开出文字、邻居被平滑推开,展开瞬间扫过一道光。图标为主、文字为辅时用它;要一条轨道里滑块移动的,用上面的 SlideTabs。未选中时名字仍挂在 aria-label 上,方向键 / Home / End 全通。

收件箱
含禁用项 · 带面板
📊 本周毛利 +3.2%,预算达成 96%。
🗂 共 12 份报表,最近更新:收入成本表-ALL。
⚙️ 这里放设置项。

SelectBox selectbox

下拉框(持有值的那种):选中项打勾并高亮,选项 ≥12 个自动出搜索框,首字母连打可跳转。第二个是由原生 <select> 升级来的——没 JS 时它就是个能用的下拉框,升级后仍能正常提交表单。

en · cn

DateFilter datefilter

日期筛选:日期区间(双月并排)与单日两种模式,左侧快捷区间(本月、近 30 天、本季度…)。方向键可逐日移动,PageUp/Down 翻月。

未选

FileUpload fileup

拖拽上传:拖放区 + 文件列表(缩略图、大小、进度、取消/删除)。给了 url 就是真上传(XHR 真实进度、可中途取消),不给则只做本地选择 + 演示进度。下面这个是演示模式,随便拖几个文件进去试。

未选文件

菜单与导航 点了就走 / 点了就执行,不留值

DropMenu dropmenu

毛玻璃下拉菜单:面板模糊淡入 + 缩放,条目逐条错峰滑入,箭头翻转 180°。面板挂在 body 下、fixed 定位,不会被工具栏的 overflow 裁掉;放不下会自动翻边。要保存选中值请用 SelectBox。

未选

RichMenu richmenu

完整的菜单系统:多级子菜单、勾选项、单选组、分组标题、分隔线、快捷键提示、危险项。每一级都挂在 body 下独立定位(原件的子菜单没有 Portal,会被父面板的 overflow-hidden 裁掉)。悬停 110ms 展开、移开 260ms 收起;键盘 ↑↓ → ← Home End Esc 全通,还支持首字母连打。勾选/单选默认不关菜单。要一层的动作菜单用 DropMenu,要保存选中值用 SelectBox。

视图 list · 未选

MenuVertical menuvert

竖排大字导航:悬停时箭头自左侧滑入、文字右移让位并变色,可选斜切。动效全在 CSS 的 :hover / :focus-visible 上,用 Tab 键也能看到。

Dock dock

macOS 式放大坞:鼠标靠近时图标按距离连续放大,弹簧收敛,悬停冒出标签气泡。方向键也能走,聚焦项同样会放大。

容器与装饰 包住别的东西,本身不产生交互

GlowBorder glowborder

会转的发光边框:一圈彩色光沿边框旋转,外侧带同色晕染,悬停或键盘聚焦时加亮提速。包住任意内容都行——按钮、卡片、面板、图表。不用 JS 也能工作(自己写 .glowborder > .gb-in 两层即可),加 data-glow 则自动包壳。变体:still 不转 · hair 细边 · bold 粗边 · block 铺满一行。白底暗底都成立,内容底色走 --gb-bg。

粗边 bold
细边 hair
静止 still
包住一整块面板 .block 铺满一行

BorderTrail bordertrail

边框流光:一小团光沿细边框绕圈跑,只在边框那一圈里可见。分两个版本:data-trail 动效版(光斑循环移动)· data-trail="still" 静态版(光斑停住、放大成一段高光)。比 GlowBorder 克制,适合卡片、输入框、状态面板。路径圆角自动跟宿主一致(原件用光斑尺寸当圆角,过角时光斑偏进卡片内部最多 17.5px、明显变暗);减少动态时动效版自动变静态;滚出视口暂停。

动效版
数据刷新中
收入成本表 · 已处理 62%
两团光 · 逆时针
data-trails="2" data-reverse
胶囊 · 3 秒一圈
静态版
静态高光
光斑停在左上角附近
对角两段
宿主 overflow:hidden 也对得上
胶囊 · 静态

SignIn signin

登录框:左侧品牌插画(Canvas 节点网络)+ 右侧表单——第三方登录、账号、密码显隐、大写锁定提示、记住我、提交态与错误提示。组件不碰凭据:不存、不发、不写 localStorage,只把值交给 onSubmit。窄屏自动收起左侧插画。

ChatBox chatbox

AI 对话输入框:随内容长高(到顶后在框内滚,不是把后面的字藏起来)、附件可点选/拖入/粘贴、生成中发送键变停止、字数超限标红并禁用发送。中文输入法选词按回车不会误发——原件没判 isComposing,选个词就把半截话发出去了。底部快捷动作默认把提示词填进输入框。

等待输入

Sidebar sidenav

应用外壳:可折叠侧边栏 + Chrome 式标签页工作区。标签页可新建、关闭(含中键)、拖拽换序、右键「关闭其它 / 右侧 / 左侧」,键盘 ←/→/Home/End/Delete 全通。窄屏侧边栏自动变抽屉。标签页是可选项(tabs:false 只要侧边栏),持久化默认关(给 persist 才写 localStorage)。

总览 · 1 个标签页

Thinking thinking

AI 思考过程:头部一行状态文字流光扫过,下面时间线逐行展开(步骤打勾 / 推理文字 / 联网来源可点 / 工具改动可点选),跑完自动收起,点标题随时展开回看。四种变体同一结构,内容可整体覆盖——把它接上你自己的 agent 流水线就能当实时状态面板。

Steps
Reasoning
Search
Coding

StreamingText streamtext

AI 流式回答:文字逐词浮出(中文逐字),cite token 弹出行内引用 chip,流完动作条(复制 / 重播 / 点赞踩)与「来源」折叠列表、后续提问一起亮起,停 3.4s 后自动重播。原件四个动作按钮全是摆设——这里复制真进剪贴板、重播真重来、点赞有 aria-pressed。接真实线程给 loop:false,onDone 通知你流完了。

默认(循环)
自定义内容 · once
等待流完…

流程图 自成一套板岩配色,不吃 --uik-accent

FlowDiagram flowdia

系统图 / 流程图:泳道 + 按语义分色的节点 + 正交连线。把鼠标移到节点上看聚焦。位置由你给的 (lane, col) 决定,它不做自动布局。
五套皮:slate 提炼自 archify(MIT), flat / terminal / blueprint / notion 提炼自 fireworks-tech-graph(MIT)的风格指南 1/2/3/4。换皮只改令牌,走线与交互不动。

slate · archify

使用方法

点卡片上的「复制源代码」,该组件的自包含代码(CSS + JS)就进了剪贴板。直接发给 agent,同时说:

「要用该素材修改哪个组件,或用于做什么组件,可自行在此基础上再自定义修改。」

改配色
每个颜色都写成 var(--uik-xxx, 默认值),覆盖令牌即可全局换色; 暗色跟随系统,也可给根元素加 data-uik-theme="dark" 手动切。

新增组件
在 components/<名字>/ 下放同名 css/js,把目录名加进 build.py 的 COMPONENTS,跑一次 python build.py,再到本页加卡片与左侧目录项。详见 README.md。