lingee-ui 0.0.8 → 0.0.10

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 (56) hide show
  1. package/dist/button/index.css +1 -1
  2. package/dist/button/index.d.mts +1 -1
  3. package/dist/button/index.d.ts +1 -1
  4. package/dist/chunk-45W5KD4T.js +2 -0
  5. package/dist/{chunk-AEPAJEIR.js → chunk-5RKADFB7.js} +1 -1
  6. package/dist/{chunk-TO3JLUBX.mjs → chunk-HI27RMCM.mjs} +1 -1
  7. package/dist/{chunk-AP6UHKTU.mjs → chunk-HSJ3C3FP.mjs} +1 -1
  8. package/dist/chunk-HVFYR7UA.mjs +2 -0
  9. package/dist/chunk-LBNA6G3N.js +1 -0
  10. package/dist/chunk-MH2WNTQF.mjs +1 -0
  11. package/dist/chunk-N524EGAL.mjs +1 -0
  12. package/dist/chunk-TR5HCUR5.js +1 -0
  13. package/dist/{chunk-VHOWVMZ3.js → chunk-UXFCTPA5.js} +1 -1
  14. package/dist/{index-7pb5YOcq.d.mts → index-89atTLPD.d.mts} +2 -2
  15. package/dist/{index-7pb5YOcq.d.ts → index-89atTLPD.d.ts} +2 -2
  16. package/dist/index.css +1 -1
  17. package/dist/index.d.mts +693 -32
  18. package/dist/index.d.ts +693 -32
  19. package/dist/index.js +2 -2
  20. package/dist/index.mjs +2 -2
  21. package/dist/input/index.css +1 -1
  22. package/dist/input/index.js +1 -1
  23. package/dist/input/index.mjs +1 -1
  24. package/dist/popover/index.css +1 -1
  25. package/dist/popover/index.js +1 -1
  26. package/dist/popover/index.mjs +1 -1
  27. package/dist/tabs/index.css +1 -1
  28. package/dist/tabs/index.js +1 -1
  29. package/dist/tabs/index.mjs +1 -1
  30. package/dist/textarea/index.css +1 -1
  31. package/dist/toast/index.js +1 -1
  32. package/dist/toast/index.mjs +1 -1
  33. package/dist/tokens.css +1 -1
  34. package/dist/tree/index.css +1 -1
  35. package/dist/tree/index.js +1 -1
  36. package/dist/tree/index.mjs +1 -1
  37. package/package.json +4 -1
  38. package/skill/AGENTS-SNIPPET.md +60 -23
  39. package/skill/SKILL.md +34 -23
  40. package/skill/VERSION.json +4 -4
  41. package/skill/references/components/carousel.md +93 -0
  42. package/skill/references/components/dropdown.md +81 -2
  43. package/skill/references/components/ellipsis-tooltip.md +44 -0
  44. package/skill/references/components/empty.md +3 -2
  45. package/skill/references/components/select.md +1 -0
  46. package/skill/references/components/sidebar.md +14 -4
  47. package/skill/references/components/upload.md +53 -1
  48. package/skill/references/icons.md +3 -2
  49. package/skill/references/setup.md +14 -2
  50. package/skill/references/tokens.md +56 -21
  51. package/dist/chunk-3U36GSZF.js +0 -2
  52. package/dist/chunk-7TZ6IXXG.js +0 -1
  53. package/dist/chunk-DIXO53WK.mjs +0 -1
  54. package/dist/chunk-M2SC5LED.js +0 -1
  55. package/dist/chunk-PKNSR23I.mjs +0 -2
  56. package/dist/chunk-QBEHOXXU.mjs +0 -1
@@ -2,22 +2,24 @@
2
2
 
3
3
  > **本文件由 `packages/lingee-ui/scripts/gen-skill.mjs` 自动生成,禁止手工编辑。**
4
4
  > 供根 `AGENTS.md` 引用,避免手写清单随组件库迭代脱节。
5
- > 组件库 `0.0.8` | 图标库 `1.0.16`
5
+ > 组件库 `0.0.10` | 图标库 `1.0.16`
6
6
 
7
- ## 可用组件(37
7
+ ## 可用组件(39
8
8
 
9
9
  | 组件 | 名称 | 说明 |
10
10
  |------|------|------|
11
11
  | `Alert` | 消息通知 | 消息提示组件,用于页面中展示重要的提示信息。 |
12
12
  | `Avatar`、`AvatarGroup` | 头像 | 头像组件,用于展示用户头像或图标,支持图片、文字、默认图标三种形态。 |
13
13
  | `Button` | 按钮 | 用于触发一个操作,是用户与系统交互的基础元素。 |
14
+ | `Carousel`、`CarouselItem` | 轮播容器 | 水平轮播容器,用于在一屏内循环展示一组内容,支持自动播放、拖拽切换与圆点指示器。 |
14
15
  | `Checkbox`、`CheckboxGroup` | 多选框 | 在一组选项中进行多项选择。 |
15
16
  | `ColorPicker` | 颜色选择器 | 用于选择颜色值的交互组件。 |
16
17
  | `DatePicker` | 日期选择器 | 用于选择日期的输入组件。 |
17
18
  | `Dialog` | 弹出窗 | 模态对话框,用于需要用户确认或填写信息的场景。支持声明式和命令式两种调用方式。 |
18
19
  | `Divider` | 分割线 | 用于分隔内容区块,使页面结构更清晰。 |
19
20
  | `Drawer` | 抽屉 | 从屏幕边缘滑出的浮层面板,用于承载表单或详情内容。 |
20
- | `Dropdown` +13 个子组件 | 下拉菜单 | 向下弹出的操作菜单列表,支持图标、分组、危险操作、子菜单等。 |
21
+ | `Dropdown` +14 个子组件 | 下拉菜单 | 向下弹出的操作菜单列表,支持图标、分组、危险操作、子菜单等。 |
22
+ | `EllipsisTooltip` | 省略提示 | 单行省略文本,仅在真正被截断时才悬停显示完整内容。 |
21
23
  | `Empty`、`EmptyCard` | 空状态 | 当目标区域无数据时展示的空状态占位图,引导用户进行下一步操作。 |
22
24
  | `Flex` | 弹性布局 | 弹性布局容器,用于快速搭建横向/纵向排列,避免为简单布局单独写样式文件。 |
23
25
  | `Form` | 表单 | 数据录入和校验组件,支持垂直、水平、行内布局。 |
@@ -30,7 +32,7 @@
30
32
  | `RangePicker` | 日期范围选择器 | 用于选择日期范围的输入组件。 |
31
33
  | `ScrollArea`、`ScrollBar` | 自定义滚动区域 | 自定义样式的滚动容器组件,提供美观的滚动条体验。 |
32
34
  | `Select` | 选择器 | 下拉选择器,支持单选、多选、搜索和远程加载。 |
33
- | `Sidebar` +14 个子组件 | 侧边栏 | 侧边栏复合组件,提供根容器、页签、导航项、分组、列表项、占位项与底栏,通过 Sidebar.xxx 组合使用。 |
35
+ | `Sidebar` +26 个子组件 | 侧边栏 | 侧边栏复合组件,提供根容器、页签、导航项、分组、列表项、占位项与底栏,通过 Sidebar.xxx 组合使用。 |
34
36
  | `Skeleton` | 骨架屏 | 在数据加载完成前通过占位图形展示页面结构,降低用户等待焦虑。 |
35
37
  | `Slider` | 数值滑块 | 滑动输入器,用于在数值区间内进行选择。 |
36
38
  | `Spin` | 加载中 | 用于页面和区域的加载中状态指示器。 |
@@ -63,28 +65,28 @@
63
65
 
64
66
  按 CSS 属性选前缀:`color`/`fill`/`stroke` → `fg`,`background` → `bg`,`border-color`/`outline` → `border`。
65
67
 
66
- 亮暗变量名相同,`data-theme="dark"` 自动切换。色值列供**反查**(设计稿色值找 Token)与**比对**(少数 Token 亮暗语义不对称)使用,**业务代码禁止硬编码色值或引用 primitives**。
68
+ 亮暗变量名相同,`data-theme="dark"` 自动切换。色值列供**反查**(设计稿色值找 Token)与**比对**(少数 Token 亮暗语义不对称)使用,**不要把色值直接写进业务代码**。表里查不到所需颜色时可写硬编码(加注释标明来源),但**任何情况都不得引用 primitives**。
67
69
 
68
- ### ⚠️ 命名异常的 Token(照抄,不要纠正)
70
+ ### ⚠️ 已废弃的错拼 Token
69
71
 
70
- 设计源文件里的错拼,已被组件库使用不能改。按「正确」拼写会静默失效(CSS 变量不存在不报错,颜色直接丢失):
72
+ 早期从设计源文件带入的拼写错误,现已提供正确拼写。错拼名仅作兼容别名保留(与正确名同值),**后续版本会移除**,新代码一律用左列:
71
73
 
72
- | 实际可用 | 说明 |
73
- |---------|------|
74
- | `--lg-g-fg-color-indigo-defauit` | ~~`--lg-g-fg-color-indigo-default`~~ |
75
- | `--lg-g-fg-color-lime-defauit` | ~~`--lg-g-fg-color-lime-default`~~ |
76
- | `--lg-g-fg-color-violet-defauit` | ~~`--lg-g-fg-color-violet-default`~~ |
77
- | `--lg-g-bg-color-emeraid-translucent-soft` | ~~`--lg-g-bg-color-emerald-translucent-soft`~~ |
78
- | `--lg-g-fg-color-black-aint` | 片段 `aint` 非标准命名,照抄即可 |
74
+ | 正确拼写(用这个) | 已废弃 |
75
+ |-------------------|--------|
76
+ | `--lg-g-fg-color-black-faint` | ~~`--lg-g-fg-color-black-aint`~~ |
77
+ | `--lg-g-fg-color-indigo-default` | ~~`--lg-g-fg-color-indigo-defauit`~~ |
78
+ | `--lg-g-fg-color-lime-default` | ~~`--lg-g-fg-color-lime-defauit`~~ |
79
+ | `--lg-g-fg-color-violet-default` | ~~`--lg-g-fg-color-violet-defauit`~~ |
80
+ | `--lg-g-bg-color-emerald-translucent-soft` | ~~`--lg-g-bg-color-emeraid-translucent-soft`~~ |
79
81
 
80
- #### 前景色 fg(34
82
+ #### 前景色 fg(47
81
83
 
82
84
  | Token | 亮色 | 暗色 |
83
85
  |-------|------|------|
84
86
  | `--lg-g-fg-color-white-heavy` | `#FFFFFF` | `#FFFFFF` |
85
87
  | `--lg-g-fg-color-white-dark` | `#FFFFFF` | `rgba(255, 255, 255, 0.28)` |
86
88
  | `--lg-g-fg-color-black-moderate` | `rgba(0, 0, 0, 0.18)` | `rgba(255, 255, 255, 0.18)` |
87
- | `--lg-g-fg-color-black-aint` | `rgba(0, 0, 0, 0.28)` | `rgba(255, 255, 255, 0.28)` |
89
+ | `--lg-g-fg-color-black-faint` | `rgba(0, 0, 0, 0.28)` | `rgba(255, 255, 255, 0.28)` |
88
90
  | `--lg-g-fg-color-black-default` | `rgba(0, 0, 0, 0.46)` | `rgba(255, 255, 255, 0.46)` |
89
91
  | `--lg-g-fg-color-black-muted` | `rgba(0, 0, 0, 0.64)` | `rgba(255, 255, 255, 0.64)` |
90
92
  | `--lg-g-fg-color-black-strong` | `rgba(0, 0, 0, 0.82)` | `rgba(255, 255, 255, 0.82)` |
@@ -107,16 +109,29 @@
107
109
  | `--lg-g-fg-color-amber-default` | `#E28800` | `#E28800` |
108
110
  | `--lg-g-fg-color-teal-default` | `#00BFB8` | `#00BFB8` |
109
111
  | `--lg-g-fg-color-purple-default` | `#7F2AF3` | `#7F2AF3` |
110
- | `--lg-g-fg-color-indigo-defauit` | `#4343F5` | `#4343F5` |
112
+ | `--lg-g-fg-color-indigo-default` | `#4343F5` | `#4343F5` |
111
113
  | `--lg-g-fg-color-yellow-default` | `#D1A600` | `#D1A600` |
112
114
  | `--lg-g-fg-color-cyan-default` | `#0083D4` | `#0083D4` |
113
115
  | `--lg-g-fg-color-pink-default` | `#ED1165` | `#ED1165` |
114
116
  | `--lg-g-fg-color-fuchsia-default` | `#ED1DB9` | `#ED1DB9` |
115
117
  | `--lg-g-fg-color-emerald-default` | `#009D72` | `#009D72` |
116
- | `--lg-g-fg-color-lime-defauit` | `#5FBA04` | `#5FBA04` |
117
- | `--lg-g-fg-color-violet-defauit` | `#572FF7` | `#572FF7` |
118
+ | `--lg-g-fg-color-lime-default` | `#5FBA04` | `#5FBA04` |
119
+ | `--lg-g-fg-color-violet-default` | `#572FF7` | `#572FF7` |
120
+ | `--lg-g-fg-color-warning-low` | `#FF8D42` | `#FF8D42` |
121
+ | `--lg-g-fg-color-success-low` | `#08CC50` | `#08CC50` |
122
+ | `--lg-g-fg-color-amber-low` | `#FFB200` | `#FFB200` |
123
+ | `--lg-g-fg-color-teal-low` | `#00E5E5` | `#00E5E5` |
124
+ | `--lg-g-fg-color-purple-low` | `#8F40FF` | `#8F40FF` |
125
+ | `--lg-g-fg-color-indigo-low` | `#5155F6` | `#5155F6` |
126
+ | `--lg-g-fg-color-yellow-low` | `#FFE500` | `#FFE500` |
127
+ | `--lg-g-fg-color-cyan-low` | `#00A3F4` | `#00A3F4` |
128
+ | `--lg-g-fg-color-pink-low` | `#FF246D` | `#FF246D` |
129
+ | `--lg-g-fg-color-fuchsia-low` | `#F858D0` | `#F858D0` |
130
+ | `--lg-g-fg-color-emerald-low` | `#08C787` | `#08C787` |
131
+ | `--lg-g-fg-color-lime-low` | `#74D70B` | `#74D70B` |
132
+ | `--lg-g-fg-color-violet-low` | `#7858F9` | `#7858F9` |
118
133
 
119
- #### 背景色 bg(92
134
+ #### 背景色 bg(99
120
135
 
121
136
  | Token | 亮色 | 暗色 |
122
137
  |-------|------|------|
@@ -201,7 +216,7 @@
201
216
  | `--lg-g-bg-color-indigo-faint` | `#F5F6FF` | `rgba(81, 85, 246, 0.03)` |
202
217
  | `--lg-g-bg-color-indigo-faint-dark` | `#F5F6FF` | `#222327` |
203
218
  | `--lg-g-bg-color-gray-subtle` | `#F7F8FA` | `#F7F8FA` |
204
- | `--lg-g-bg-color-emeraid-translucent-soft` | `rgba(8, 199, 135, 0.08)` | `rgba(8, 199, 135, 0.08)` |
219
+ | `--lg-g-bg-color-emerald-translucent-soft` | `rgba(8, 199, 135, 0.08)` | `rgba(8, 199, 135, 0.08)` |
205
220
  | `--lg-g-bg-color-emerald-default` | `#009D72` | `#009D72` |
206
221
  | `--lg-g-bg-color-lime-translucent-soft` | `rgba(116, 215, 11, 0.08)` | `rgba(116, 215, 11, 0.08)` |
207
222
  | `--lg-g-bg-color-lime-default` | `#5FBA04` | `#5FBA04` |
@@ -211,9 +226,16 @@
211
226
  | `--lg-g-bg-color-violet-default` | `#572FF7` | `#572FF7` |
212
227
  | `--lg-g-bg-color-fuchsia-translucent-soft` | `rgba(248, 88, 208, 0.08)` | `rgba(248, 88, 208, 0.08)` |
213
228
  | `--lg-g-bg-color-fuchsia-default` | `#ED1DB9` | `#ED1DB9` |
214
- | `--lg-g-bg-color-page-default` | `#F7F7FA` | `#1A1A1A` |
229
+ | `--lg-g-bg-color-page-default` | `#F7F7FA` | `#191A1B` |
230
+ | `--lg-g-bg-color-white` | `#FAFAFA` | `#191A1B` |
231
+ | `--lg-g-bg-color-navigation` | `#F1F1F6` | `#191A1B` |
232
+ | `--lg-g-bg-color-white-tabs` | `#FFFFFF` | `rgba(255, 255, 255, 0.28)` |
233
+ | `--lg-g-bg-color-white-default` | `rgba(255, 255, 255, 0.46)` | `rgba(0, 0, 0, 0.46)` |
234
+ | `--lg-g-bg-color-success-translucent-subtle` | `rgba(8, 204, 80, 0.06)` | `rgba(8, 204, 80, 0.06)` |
235
+ | `--lg-g-bg-color-blue-translucent-subtle` | `rgba(77, 137, 255, 0.06)` | `rgba(77, 137, 255, 0.06)` |
236
+ | `--lg-g-bg-color-blue-translucent-muted` | `rgba(77, 137, 255, 0.12)` | `rgba(77, 137, 255, 0.28)` |
215
237
 
216
- #### 边框色 border(27
238
+ #### 边框色 border(42
217
239
 
218
240
  | Token | 亮色 | 暗色 |
219
241
  |-------|------|------|
@@ -244,6 +266,21 @@
244
266
  | `--lg-g-border-color-blue-translucent-soft` | `rgba(77, 137, 255, 0.08)` | `rgba(77, 137, 255, 0.08)` |
245
267
  | `--lg-g-border-color-blue-subtle` | `#E4EEFF` | `#183F96` |
246
268
  | `--lg-g-border-color-blue-default` | `#2970FF` | `#2970FF` |
269
+ | `--lg-g-border-color-black-default` | `rgba(0, 0, 0, 0.46)` | `rgba(255, 255, 255, 0.46)` |
270
+ | `--lg-g-border-color-warning-translucent-muted` | `rgba(255, 119, 0, 0.12)` | `rgba(255, 119, 0, 0.12)` |
271
+ | `--lg-g-border-color-danger-translucent-muted` | `rgba(255, 41, 59, 0.12)` | `rgba(255, 41, 59, 0.12)` |
272
+ | `--lg-g-border-color-success-translucent-muted` | `rgba(8, 204, 80, 0.12)` | `rgba(8, 204, 80, 0.12)` |
273
+ | `--lg-g-border-color-blue-translucent-default` | `rgba(77, 137, 255, 0.12)` | `rgba(77, 137, 255, 0.12)` |
274
+ | `--lg-g-border-color-amber-default` | `#E28800` | `#E28800` |
275
+ | `--lg-g-border-color-teal-default` | `#00BFB8` | `#00BFB8` |
276
+ | `--lg-g-border-color-emerald-default` | `#009D72` | `#009D72` |
277
+ | `--lg-g-border-color-lime-default` | `#5FBA04` | `#5FBA04` |
278
+ | `--lg-g-border-color-cyan-default` | `#0083D4` | `#0083D4` |
279
+ | `--lg-g-border-color-purple-default` | `#7F2AF3` | `#7F2AF3` |
280
+ | `--lg-g-border-color-indigo-default` | `#4343F5` | `#4343F5` |
281
+ | `--lg-g-border-color-violet-default` | `#572FF7` | `#572FF7` |
282
+ | `--lg-g-border-color-fuchsia-default` | `#ED1DB9` | `#ED1DB9` |
283
+ | `--lg-g-border-color-pink-default` | `#ED1165` | `#ED1165` |
247
284
  #### 其他(3)
248
285
 
249
286
  | Token | 亮色 | 暗色 |
package/skill/SKILL.md CHANGED
@@ -2,17 +2,17 @@
2
2
  name: lingee-ui-usage
3
3
  description: 使用 lingee-ui 组件库与 lingee-icon 图标库开发 React 界面。当需要编写含按钮、表单、弹窗、表格、下拉、页签、图标等 UI 的 React/TypeScript 代码,或需要查询 lingee-ui 组件 API、Design Token 语义变量、可用图标名时触发。关键词:lingee-ui、lingee-icon、组件库、图标库、Design Token、语义变量、lg- 前缀、UI 组件。
4
4
  metadata:
5
- lingeeUi: "0.0.8"
5
+ lingeeUi: "0.0.10"
6
6
  lingeeIcon: "1.0.16"
7
7
  generatedBy: "gen-skill.mjs"
8
8
  ---
9
9
 
10
10
  # lingee-ui 组件库使用技能
11
11
 
12
- Kingdee Lingee 设计体系的 React 组件库(37 个组件)与图标库(967 个图标)。
12
+ Kingdee Lingee 设计体系的 React 组件库(39 个组件)与图标库(968 个图标)。
13
13
  本技能面向**消费方项目**,只覆盖「如何用」,不含组件库内部开发约定。
14
14
 
15
- - 组件库版本 `0.0.8` | 图标库版本 `1.0.16`
15
+ - 组件库版本 `0.0.10` | 图标库版本 `1.0.16`
16
16
  - 组件在线预览:https://kingdee.github.io/lingee-ui/
17
17
  - 图标在线预览:https://kingdee.github.io/lingee-icon/
18
18
 
@@ -44,7 +44,7 @@ import "lingee-ui/styles.css"; // 必须,否则组件完全无样式
44
44
  import { LingeeProvider } from "lingee-ui";
45
45
 
46
46
  createRoot(el).render(
47
- <LingeeProvider locale="zh-CN">
47
+ <LingeeProvider>
48
48
  <App />
49
49
  </LingeeProvider>,
50
50
  );
@@ -59,13 +59,15 @@ createRoot(el).render(
59
59
  | `Alert` | 消息通知 | 消息提示组件,用于页面中展示重要的提示信息。 | `alert.md` | — |
60
60
  | `Avatar`、`AvatarGroup` | 头像 | 头像组件,用于展示用户头像或图标,支持图片、文字、默认图标三种形态。 | `avatar.md` | — |
61
61
  | `Button` | 按钮 | 用于触发一个操作,是用户与系统交互的基础元素。 | `button.md` | ✓ |
62
+ | `Carousel`、`CarouselItem` | 轮播容器 | 水平轮播容器,用于在一屏内循环展示一组内容,支持自动播放、拖拽切换与圆点指示器。 | `carousel.md` | — |
62
63
  | `Checkbox`、`CheckboxGroup` | 多选框 | 在一组选项中进行多项选择。 | `checkbox.md` | — |
63
64
  | `ColorPicker` | 颜色选择器 | 用于选择颜色值的交互组件。 | `color-picker.md` | — |
64
65
  | `DatePicker` | 日期选择器 | 用于选择日期的输入组件。 | `date-picker.md` | — |
65
66
  | `Dialog` | 弹出窗 | 模态对话框,用于需要用户确认或填写信息的场景。支持声明式和命令式两种调用方式。 | `dialog.md` | — |
66
67
  | `Divider` | 分割线 | 用于分隔内容区块,使页面结构更清晰。 | `divider.md` | — |
67
68
  | `Drawer` | 抽屉 | 从屏幕边缘滑出的浮层面板,用于承载表单或详情内容。 | `drawer.md` | — |
68
- | `Dropdown` +13 个子组件 | 下拉菜单 | 向下弹出的操作菜单列表,支持图标、分组、危险操作、子菜单等。 | `dropdown.md` | — |
69
+ | `Dropdown` +14 个子组件 | 下拉菜单 | 向下弹出的操作菜单列表,支持图标、分组、危险操作、子菜单等。 | `dropdown.md` | — |
70
+ | `EllipsisTooltip` | 省略提示 | 单行省略文本,仅在真正被截断时才悬停显示完整内容。 | `ellipsis-tooltip.md` | — |
69
71
  | `Empty`、`EmptyCard` | 空状态 | 当目标区域无数据时展示的空状态占位图,引导用户进行下一步操作。 | `empty.md` | — |
70
72
  | `Flex` | 弹性布局 | 弹性布局容器,用于快速搭建横向/纵向排列,避免为简单布局单独写样式文件。 | `flex.md` | — |
71
73
  | `Form` | 表单 | 数据录入和校验组件,支持垂直、水平、行内布局。 | `form.md` | — |
@@ -78,7 +80,7 @@ createRoot(el).render(
78
80
  | `RangePicker` | 日期范围选择器 | 用于选择日期范围的输入组件。 | `range-picker.md` | — |
79
81
  | `ScrollArea`、`ScrollBar` | 自定义滚动区域 | 自定义样式的滚动容器组件,提供美观的滚动条体验。 | `scroll-area.md` | — |
80
82
  | `Select` | 选择器 | 下拉选择器,支持单选、多选、搜索和远程加载。 | `select.md` | — |
81
- | `Sidebar` +14 个子组件 | 侧边栏 | 侧边栏复合组件,提供根容器、页签、导航项、分组、列表项、占位项与底栏,通过 Sidebar.xxx 组合使用。 | `sidebar.md` | — |
83
+ | `Sidebar` +26 个子组件 | 侧边栏 | 侧边栏复合组件,提供根容器、页签、导航项、分组、列表项、占位项与底栏,通过 Sidebar.xxx 组合使用。 | `sidebar.md` | — |
82
84
  | `Skeleton` | 骨架屏 | 在数据加载完成前通过占位图形展示页面结构,降低用户等待焦虑。 | `skeleton.md` | — |
83
85
  | `Slider` | 数值滑块 | 滑动输入器,用于在数值区间内进行选择。 | `slider.md` | — |
84
86
  | `Spin` | 加载中 | 用于页面和区域的加载中状态指示器。 | `spin.md` | — |
@@ -132,16 +134,15 @@ import { Search, Trash } from "lingee-icon";
132
134
  图标默认 `size="1em"`、`color="currentColor"`,即随父级字号与文字颜色走,
133
135
  所以**优先用 CSS 控制颜色**而不是传 `color` prop。
134
136
 
135
- 完整 Props 见 `references/setup.md`,967 个图标的名称与中文语义索引见 `references/icons.md`。
137
+ 完整 Props 见 `references/setup.md`,968 个图标的名称与中文语义索引见 `references/icons.md`。
136
138
  选图标时必须从索引中查找,**不要凭猜测写图标名**,也不要从 `@ant-design/icons`、`lucide-react` 等其他库引入。
137
139
 
138
- ## 颜色:只用语义 Token
140
+ ## 颜色:优先用语义 Token
139
141
 
140
- 三条铁律:
142
+ 两条铁律:
141
143
 
142
- 1. **禁止硬编码色值**(`#495DFF`、`rgb(...)`、`red`),也禁止在 tsx 中写 hex/rgb
143
- 2. **禁止使用 primitives 色板变量**(`--lg-primary-600`、`--lg-black-82`),它们不随暗色模式切换
144
- 3. 只用语义层 `--lg-g-*` 变量,按 CSS 属性选前缀:
144
+ 1. **禁止使用 primitives 色板变量**(`--lg-primary-600`、`--lg-black-82`),它们不随暗色模式切换,这条没有例外
145
+ 2. 优先用语义层 `--lg-g-*` 变量,按 CSS 属性选前缀:
145
146
 
146
147
  | CSS 属性 | Token 前缀 |
147
148
  |----------|-----------|
@@ -156,7 +157,7 @@ import { Search, Trash } from "lingee-icon";
156
157
  | 文本-标题/正文 | `var(--lg-g-fg-color-black-strong)` | `rgba(0, 0, 0, 0.82)` |
157
158
  | 文本-次要 | `var(--lg-g-fg-color-black-muted)` | `rgba(0, 0, 0, 0.64)` |
158
159
  | 文本-辅助说明 | `var(--lg-g-fg-color-black-default)` | `rgba(0, 0, 0, 0.46)` |
159
- | 文本-禁用/占位 | `var(--lg-g-fg-color-black-aint)` | `rgba(0, 0, 0, 0.28)` |
160
+ | 文本-禁用/占位 | `var(--lg-g-fg-color-black-faint)` | `rgba(0, 0, 0, 0.28)` |
160
161
  | 文本-品牌色 | `var(--lg-g-fg-color-primary-default)` | `#495DFF` |
161
162
  | 文本-危险 | `var(--lg-g-fg-color-danger-default)` | `#F12234` |
162
163
  | 文本-白色 | `var(--lg-g-fg-color-white-heavy)` | `#FFFFFF` |
@@ -175,23 +176,33 @@ import { Search, Trash } from "lingee-icon";
175
176
 
176
177
  暗色模式给 `<html>` 加 `data-theme="dark"` 即自动切换,无需额外处理。
177
178
 
178
- ### 命名异常的 Token
179
+ ### 已废弃的错拼 Token
179
180
 
180
- 以下 Token 名在设计源文件里拼错了,但已被组件库使用**不能改**。按正确拼写写出来的变量不存在,
181
- CSS 不报错、颜色直接丢失,属于极难排查的静默失效:
181
+ 以下 Token 早期从设计源文件带入了拼写错误,现已提供正确拼写。错拼名作为兼容别名保留、与正确名同值,
182
+ 但**会在后续版本移除**。改动存量代码时顺手换成正确名:
182
183
 
183
- - `var(--lg-g-fg-color-indigo-defauit)` ← 照抄,不要写成 `--lg-g-fg-color-indigo-default`
184
- - `var(--lg-g-fg-color-lime-defauit)` ← 照抄,不要写成 `--lg-g-fg-color-lime-default`
185
- - `var(--lg-g-fg-color-violet-defauit)` ← 照抄,不要写成 `--lg-g-fg-color-violet-default`
186
- - `var(--lg-g-bg-color-emeraid-translucent-soft)` ← 照抄,不要写成 `--lg-g-bg-color-emerald-translucent-soft`
187
- - `var(--lg-g-fg-color-black-aint)` ← 片段 `aint` 命名不规范,照抄即可
184
+ - `var(--lg-g-fg-color-black-faint)` ← 用这个,不要写 `--lg-g-fg-color-black-aint`
185
+ - `var(--lg-g-fg-color-indigo-default)` ← 用这个,不要写 `--lg-g-fg-color-indigo-defauit`
186
+ - `var(--lg-g-fg-color-lime-default)` ← 用这个,不要写 `--lg-g-fg-color-lime-defauit`
187
+ - `var(--lg-g-fg-color-violet-default)` ← 用这个,不要写 `--lg-g-fg-color-violet-defauit`
188
+ - `var(--lg-g-bg-color-emerald-translucent-soft)` ← 用这个,不要写 `--lg-g-bg-color-emeraid-translucent-soft`
189
+
190
+ 在旧代码里看到错拼名不要照抄延用,也不要把两者当成不同的 Token。
191
+
192
+ ### 硬编码色值的允许场景
193
+
194
+ 语义层覆盖不到时可以写硬编码,但只限这两种情况:
195
+
196
+ - **Token 表里查不到所需颜色** —— 写硬编码并加注释标明来源(如设计稿标注值),同时告知用户缺口
197
+ - **任何主题下都不变的装饰性颜色** —— 如品牌插画、固定配色的图表系列色
198
+
199
+ 其余场景一律用语义 Token。**注意**:查不到 Token 时可以硬编码,但**不能自行新增 `--lg-g-*` 变量、也不能退回 primitives**。
188
200
 
189
201
  ### 拿设计稿色值找 Token
190
202
 
191
203
  设计稿给的是 hex 时,到 `references/tokens.md` 搜该 hex,表格含亮/暗两列最终色值,可直接反查。
192
- **搜不到不等于可以硬编码** —— 应向用户说明缺口并等设计确认,不要自行新增变量、也不要退回 primitives。
193
204
 
194
- 全量 156 个语义 Token 见 `references/tokens.md`。
205
+ 全量 191 个语义 Token 见 `references/tokens.md`。
195
206
 
196
207
  ## 查阅详细 API
197
208
 
@@ -1,7 +1,7 @@
1
1
  {
2
- "lingeeUi": "0.0.8",
2
+ "lingeeUi": "0.0.10",
3
3
  "lingeeIcon": "1.0.16",
4
- "componentCount": 37,
5
- "iconCount": 967,
6
- "sourceHash": "d9af1a1faa2b5317"
4
+ "componentCount": 39,
5
+ "iconCount": 968,
6
+ "sourceHash": "8acc37347347b8a2"
7
7
  }
@@ -0,0 +1,93 @@
1
+ # Carousel 轮播容器
2
+
3
+ 水平轮播容器,用于在一屏内循环展示一组内容,支持自动播放、拖拽切换与圆点指示器。
4
+
5
+ - 导入:`import { Carousel, CarouselItem } from "lingee-ui";`
6
+ - 可用类型:`CarouselProps`, `CarouselItemProps`, `CarouselApi`, `CarouselDotsPlacement`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { Carousel } from "lingee-ui";
12
+
13
+ const slides = ["Slide 1", "Slide 2", "Slide 3"];
14
+
15
+ export default function BasicDemo() {
16
+ return (
17
+ <Carousel autoplay loop style={{ borderRadius: 24, overflow: "hidden" }}>
18
+ {slides.map((label) => (
19
+ <Carousel.Item key={label}>
20
+ <div
21
+ style={{
22
+ display: "flex",
23
+ alignItems: "center",
24
+ justifyContent: "center",
25
+ height: 200,
26
+ background: "var(--lg-g-bg-color-primary-translucent-soft)",
27
+ color: "var(--lg-g-fg-color-primary-default)",
28
+ fontSize: 32,
29
+ fontWeight: 600,
30
+ }}
31
+ >
32
+ {label}
33
+ </div>
34
+ </Carousel.Item>
35
+ ))}
36
+ </Carousel>
37
+ );
38
+ }
39
+ ```
40
+
41
+ ## API
42
+
43
+ ### Carousel
44
+
45
+ | 属性 | 说明 | 类型 | 默认值 |
46
+ |------|------|------|--------|
47
+ | `children` | 轮播项,需为 `Carousel.Item` | `ReactNode` | - |
48
+ | `loop` | 是否循环轮播 | `boolean` | `true` |
49
+ | `autoplay` | 是否开启自动轮播 | `boolean` | `false` |
50
+ | `autoplayDelay` | 自动轮播间隔(ms),建议 3000 ~ 6000 | `number` | `4000` |
51
+ | `stopOnMouseEnter` | 鼠标移入时暂停,移出恢复 | `boolean` | `true` |
52
+ | `stopOnInteraction` | 手动交互后彻底停止自动轮播 | `boolean` | `false` |
53
+ | `draggable` | 是否允许拖拽 / 滑动切换 | `boolean` | `true` |
54
+ | `slidesPerView` | 每屏展示的轮播项数量 | `number` | `1` |
55
+ | `gap` | 轮播项之间的间距(px) | `number` | `0` |
56
+ | `defaultIndex` | 初始选中序号(0 开始) | `number` | `0` |
57
+ | `dots` | 是否展示圆点指示器 | `boolean` | `true` |
58
+ | `dotsPlacement` | 指示器位置 | `"inside" \| "outside"` | `"inside"` |
59
+ | `dotsGlassy` | 指示器是否使用半透明毛玻璃胶囊底 | `boolean` | `false` |
60
+ | `arrows` | 是否展示左右箭头 | `boolean` | `false` |
61
+ | `onChange` | 选中项变化回调 | `(index: number) => void` | - |
62
+ | `apiRef` | 获取轮播实例 | `Ref<CarouselApi>` | - |
63
+ | `className` | 自定义类名 | `string` | - |
64
+ | `style` | 自定义样式 | `CSSProperties` | - |
65
+
66
+ ### Carousel.Item
67
+
68
+ | 属性 | 说明 | 类型 | 默认值 |
69
+ |------|------|------|--------|
70
+ | `children` | 轮播项内容 | `ReactNode` | - |
71
+ | `className` | 自定义类名 | `string` | - |
72
+ | `style` | 自定义样式 | `CSSProperties` | - |
73
+
74
+ ### CarouselApi
75
+
76
+ | 方法 | 说明 | 类型 |
77
+ |------|------|------|
78
+ | `scrollTo` | 跳转到指定序号,`jump` 为 `true` 时不播放过渡 | `(index: number, jump?: boolean) => void` |
79
+ | `scrollPrev` | 上一张 | `() => void` |
80
+ | `scrollNext` | 下一张 | `() => void` |
81
+ | `canScrollPrev` | 是否可向前翻页(`loop` 下恒为 `true`) | `() => boolean` |
82
+ | `canScrollNext` | 是否可向后翻页(`loop` 下恒为 `true`) | `() => boolean` |
83
+ | `selectedIndex` | 当前选中序号 | `() => number` |
84
+ | `count` | 总页数 | `() => number` |
85
+ | `play` | 启动自动轮播 | `() => void` |
86
+ | `stop` | 暂停自动轮播 | `() => void` |
87
+ | `reInit` | 重新初始化 | `() => void` |
88
+
89
+ ## 注意事项
90
+
91
+ - 圆角需设置在 `Carousel` 根节点上,内部 viewport 通过 `border-radius: inherit` 继承裁剪
92
+ - `autoplayDelay` 变化不会自动应用到已挂载的实例,如需动态切换请配合 `key` 强制重挂载
93
+ - 内容色彩复杂导致圆点对比度不足时,开启 `dotsGlassy` 增加胶囊底
@@ -2,8 +2,8 @@
2
2
 
3
3
  向下弹出的操作菜单列表,支持图标、分组、危险操作、子菜单等。
4
4
 
5
- - 导入:`import { Dropdown, DropdownTrigger, DropdownContent, DropdownItem, DropdownCheckboxItem, DropdownRadioGroup, DropdownRadioItem, DropdownLabel, DropdownSeparator, DropdownGroup, DropdownSub, DropdownSubTrigger, DropdownSubContent, DropdownButton } from "lingee-ui";`
6
- - 可用类型:`DropdownProps`, `DropdownTriggerProps`, `DropdownContentProps`, `DropdownItemProps`, `DropdownCheckboxItemProps`, `DropdownRadioGroupProps`, `DropdownRadioItemProps`, `DropdownLabelProps`, `DropdownSeparatorProps`, `DropdownGroupProps`, `DropdownSubProps`, `DropdownSubTriggerProps`, `DropdownSubContentProps`, `DropdownItemData`, `DropdownMenuItemData`, `DropdownSeparatorData`, `DropdownLabelData`, `DropdownButtonProps`
5
+ - 导入:`import { Dropdown, DropdownTrigger, DropdownContent, DropdownItem, DropdownCheckboxItem, DropdownRadioGroup, DropdownRadioItem, DropdownLabel, DropdownSeparator, DropdownGroup, DropdownStatus, DropdownSub, DropdownSubTrigger, DropdownSubContent, DropdownButton } from "lingee-ui";`
6
+ - 可用类型:`DropdownEllipsisTooltip`, `DropdownProps`, `DropdownTriggerProps`, `DropdownContentProps`, `DropdownItemProps`, `DropdownCheckboxItemProps`, `DropdownRadioGroupProps`, `DropdownRadioItemProps`, `DropdownLabelProps`, `DropdownSeparatorProps`, `DropdownGroupProps`, `DropdownStatusProps`, `DropdownStatusType`, `DropdownStatusText`, `DropdownSubProps`, `DropdownSubTriggerProps`, `DropdownSubContentProps`, `DropdownItemData`, `DropdownMenuItemData`, `DropdownSeparatorData`, `DropdownLabelData`, `DropdownButtonProps`
7
7
 
8
8
  ## 最小示例
9
9
 
@@ -38,8 +38,62 @@ export default function BasicDemo() {
38
38
  | `modal` | 是否为模态弹出 | `boolean` | `true` |
39
39
  | `disabled` | 是否禁用 | `boolean` | `false` |
40
40
  | `selectedKeys` | 选中项 key 数组(显示勾选) | `string[]` | - |
41
+ | `loading` | 加载中,面板显示加载占位 | `boolean` | `false` |
42
+ | `loadError` | 加载失败,面板显示失败占位(优先级低于 `loading`) | `boolean` | `false` |
43
+ | `onRetry` | 失败占位的重试回调,传入后占位可点击 | `() => void` | - |
44
+ | `statusText` | 覆盖三态文案,未传的键走语言包 | `DropdownStatusText` | - |
45
+ | `loadingContent` | 自定义加载中内容 | `ReactNode` | - |
46
+ | `errorContent` | 自定义失败内容 | `ReactNode` | - |
47
+ | `emptyContent` | 自定义空态内容 | `ReactNode` | - |
48
+ | `dropdownRender` | 包裹菜单内容 | `(menu: ReactNode) => ReactNode` | - |
49
+ | `header` | 固定头部内容 | `ReactNode` | - |
50
+ | `footer` | 固定底部内容 | `ReactNode` | - |
41
51
  | `children` | 触发器元素 | `ReactNode` | - |
42
52
 
53
+ ### DropdownStatus
54
+
55
+ 面板内三态占位。`items` 模式下由 Dropdown 自动渲染,Compound Component 模式需手动使用。
56
+
57
+ | 属性 | 说明 | 类型 | 默认值 |
58
+ |------|------|------|--------|
59
+ | `status` | 占位状态 | `"loading" \| "empty" \| "error"` | - |
60
+ | `description` | 覆盖该状态的默认文案 | `ReactNode` | 取自语言包 |
61
+ | `onRetry` | 重试回调,仅 `status="error"` 生效 | `() => void` | - |
62
+ | `className` | 额外类名 | `string` | - |
63
+
64
+ ### DropdownSubTrigger
65
+
66
+ | 属性 | 说明 | 类型 | 默认值 |
67
+ |------|------|------|--------|
68
+ | `icon` | 前缀图标 | `ReactNode` | - |
69
+ | `disabled` | 是否禁用 | `boolean` | `false` |
70
+ | `onMouseEnter` | 鼠标进入回调,在内部展开子菜单后执行,可用于懒加载数据 | `MouseEventHandler` | - |
71
+ | `ellipsisTooltip` | 文本溢出时悬浮显示完整内容,见 [长文本溢出提示](#长文本溢出提示) | `boolean \| ReactNode` | - |
72
+ | `children` | 触发项内容 | `ReactNode` | - |
73
+
74
+ ### DropdownSubContent
75
+
76
+ | 属性 | 说明 | 类型 | 默认值 |
77
+ |------|------|------|--------|
78
+ | `side` | 弹出方向 | `"top" \| "bottom" \| "left" \| "right"` | `"right"` |
79
+ | `align` | 对齐方式 | `"start" \| "center" \| "end"` | `"start"` |
80
+ | `sideOffset` | 侧向偏移 | `number` | `8` |
81
+ | `style.maxHeight` | 覆盖面板高度上限 | `number \| string` | `346` |
82
+ | `children` | 子菜单内容 | `ReactNode` | - |
83
+
84
+ 子菜单与主面板同口径限高:默认上限 346px(10 个菜单项),并始终与视口可用空间取较小值,超出部分由内置 ScrollArea 滚动。选项数量不受控的场景(如租户列表)无需额外处理。
85
+
86
+ 承载设计高度更大的自定义面板时才需抬高上限,传 `style={{ maxHeight: ... }}` 或在类名上改 `--lg-dropdown-sub-max-height`:
87
+
88
+ ```less
89
+ .myCustomSubPanel {
90
+ // 写面板实际需要的高度,不要写 100vh
91
+ --lg-dropdown-sub-max-height: 420px;
92
+ }
93
+ ```
94
+
95
+ 给一个具体像素值而非 `100vh`:视口兜底依赖 Radix 注入的 `--radix-popover-content-available-height`,该变量在未测量完或降级路径下为空,此时若上限也是 `100vh`,`min()` 两边同值,兜底就失效了。
96
+
43
97
  ### DropdownContent
44
98
 
45
99
  | 属性 | 说明 | 类型 | 默认值 |
@@ -63,8 +117,33 @@ export default function BasicDemo() {
63
117
  | `icon` | 前缀图标 | `ReactNode` | - |
64
118
  | `description` | 副标题描述(显示在主文本下方) | `ReactNode` | - |
65
119
  | `selected` | 是否选中(显示勾选) | `boolean` | `false` |
120
+ | `ellipsisTooltip` | 文本溢出时悬浮显示完整内容,详见下方章节 | `boolean \| ReactNode` | - |
66
121
  | `children` | 菜单项内容 | `ReactNode` | - |
67
122
 
123
+ ### 长文本溢出提示
124
+
125
+ 面板宽度默认随内容撑开,长文案会把浮层顶出屏幕。给菜单项传 `ellipsisTooltip` 后文本带最大宽度(240px)并单行截断,**仅在真正被截断时**悬浮显示完整内容 —— 未截断不弹,不会出现重复可见文字的干扰提示。
126
+
127
+ ```tsx
128
+ {/* true:取 children 作为提示内容 */}
129
+ <DropdownItem ellipsisTooltip>{tenantName}</DropdownItem>
130
+
131
+ {/* children 是 JSX 时显式传纯文本,否则整块 JSX 会被塞进浮层 */}
132
+ <DropdownItem ellipsisTooltip={file.name}>
133
+ <span>{file.name}</span><Tag>new</Tag>
134
+ </DropdownItem>
135
+ ```
136
+
137
+ `DropdownItem` / `DropdownRadioItem` / `DropdownCheckboxItem` / `DropdownSubTrigger` 均支持,`items` 快捷模式在数据项上同名传入即可。
138
+
139
+ 不传该属性时行为与此前完全一致(不限宽、不打点、不弹提示),故存量菜单无需改动。限宽可通过 `--lg-dropdown-label-max-width` 调整:
140
+
141
+ ```less
142
+ .my-menu {
143
+ --lg-dropdown-label-max-width: 320px;
144
+ }
145
+ ```
146
+
68
147
  ## DropdownButton 触发器按钮
69
148
 
70
149
  统一的下拉触发器按钮组件,提供两种视觉态:
@@ -0,0 +1,44 @@
1
+ # EllipsisTooltip 省略提示
2
+
3
+ 单行省略文本,仅在真正被截断时才悬停显示完整内容。
4
+
5
+ - 导入:`import { EllipsisTooltip } from "lingee-ui";`
6
+ - 可用类型:`EllipsisTooltipProps`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { EllipsisTooltip } from "lingee-ui";
12
+
13
+ const LONG_TEXT =
14
+ "A rather long single-line text that gets clipped and reveals its full content on hover";
15
+
16
+ export default function BasicDemo() {
17
+ return (
18
+ <div style={{ display: "flex", flexDirection: "column", gap: 12, width: 240 }}>
19
+ {/* Clipped: hover reveals the full text */}
20
+ <EllipsisTooltip content={LONG_TEXT}>{LONG_TEXT}</EllipsisTooltip>
21
+
22
+ {/* Not clipped: no tooltip, so it never repeats visible content */}
23
+ <EllipsisTooltip content="Short text">Short text</EllipsisTooltip>
24
+ </div>
25
+ );
26
+ }
27
+ ```
28
+
29
+ ## API
30
+
31
+ | 属性 | 说明 | 类型 | 默认值 |
32
+ |------|------|------|--------|
33
+ | `content` | 提示内容,为空时不弹出 | `ReactNode` | - |
34
+ | `children` | 文本内容 | `ReactNode` | - |
35
+ | `as` | 容器标签 | `"span" \| "div"` | `"span"` |
36
+ | `ellipsis` | 是否自带单行省略样式 | `boolean` | `true` |
37
+ | `threshold` | 触发阈值(0~1),文本宽度超过 `容器宽度 × threshold` 时弹出 | `number` | `1` |
38
+ | `maxLength` | 提示内容最大字符数,超出截断 | `number` | `2000` |
39
+ | `anchorClassName` | 祖先 className,浮层最大宽度对齐该祖先 | `string` | - |
40
+ | `getPopupContainer` | 浮层挂载容器,接收触发节点 | `(node: HTMLElement) => HTMLElement` | - |
41
+ | `placement` | 弹出方向 | `TooltipPlacement` | `"top"` |
42
+ | `maxWidth` | 浮层最大宽度(px),`anchorClassName` 命中时以后者为准 | `number` | `280` |
43
+
44
+ 其余属性透传给 `Tooltip`(`delayDuration`、`sideOffset`、`arrow` 等)。
@@ -34,9 +34,10 @@ export default function BasicDemo() {
34
34
  | `status` | 状态,决定默认图标与无障碍语义 | `"loading" \| "empty" \| "error"` | - |
35
35
  | `description` | 描述文案 | `ReactNode` | - |
36
36
  | `icon` | 覆盖默认图标;传 `null` 不渲染图标 | `ReactNode \| null` | 按 `status` 取 |
37
- | `variant` | 布局:`block` 区块级 / `inline` 行内轻量 | `"block" \| "inline"` | `"block"` |
37
+ | `size` | 尺寸,语义同 `Empty`,透传给内部 `Empty` | `"sm" \| "md" \| "lg"` | `"sm"` |
38
+ | `variant` | 留白密度:`block` 区块级 / `inline` 行内轻量 | `"block" \| "inline"` | `"block"` |
38
39
  | `spacing` | 留白档位。`loose` 为顶部大留白(列表级空态) | `"none" \| "normal" \| "loose"` | `"normal"` |
39
- | `onRetry` | 重试回调。仅 `status="error"` 生效,传入后整体可点击 | `() => void` | - |
40
+ | `onRetry` | 重试回调。仅 `status="error"` 生效,传入后整体可点击,并自动追加主题色「重试」 | `() => void` | - |
40
41
  | `className` | 自定义类名 | `string` | - |
41
42
  | `style` | 自定义内联样式 | `CSSProperties` | - |
42
43
 
@@ -46,6 +46,7 @@ export default function BasicDemo() {
46
46
  | `allowClear` | 是否可清空 | `boolean` | `false` |
47
47
  | `loading` | 是否加载中 | `boolean` | `false` |
48
48
  | `loadError` | 是否加载失败 | `boolean` | `false` |
49
+ | `onRetry` | 加载失败后的重试回调。传入后失败缺省态可点击并追加「重试」 | `() => void` | - |
49
50
  | `size` | 尺寸 | `"sm" \| "md" \| "lg"` | `"md"` |
50
51
  | `suffixIcon` | 后缀图标 | `ReactNode` | - |
51
52
  | `maxTagCount` | 多选模式最多显示 Tag 数 | `number` | - |
@@ -2,8 +2,8 @@
2
2
 
3
3
  侧边栏复合组件,提供根容器、页签、导航项、分组、列表项、占位项与底栏,通过 Sidebar.xxx 组合使用。
4
4
 
5
- - 导入:`import { Sidebar, SidebarRoot, SidebarHeader, SidebarTabBar, SidebarNavItem, SidebarCollapsibleNavItem, SidebarGroupHeader, SidebarListItem, SidebarCollapsibleListItem, SidebarFooter, SidebarFooterMenuStaticRow, SidebarFooterBadge, SidebarUsageBar, SidebarUsagePanel, SidebarUsagePanelSection } from "lingee-ui";`
6
- - 可用类型:`SidebarRootProps`, `SidebarHeaderProps`, `SidebarTabBarProps`, `SidebarTabItem`, `SidebarNavItemProps`, `SidebarCollapsibleNavItemProps`, `SidebarCollapsibleNavItemChild`, `SidebarGroupHeaderProps`, `SidebarListItemProps`, `SidebarIndicatorType`, `SidebarCollapsibleListItemProps`, `SidebarCaretPlacement`, `SidebarFooterProps`, `SidebarFooterMenuStaticRowProps`, `SidebarFooterBadgeProps`, `SidebarUsageBarProps`, `SidebarUsageTone`, `SidebarUsagePanelProps`, `SidebarUsagePanelSectionProps`
5
+ - 导入:`import { Sidebar, SidebarRoot, SidebarHeader, SidebarTabBar, SidebarNavItem, SidebarCollapsibleNavItem, SidebarGroupHeader, SidebarListItem, SidebarCollapsibleListItem, SidebarFooter, SidebarFooterUser, SidebarFooterMenuStaticRow, SidebarFooterBadge, SidebarUsageBar, SidebarUsagePanel, SidebarUsagePanelSection, SidebarFeedbackModal, SidebarFeedbackSubmitPanel, SidebarFeedbackField, SidebarFeedbackFileWall, SidebarFeedbackHistoryPanel, SidebarFeedbackHistoryItem, SidebarFeedbackDetail, SidebarFeedbackAttachmentRow, SidebarFeedbackSimilarItem, SidebarAuthImage, formatFileSize } from "lingee-ui";`
6
+ - 可用类型:`FeedbackAttachment`, `FeedbackStatus`, `FeedbackHistoryItem`, `FeedbackReply`, `FeedbackSimilarItem`, `FeedbackHistoryDetail`, `FeedbackTabKey`, `FeedbackFileWallItem`, `SidebarFeedbackModalProps`, `SidebarFeedbackSubmitPanelProps`, `SidebarFeedbackFieldProps`, `SidebarFeedbackFileWallProps`, `SidebarFeedbackHistoryPanelProps`, `SidebarFeedbackHistoryItemProps`, `SidebarFeedbackDetailProps`, `SidebarFeedbackAttachmentRowProps`, `SidebarFeedbackSimilarItemProps`, `SidebarAuthImageProps`, `SidebarRootProps`, `SidebarHeaderProps`, `SidebarTabBarProps`, `SidebarTabItem`, `SidebarNavItemProps`, `SidebarCollapsibleNavItemProps`, `SidebarCollapsibleNavItemChild`, `SidebarGroupHeaderProps`, `SidebarListItemProps`, `SidebarIndicatorType`, `SidebarCollapsibleListItemProps`, `SidebarCaretPlacement`, `SidebarFooterProps`, `SidebarFooterUserProps`, `SidebarFooterMenuStaticRowProps`, `SidebarFooterBadgeProps`, `SidebarUsageBarProps`, `SidebarUsageTone`, `SidebarUsagePanelProps`, `SidebarUsagePanelSectionProps`
7
7
 
8
8
  ## 最小示例
9
9
 
@@ -122,7 +122,7 @@ export default function BasicDemo() {
122
122
  | `onToggle` | 切换回调 | `() => void` | - |
123
123
  | `actions` | 右侧操作区插槽 | `ReactNode` | - |
124
124
 
125
- 折叠箭头与操作区悬停显现,展开态箭头常显。
125
+ 折叠箭头与操作区均仅悬停显现,展开态也不常显。
126
126
 
127
127
  ### Sidebar.ListItem
128
128
 
@@ -152,14 +152,24 @@ export default function BasicDemo() {
152
152
 
153
153
  ### Sidebar.Footer
154
154
 
155
+ 继承 `Sidebar.FooterUser` 的全部属性(不传 `children` 时透传给内建用户区),另有:
156
+
157
+ | 属性 | 说明 | 类型 | 默认值 |
158
+ |------|------|------|--------|
159
+ | `actions` | 右侧动作区插槽 | `ReactNode` | - |
160
+ | `children` | 自定义左侧内容,传入时忽略 `avatar`/`name` 等 | `ReactNode` | - |
161
+
162
+ ### Sidebar.FooterUser
163
+
155
164
  | 属性 | 说明 | 类型 | 默认值 |
156
165
  |------|------|------|--------|
157
166
  | `avatar` | 头像插槽 | `ReactNode` | - |
158
167
  | `name` | 名称,为空时不渲染身份区 | `ReactNode` | - |
159
168
  | `nameSuffix` | 名称后插槽(套餐标签等) | `ReactNode` | - |
160
169
  | `menuOpen` | 菜单展开态,驱动触发区高亮与箭头旋转 | `boolean` | `false` |
170
+ | `showCaret` | 是否显示展开箭头 | `boolean` | `false` |
171
+ | `nameTooltip` | 姓名超长时 hover 出全称提示 | `boolean` | `true` |
161
172
  | `onTriggerClick` | 点击触发区,回传 `DOMRect` 供手动定位浮层 | `(rect: DOMRect) => void` | - |
162
- | `actions` | 右侧动作区插槽 | `ReactNode` | - |
163
173
 
164
174
  ### Sidebar.FooterMenuStaticRow
165
175