@coralai/console-ui
v0.1.0
Published
sps console 的界面套件契约 —— 插件的浏览器半区经宿主注入的 require 拿到它,写出和内建同一水准的界面。
Downloads
130
Readme
@coralai/console-ui
sps console 的界面套件契约。插件的浏览器半区装它拿类型;
运行时由宿主经注入的 require('@coralai/console-ui') 交给它宿主自己的那一份实例。
window.__SpsModuleLoader__.load({
id: 'my-plugin',
contractVersion: 1,
factory: (require) => {
const { useDialog, AnimatedSelect, apiGet } = require('@coralai/console-ui')
const slots = require('@coralai/console-slots')
slots.registerSlot('plugin.config', {
match: ({ pluginKey }) => pluginKey === 'my-plugin',
render: () => /* … */ null,
})
},
})🔴 这个包不做 i18n
插件用的是自己的语言表 —— 把 console 的 message key 变成契约,插件永远也拿不到那些 key。
需要文案的组件(DialogProvider)由调用方把默认文案传进来。
模块表里为什么是这几个
判据是共不共享实例,不是好不好用:
| | 为什么必须由宿主给 |
|---|---|
| react / react-dom | 两份 React ⇒ hooks 直接炸 |
| @tanstack/react-query | 要读宿主 QueryClientProvider 的 context |
| @coralai/console-ui | useDialog 要落到宿主那一个 DialogProvider 上 |
| @coralai/console-slots | 注册面 |
| lucide-react | ⚠️ 不共享也能用 —— 放进来纯粹省体积,是刻意的例外 |
纯计算/纯渲染的库(framer-motion、日期库…)自己打包进去就行。 表里每多一个名字,升它的大版本就是一次对所有 UI 插件的破坏性变更。
