UI 组件库(.p-* 样式)
启动器为插件内置了一套.p-* 样式组件(plugin-css.ts),自动注入插件页面、悬浮窗,并跟随明暗主题。插件无需引入任何 CSS 文件即可使用。
主题变量
所有颜色通过 CSS 变量定义,自动跟随启动器明暗主题:主题跟随机制
- 插件页面/悬浮窗自动跟随启动器明暗主题:启动器把当前主题的 CSS 变量注入插件环境(
__qomicex_themepostMessage 同步),明暗切换即时生效 - 插件 body 背景为透明,露出启动器背景(插件容器无需自设背景色,直接使用 CSS 变量即可)
- 主题变量在插件页面(内联/沙箱)与悬浮窗(iframe)中都可用
组件清单
卡片 Card
按钮 Button
--primary --default --ghost --danger --outline;尺寸:--sm
输入 Input / Textarea
徽章 Badge
标签页 Tabs
data-p-tab指向面板id="panel-{name}"- 点击切换由注入脚本自动处理,无需自己写 JS
- 悬浮窗环境同样支持
开关 Switch
- 在悬浮窗中,若想用开关控制某个面板显隐,给 input 加
data-p-switch="panelId",脚本自动切换对应id元素
复选 Checkbox
进度条 Progress
--indeterminate 不确定、--danger 危险、--warn 警告
加载 Spinner
空状态
提示 Alert
表格 Table
下拉 Select
菜单 Menu
Tooltip
取色器
图标(React 组件)
图标随组件库分发,同步渲染、零 IPC、可 tree-shake。React 插件里不要用.p-* 手写 SVG,也不要自己封装 getIconSvg 桥调用。
<Glyph> — 单图标静态导入(推荐)
- 子路径 = 类名去掉
fa-solid fa-前缀;品牌图标加brand-(fa-brands fa-github→@qomicex/plugin-ui/icons/brand-github) - 导出名 = PascalCase +
Icon - 打包器只保留导入的图标(图标名写错时打包阶段就报错,进不了运行时)
currentColor填充,自动跟随明暗主题;label属性给出无障碍名
<Icon> — 图标名来自运行期数据
name 是运行期字符串,打包器无法分析,因此整张图标表(约 160KB)作为独立
chunk 懒加载 —— 只在真的渲染 <Icon> 时才下载。图标名编译期已知时请用 <Glyph>。
未登记的类名渲染 null(不留空白档位)并在开发构建 console.warn。
发现可用图标
await __PLUGIN_API__.call('listIcons')。
不要硬编码图标清单——内置表随启动器演进,用 listIcons() / ICON_NAMES 才是准的。
布局与工具类
.p-row--wrap--between、.p-col.p-icon--lg、.p-divider.p-hr.p-separator、.p-status-dot --up/--down/--warn、.p-pre- 间距:
.p-mt-1/2/3.p-mb-1/2/3.p-gap-1/2/3 - 文本:
.p-text-center.p-text-muted.p-text-sm/xs/lg.p-font-mono - 其他:
.p-ml-auto.p-truncate.p-rounded