跳转到主要内容

UI 组件库(.p-* 样式)

启动器为插件内置了一套 .p-* 样式组件(plugin-css.ts),自动注入插件页面、悬浮窗,并跟随明暗主题。插件无需引入任何 CSS 文件即可使用。

主题变量

所有颜色通过 CSS 变量定义,自动跟随启动器明暗主题:
在插件样式里引用:

主题跟随机制

  • 插件页面/悬浮窗自动跟随启动器明暗主题:启动器把当前主题的 CSS 变量注入插件环境(__qomicex_theme postMessage 同步),明暗切换即时生效
  • 插件 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

使用示例