@inf-monkeys-tech/monkeys-design 0.4.51 → 0.4.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +335 -335
  3. package/dist/components/base/index.js +1 -1
  4. package/dist/components/base/index.js.map +1 -1
  5. package/dist/components/base/index.mjs +1 -1
  6. package/dist/components/base/index.mjs.map +1 -1
  7. package/dist/components/data-explorer/index.js.map +1 -1
  8. package/dist/components/data-explorer/index.mjs.map +1 -1
  9. package/dist/components/layout/index.js +1 -1
  10. package/dist/components/layout/index.js.map +1 -1
  11. package/dist/components/layout/index.mjs +1 -1
  12. package/dist/components/layout/index.mjs.map +1 -1
  13. package/dist/components/login/index.js.map +1 -1
  14. package/dist/components/login/index.mjs.map +1 -1
  15. package/dist/components/toast/index.js.map +1 -1
  16. package/dist/components/toast/index.mjs.map +1 -1
  17. package/dist/components/toolbar/index.js.map +1 -1
  18. package/dist/components/toolbar/index.mjs.map +1 -1
  19. package/dist/components/workbench/index.js +1 -1
  20. package/dist/components/workbench/index.js.map +1 -1
  21. package/dist/components/workbench/index.mjs +1 -1
  22. package/dist/components/workbench/index.mjs.map +1 -1
  23. package/dist/icons/oauth/index.js.map +1 -1
  24. package/dist/icons/oauth/index.mjs.map +1 -1
  25. package/dist/index.js +1 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +1 -1
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/palette/index.js.map +1 -1
  30. package/dist/palette/index.mjs.map +1 -1
  31. package/dist/registry/index.js.map +1 -1
  32. package/dist/registry/index.mjs.map +1 -1
  33. package/dist/styles/global.scss +21 -21
  34. package/dist/styles/login-page.scss +518 -518
  35. package/dist/styles/workflow-board.scss +440 -440
  36. package/dist/styles/workflow-nodes.css +340 -340
  37. package/dist/theme-system/index.js +1 -1
  38. package/dist/theme-system/index.js.map +1 -1
  39. package/dist/theme-system/index.mjs +1 -1
  40. package/dist/theme-system/index.mjs.map +1 -1
  41. package/dist/themes/artist/index.js.map +1 -1
  42. package/dist/themes/artist/index.mjs.map +1 -1
  43. package/dist/themes/bsd/index.js.map +1 -1
  44. package/dist/themes/bsd/index.mjs.map +1 -1
  45. package/dist/themes/concept/index.js.map +1 -1
  46. package/dist/themes/concept/index.mjs.map +1 -1
  47. package/dist/themes/default/index.js.map +1 -1
  48. package/dist/themes/default/index.mjs.map +1 -1
  49. package/package.json +151 -151
package/README.md CHANGED
@@ -1,335 +1,335 @@
1
- # @inf-monkeys-tech/monkeys-design
2
-
3
- Monkeys Design 是一个独立的 React 组件库,提供可复用的基础组件、数据展示组件、主题工具和样式资源。
4
-
5
- ## 安装
6
-
7
- ```bash
8
- yarn add @inf-monkeys-tech/monkeys-design
9
- ```
10
-
11
- 或:
12
-
13
- ```bash
14
- npm install @inf-monkeys-tech/monkeys-design
15
- ```
16
-
17
- ## 使用
18
-
19
- 从主入口导入通用能力:
20
-
21
- ```tsx
22
- import {
23
- applyMonkeysTheme,
24
- resolveMonkeysTheme,
25
- } from '@inf-monkeys-tech/monkeys-design';
26
- ```
27
-
28
- 从子路径导入组件:
29
-
30
- ```tsx
31
- import {
32
- BaseButton,
33
- BasePanel,
34
- type BaseAppearance,
35
- } from '@inf-monkeys-tech/monkeys-design/components/base';
36
-
37
- const appearance: BaseAppearance = {
38
- preset: 'admin',
39
- radius: 'lg',
40
- border: 'subtle',
41
- background: 'soft',
42
- };
43
-
44
- export function Example() {
45
- return (
46
- <BasePanel
47
- appearance={appearance}
48
- title="Design System"
49
- description="Composable UI primitives for Monkeys products."
50
- footer={<BaseButton appearance={appearance} label="Refresh" />}
51
- >
52
- Content stays in the consuming application.
53
- </BasePanel>
54
- );
55
- }
56
- ```
57
-
58
- ## 包入口
59
-
60
- | 路径 | 内容 |
61
- |------|------|
62
- | `@inf-monkeys-tech/monkeys-design` | 主入口,导出注册表、主题工具和公共类型 |
63
- | `@inf-monkeys-tech/monkeys-design/components/base` | 基础组件 |
64
- | `@inf-monkeys-tech/monkeys-design/components/data-explorer` | 数据展示与页面组合组件 |
65
- | `@inf-monkeys-tech/monkeys-design/components/login` | 登录相关 UI 组件 |
66
- | `@inf-monkeys-tech/monkeys-design/components/layout` | 布局组件 |
67
- | `@inf-monkeys-tech/monkeys-design/components/toolbar` | 工具栏组件 |
68
- | `@inf-monkeys-tech/monkeys-design/palette` | palette 工具 |
69
- | `@inf-monkeys-tech/monkeys-design/theme-system` | 主题解析与应用工具 |
70
-
71
- ## LoginPage
72
-
73
- `LoginPage` 是通用登录页 UI 组件。组件库只负责页面结构和样式契约,不包含登录请求、OAuth、路由、租户判断、i18n 初始化或租户定制样式。
74
-
75
- ```tsx
76
- import {
77
- LoginPage,
78
- type LoginPageMethodConfig,
79
- } from '@inf-monkeys-tech/monkeys-design/components/login';
80
- import '@inf-monkeys-tech/monkeys-design/styles/login-page.scss';
81
-
82
- const methods: LoginPageMethodConfig[] = [
83
- {
84
- id: 'email',
85
- label: 'Email',
86
- fields: [],
87
- submitLabel: 'Login',
88
- onSubmit: (event) => event.preventDefault(),
89
- },
90
- ];
91
-
92
- export function Example() {
93
- return (
94
- <LoginPage
95
- background={{ imageUrl: '', gradient: '' }}
96
- logo={{ url: '', position: 'bottom', scale: 1 }}
97
- primaryColor="#4D8F9D"
98
- radius="12px"
99
- toolbar={<div />}
100
- title="Welcome"
101
- methods={methods}
102
- />
103
- );
104
- }
105
- ```
106
-
107
- 默认背景规则:
108
-
109
- - 配置了 `background.imageUrl` 或 `background.gradient` 时,使用配置背景。
110
- - 未配置背景时,浅色模式使用白色和主题色渐变。
111
- - 未配置背景时,`.dark` 深色模式使用黑色和主题色渐变。
112
-
113
- Logo 规则:
114
-
115
- - `logo.url` 是兼容旧配置的通用 Logo。
116
- - `logo.lightUrl` / `logo.darkUrl` 分别用于浅色 / 深色模式;未配置时回退 `logo.url`。
117
- - 宿主应用负责在登录页未单独配置 Logo 时,把品牌资产的浅色 / 深色 Logo 传入 `logo.lightUrl` / `logo.darkUrl`。
118
-
119
- 宿主应用负责把全局主题传入 `primaryColor` 和 `radius`,组件会把它们作为 `--login-page-theme-primary-color` 和 `--login-page-theme-radius` 默认来源;页面级 `customCss` 仍可通过公开的 `--login-page-*` 变量做租户级覆盖。深浅色切换、语言切换等应用级控件通过 `toolbar` 传入。
120
-
121
- ### LoginPage CSS 契约
122
-
123
- 页面级自定义样式只能依赖 `data-login-page`、`data-login-part` 和公开 CSS 变量。不要依赖租户 id,不要新增登录页代码分支。
124
-
125
- 推荐优先覆盖变量:
126
-
127
- ```css
128
- [data-login-page] {
129
- --login-page-panel-bg: rgb(255 255 255 / 0.92);
130
- --login-page-panel-border: rgb(17 17 17 / 0.08);
131
- --login-page-panel-shadow: 0 24px 60px rgb(0 0 0 / 0.08);
132
- --login-page-control-bg: #ffffff;
133
- --login-page-control-border: rgb(17 17 17 / 0.12);
134
- --login-page-control-text: #111111;
135
- --login-page-control-placeholder: #9f9fa9;
136
- --login-page-form-width: 500px;
137
- }
138
-
139
- .dark [data-login-page] {
140
- --login-page-panel-bg: rgb(12 12 12 / 0.9);
141
- --login-page-control-bg: #111111;
142
- }
143
- ```
144
-
145
- 公开部件:
146
-
147
- ```css
148
- [data-login-part='root'] {}
149
- [data-login-part='background'] {}
150
- [data-login-part='toolbar'] {}
151
- [data-login-part='logo'] {}
152
- [data-login-part='logo-image'] {}
153
- [data-login-part='panel'] {}
154
- [data-login-part='back'] {}
155
- [data-login-part='back-icon'] {}
156
- [data-login-part='title'] {}
157
- [data-login-part='tabs'] {}
158
- [data-login-part='tab'] {}
159
- [data-login-part='tab-icon'] {}
160
- [data-login-part='form'] {}
161
- [data-login-part='field'] {}
162
- [data-login-part='input'] {}
163
- [data-login-part='checkbox-label'] {}
164
- [data-login-part='checkbox'] {}
165
- [data-login-part='method-footer'] {}
166
- [data-login-part='method-footer-action'] {}
167
- [data-login-part='submit-button'] {}
168
- [data-login-part='callout'] {}
169
- [data-login-part='callout-title'] {}
170
- [data-login-part='callout-description'] {}
171
- [data-login-part='callout-detail'] {}
172
- [data-login-part='callout-action'] {}
173
- [data-login-part='external-methods'] {}
174
- [data-login-part='external-label'] {}
175
- [data-login-part='external-list'] {}
176
- [data-login-part='external-button'] {}
177
- [data-login-part='external-icon'] {}
178
- ```
179
-
180
- ## 基础组件
181
-
182
- 基础组件从 `components/base` 子路径导入:
183
-
184
- ```tsx
185
- import {
186
- BaseButton,
187
- BaseContextMenu,
188
- BaseContextMenuContent,
189
- BaseContextMenuItem,
190
- BaseContextMenuTrigger,
191
- BasePanel,
192
- type BaseAppearance,
193
- } from '@inf-monkeys-tech/monkeys-design/components/base';
194
- ```
195
-
196
- 当前包含:
197
-
198
- - `BaseButton`
199
- - `BaseBadge`
200
- - `BasePanel`
201
- - `BaseEmptyState`
202
- - `BaseLoadingState`
203
- - `BaseField`
204
- - `BaseInput`
205
- - `BaseTextarea`
206
- - `BaseSelect`
207
- - `BaseLayout`
208
- - `BaseLayoutPane`
209
- - `BaseLayoutSplit`
210
- - `BaseLayoutResizeHandle`
211
- - `BaseSwitch`
212
- - `BaseCheckbox`
213
- - `BaseRadioGroup`
214
- - `BaseDialog`
215
- - `BaseDropdownMenu`
216
- - `BaseTooltip`
217
- - `BaseTable`
218
- - `BaseTableFooterBar`
219
- - `BaseNotice`
220
- - `BaseDivider`
221
- - `BaseSectionHeader`
222
- - `BaseTabs`
223
- - `BaseSegmentedControl`
224
- - `BaseProgress`
225
- - `BaseSkeleton`
226
- - `BaseAvatar`
227
- - `BaseToolbar`
228
- - `BaseBreadcrumb`
229
- - `BasePagination`
230
- - `BaseDescriptionList`
231
- - `BaseAccordion`
232
- - `BaseContextMenu`
233
-
234
- `BaseAppearance` 用于控制 preset、density、radius、border、background、slot className 和 inline style 覆盖。
235
-
236
- `BaseLayout` 提供中立布局 primitives:`BaseLayout` 管 header/sidebar/main/aside/footer 区域,`BaseLayoutPane` 管主题化区域表面,`BaseLayoutSplit` 管固定或可调的左右/上下分割。`gap` 可显式控制区域间距,number 按 px,string 原样作为 CSS 长度;不传时继续使用 `BaseAppearance` 的主题间距。可调分割支持 `defaultSize`、受控 `size`、`minSize`、`maxSize` 和 `onSizeChange`;尺寸是否持久化仍由使用方控制。
237
-
238
- ## Data Explorer
239
-
240
- `components/data-explorer` 提供面向数据密集页面的组合组件。组件库负责可复用的控制、展示、预览、详情和布局结构;数据请求、权限、路由、弹窗和业务动作由使用方控制。
241
-
242
- ```tsx
243
- import {
244
- DataExplorerView,
245
- type DataExplorerViewDefinition,
246
- } from '@inf-monkeys-tech/monkeys-design/components/data-explorer';
247
- ```
248
-
249
- 常用组件包括:
250
-
251
- - `DataExplorerView`
252
- - `DataExplorerViewCollection`
253
- - `DataExplorerDisplayCard`
254
- - `DataExplorerDisplayCollectionView`
255
- - `DataExplorerDisplayActionMenu`
256
- - `DataExplorerDetailShell`
257
- - `DataExplorerImagePreview`
258
- - `DataExplorerToolbarShell`
259
- - `DataExplorerActionBar`
260
- - `DataExplorerTree`
261
- - `DataExplorerPage`
262
-
263
- ## 主题系统
264
-
265
- `theme-system` 提供主题配置解析和 DOM 应用入口,用于统一处理品牌信息、palette tokens、基础组件外观和 Data Explorer 外观。
266
-
267
- ```tsx
268
- import {
269
- applyMonkeysTheme,
270
- resolveMonkeysTheme,
271
- } from '@inf-monkeys-tech/monkeys-design/theme-system';
272
-
273
- const theme = resolveMonkeysTheme(config);
274
-
275
- applyMonkeysTheme(theme);
276
-
277
- <BasePanel appearance={theme.appearances.base.input} />;
278
- ```
279
-
280
- 支持的配置包括 `tokens`、`brand`、`appearances.base` 和 `appearances.dataExplorer`。也兼容 `colors.primaryColor`、`themeMode`、`roundedSize`、`logo`、`favicon` 等常见配置形态。
281
-
282
- ## 样式资源
283
-
284
- 可从包内直接引用样式文件:
285
-
286
- ```ts
287
- import '@inf-monkeys-tech/monkeys-design/styles/global.scss';
288
- import '@inf-monkeys-tech/monkeys-design/styles/workflow-nodes.css';
289
- ```
290
-
291
- ## Storybook
292
-
293
- 本仓库内置 Storybook,用于预览和调试组件:
294
-
295
- ```bash
296
- npm run storybook
297
- ```
298
-
299
- 构建静态 Storybook:
300
-
301
- ```bash
302
- npm run storybook:build
303
- ```
304
-
305
- ## 开发
306
-
307
- ```bash
308
- # 安装依赖
309
- npm install
310
-
311
- # 开发模式
312
- npm run dev
313
-
314
- # 构建生产产物
315
- npm run build
316
-
317
- # 类型检查
318
- npm run typecheck
319
-
320
- # 代码检查
321
- npm run lint
322
- ```
323
-
324
- ## 发布
325
-
326
- > 需要 npmjs 账号拥有 `@inf-monkeys-tech` scope 的发布权限。
327
-
328
- ```bash
329
- npm login --registry=https://registry.npmjs.org/
330
- npm version patch
331
- npm run build
332
- npm publish --registry=https://registry.npmjs.org/ --access public
333
- ```
334
-
335
- 如果账号启用了浏览器钥匙串或 passkey,npm CLI 会给出一个浏览器验证链接。完成验证后发布会继续。
1
+ # @inf-monkeys-tech/monkeys-design
2
+
3
+ Monkeys Design 是一个独立的 React 组件库,提供可复用的基础组件、数据展示组件、主题工具和样式资源。
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ yarn add @inf-monkeys-tech/monkeys-design
9
+ ```
10
+
11
+ 或:
12
+
13
+ ```bash
14
+ npm install @inf-monkeys-tech/monkeys-design
15
+ ```
16
+
17
+ ## 使用
18
+
19
+ 从主入口导入通用能力:
20
+
21
+ ```tsx
22
+ import {
23
+ applyMonkeysTheme,
24
+ resolveMonkeysTheme,
25
+ } from '@inf-monkeys-tech/monkeys-design';
26
+ ```
27
+
28
+ 从子路径导入组件:
29
+
30
+ ```tsx
31
+ import {
32
+ BaseButton,
33
+ BasePanel,
34
+ type BaseAppearance,
35
+ } from '@inf-monkeys-tech/monkeys-design/components/base';
36
+
37
+ const appearance: BaseAppearance = {
38
+ preset: 'admin',
39
+ radius: 'lg',
40
+ border: 'subtle',
41
+ background: 'soft',
42
+ };
43
+
44
+ export function Example() {
45
+ return (
46
+ <BasePanel
47
+ appearance={appearance}
48
+ title="Design System"
49
+ description="Composable UI primitives for Monkeys products."
50
+ footer={<BaseButton appearance={appearance} label="Refresh" />}
51
+ >
52
+ Content stays in the consuming application.
53
+ </BasePanel>
54
+ );
55
+ }
56
+ ```
57
+
58
+ ## 包入口
59
+
60
+ | 路径 | 内容 |
61
+ |------|------|
62
+ | `@inf-monkeys-tech/monkeys-design` | 主入口,导出注册表、主题工具和公共类型 |
63
+ | `@inf-monkeys-tech/monkeys-design/components/base` | 基础组件 |
64
+ | `@inf-monkeys-tech/monkeys-design/components/data-explorer` | 数据展示与页面组合组件 |
65
+ | `@inf-monkeys-tech/monkeys-design/components/login` | 登录相关 UI 组件 |
66
+ | `@inf-monkeys-tech/monkeys-design/components/layout` | 布局组件 |
67
+ | `@inf-monkeys-tech/monkeys-design/components/toolbar` | 工具栏组件 |
68
+ | `@inf-monkeys-tech/monkeys-design/palette` | palette 工具 |
69
+ | `@inf-monkeys-tech/monkeys-design/theme-system` | 主题解析与应用工具 |
70
+
71
+ ## LoginPage
72
+
73
+ `LoginPage` 是通用登录页 UI 组件。组件库只负责页面结构和样式契约,不包含登录请求、OAuth、路由、租户判断、i18n 初始化或租户定制样式。
74
+
75
+ ```tsx
76
+ import {
77
+ LoginPage,
78
+ type LoginPageMethodConfig,
79
+ } from '@inf-monkeys-tech/monkeys-design/components/login';
80
+ import '@inf-monkeys-tech/monkeys-design/styles/login-page.scss';
81
+
82
+ const methods: LoginPageMethodConfig[] = [
83
+ {
84
+ id: 'email',
85
+ label: 'Email',
86
+ fields: [],
87
+ submitLabel: 'Login',
88
+ onSubmit: (event) => event.preventDefault(),
89
+ },
90
+ ];
91
+
92
+ export function Example() {
93
+ return (
94
+ <LoginPage
95
+ background={{ imageUrl: '', gradient: '' }}
96
+ logo={{ url: '', position: 'bottom', scale: 1 }}
97
+ primaryColor="#4D8F9D"
98
+ radius="12px"
99
+ toolbar={<div />}
100
+ title="Welcome"
101
+ methods={methods}
102
+ />
103
+ );
104
+ }
105
+ ```
106
+
107
+ 默认背景规则:
108
+
109
+ - 配置了 `background.imageUrl` 或 `background.gradient` 时,使用配置背景。
110
+ - 未配置背景时,浅色模式使用白色和主题色渐变。
111
+ - 未配置背景时,`.dark` 深色模式使用黑色和主题色渐变。
112
+
113
+ Logo 规则:
114
+
115
+ - `logo.url` 是兼容旧配置的通用 Logo。
116
+ - `logo.lightUrl` / `logo.darkUrl` 分别用于浅色 / 深色模式;未配置时回退 `logo.url`。
117
+ - 宿主应用负责在登录页未单独配置 Logo 时,把品牌资产的浅色 / 深色 Logo 传入 `logo.lightUrl` / `logo.darkUrl`。
118
+
119
+ 宿主应用负责把全局主题传入 `primaryColor` 和 `radius`,组件会把它们作为 `--login-page-theme-primary-color` 和 `--login-page-theme-radius` 默认来源;页面级 `customCss` 仍可通过公开的 `--login-page-*` 变量做租户级覆盖。深浅色切换、语言切换等应用级控件通过 `toolbar` 传入。
120
+
121
+ ### LoginPage CSS 契约
122
+
123
+ 页面级自定义样式只能依赖 `data-login-page`、`data-login-part` 和公开 CSS 变量。不要依赖租户 id,不要新增登录页代码分支。
124
+
125
+ 推荐优先覆盖变量:
126
+
127
+ ```css
128
+ [data-login-page] {
129
+ --login-page-panel-bg: rgb(255 255 255 / 0.92);
130
+ --login-page-panel-border: rgb(17 17 17 / 0.08);
131
+ --login-page-panel-shadow: 0 24px 60px rgb(0 0 0 / 0.08);
132
+ --login-page-control-bg: #ffffff;
133
+ --login-page-control-border: rgb(17 17 17 / 0.12);
134
+ --login-page-control-text: #111111;
135
+ --login-page-control-placeholder: #9f9fa9;
136
+ --login-page-form-width: 500px;
137
+ }
138
+
139
+ .dark [data-login-page] {
140
+ --login-page-panel-bg: rgb(12 12 12 / 0.9);
141
+ --login-page-control-bg: #111111;
142
+ }
143
+ ```
144
+
145
+ 公开部件:
146
+
147
+ ```css
148
+ [data-login-part='root'] {}
149
+ [data-login-part='background'] {}
150
+ [data-login-part='toolbar'] {}
151
+ [data-login-part='logo'] {}
152
+ [data-login-part='logo-image'] {}
153
+ [data-login-part='panel'] {}
154
+ [data-login-part='back'] {}
155
+ [data-login-part='back-icon'] {}
156
+ [data-login-part='title'] {}
157
+ [data-login-part='tabs'] {}
158
+ [data-login-part='tab'] {}
159
+ [data-login-part='tab-icon'] {}
160
+ [data-login-part='form'] {}
161
+ [data-login-part='field'] {}
162
+ [data-login-part='input'] {}
163
+ [data-login-part='checkbox-label'] {}
164
+ [data-login-part='checkbox'] {}
165
+ [data-login-part='method-footer'] {}
166
+ [data-login-part='method-footer-action'] {}
167
+ [data-login-part='submit-button'] {}
168
+ [data-login-part='callout'] {}
169
+ [data-login-part='callout-title'] {}
170
+ [data-login-part='callout-description'] {}
171
+ [data-login-part='callout-detail'] {}
172
+ [data-login-part='callout-action'] {}
173
+ [data-login-part='external-methods'] {}
174
+ [data-login-part='external-label'] {}
175
+ [data-login-part='external-list'] {}
176
+ [data-login-part='external-button'] {}
177
+ [data-login-part='external-icon'] {}
178
+ ```
179
+
180
+ ## 基础组件
181
+
182
+ 基础组件从 `components/base` 子路径导入:
183
+
184
+ ```tsx
185
+ import {
186
+ BaseButton,
187
+ BaseContextMenu,
188
+ BaseContextMenuContent,
189
+ BaseContextMenuItem,
190
+ BaseContextMenuTrigger,
191
+ BasePanel,
192
+ type BaseAppearance,
193
+ } from '@inf-monkeys-tech/monkeys-design/components/base';
194
+ ```
195
+
196
+ 当前包含:
197
+
198
+ - `BaseButton`
199
+ - `BaseBadge`
200
+ - `BasePanel`
201
+ - `BaseEmptyState`
202
+ - `BaseLoadingState`
203
+ - `BaseField`
204
+ - `BaseInput`
205
+ - `BaseTextarea`
206
+ - `BaseSelect`
207
+ - `BaseLayout`
208
+ - `BaseLayoutPane`
209
+ - `BaseLayoutSplit`
210
+ - `BaseLayoutResizeHandle`
211
+ - `BaseSwitch`
212
+ - `BaseCheckbox`
213
+ - `BaseRadioGroup`
214
+ - `BaseDialog`
215
+ - `BaseDropdownMenu`
216
+ - `BaseTooltip`
217
+ - `BaseTable`
218
+ - `BaseTableFooterBar`
219
+ - `BaseNotice`
220
+ - `BaseDivider`
221
+ - `BaseSectionHeader`
222
+ - `BaseTabs`
223
+ - `BaseSegmentedControl`
224
+ - `BaseProgress`
225
+ - `BaseSkeleton`
226
+ - `BaseAvatar`
227
+ - `BaseToolbar`
228
+ - `BaseBreadcrumb`
229
+ - `BasePagination`
230
+ - `BaseDescriptionList`
231
+ - `BaseAccordion`
232
+ - `BaseContextMenu`
233
+
234
+ `BaseAppearance` 用于控制 preset、density、radius、border、background、slot className 和 inline style 覆盖。
235
+
236
+ `BaseLayout` 提供中立布局 primitives:`BaseLayout` 管 header/sidebar/main/aside/footer 区域,`BaseLayoutPane` 管主题化区域表面,`BaseLayoutSplit` 管固定或可调的左右/上下分割。`gap` 可显式控制区域间距,number 按 px,string 原样作为 CSS 长度;不传时继续使用 `BaseAppearance` 的主题间距。可调分割支持 `defaultSize`、受控 `size`、`minSize`、`maxSize` 和 `onSizeChange`;尺寸是否持久化仍由使用方控制。
237
+
238
+ ## Data Explorer
239
+
240
+ `components/data-explorer` 提供面向数据密集页面的组合组件。组件库负责可复用的控制、展示、预览、详情和布局结构;数据请求、权限、路由、弹窗和业务动作由使用方控制。
241
+
242
+ ```tsx
243
+ import {
244
+ DataExplorerView,
245
+ type DataExplorerViewDefinition,
246
+ } from '@inf-monkeys-tech/monkeys-design/components/data-explorer';
247
+ ```
248
+
249
+ 常用组件包括:
250
+
251
+ - `DataExplorerView`
252
+ - `DataExplorerViewCollection`
253
+ - `DataExplorerDisplayCard`
254
+ - `DataExplorerDisplayCollectionView`
255
+ - `DataExplorerDisplayActionMenu`
256
+ - `DataExplorerDetailShell`
257
+ - `DataExplorerImagePreview`
258
+ - `DataExplorerToolbarShell`
259
+ - `DataExplorerActionBar`
260
+ - `DataExplorerTree`
261
+ - `DataExplorerPage`
262
+
263
+ ## 主题系统
264
+
265
+ `theme-system` 提供主题配置解析和 DOM 应用入口,用于统一处理品牌信息、palette tokens、基础组件外观和 Data Explorer 外观。
266
+
267
+ ```tsx
268
+ import {
269
+ applyMonkeysTheme,
270
+ resolveMonkeysTheme,
271
+ } from '@inf-monkeys-tech/monkeys-design/theme-system';
272
+
273
+ const theme = resolveMonkeysTheme(config);
274
+
275
+ applyMonkeysTheme(theme);
276
+
277
+ <BasePanel appearance={theme.appearances.base.input} />;
278
+ ```
279
+
280
+ 支持的配置包括 `tokens`、`brand`、`appearances.base` 和 `appearances.dataExplorer`。也兼容 `colors.primaryColor`、`themeMode`、`roundedSize`、`logo`、`favicon` 等常见配置形态。
281
+
282
+ ## 样式资源
283
+
284
+ 可从包内直接引用样式文件:
285
+
286
+ ```ts
287
+ import '@inf-monkeys-tech/monkeys-design/styles/global.scss';
288
+ import '@inf-monkeys-tech/monkeys-design/styles/workflow-nodes.css';
289
+ ```
290
+
291
+ ## Storybook
292
+
293
+ 本仓库内置 Storybook,用于预览和调试组件:
294
+
295
+ ```bash
296
+ npm run storybook
297
+ ```
298
+
299
+ 构建静态 Storybook:
300
+
301
+ ```bash
302
+ npm run storybook:build
303
+ ```
304
+
305
+ ## 开发
306
+
307
+ ```bash
308
+ # 安装依赖
309
+ npm install
310
+
311
+ # 开发模式
312
+ npm run dev
313
+
314
+ # 构建生产产物
315
+ npm run build
316
+
317
+ # 类型检查
318
+ npm run typecheck
319
+
320
+ # 代码检查
321
+ npm run lint
322
+ ```
323
+
324
+ ## 发布
325
+
326
+ > 需要 npmjs 账号拥有 `@inf-monkeys-tech` scope 的发布权限。
327
+
328
+ ```bash
329
+ npm login --registry=https://registry.npmjs.org/
330
+ npm version patch
331
+ npm run build
332
+ npm publish --registry=https://registry.npmjs.org/ --access public
333
+ ```
334
+
335
+ 如果账号启用了浏览器钥匙串或 passkey,npm CLI 会给出一个浏览器验证链接。完成验证后发布会继续。
@@ -334,7 +334,7 @@ var baseSlots = {
334
334
  tableContainerFooterAttached: "!rounded-b-none !shadow-none",
335
335
  tableRoot: "w-full caption-bottom border-collapse text-sm text-foreground",
336
336
  tableCaption: "mt-3 text-sm text-muted-foreground",
337
- tableHeader: "border-b border-border/70 bg-muted/35",
337
+ tableHeader: "border-b border-border/70 bg-muted/35 [&_tr]:bg-inherit [&_th]:bg-inherit",
338
338
  tableBody: "[&_tr:last-child]:border-0",
339
339
  tableFooter: "border-t border-border/70 bg-muted/30 font-medium",
340
340
  tableFooterBar: cn(