lingee-ui 0.0.6 → 0.0.7

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 (100) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/dist/button/index.css +1 -1
  3. package/dist/button/index.d.mts +1 -1
  4. package/dist/button/index.d.ts +1 -1
  5. package/dist/button/index.js +1 -1
  6. package/dist/button/index.mjs +1 -1
  7. package/dist/chunk-7F53VFM6.mjs +1 -0
  8. package/dist/chunk-FQRDHJQZ.mjs +1 -0
  9. package/dist/chunk-JKY43GCS.mjs +1 -0
  10. package/dist/chunk-KQ733636.mjs +1 -0
  11. package/dist/chunk-KT3HSLBA.js +1 -0
  12. package/dist/chunk-P56ABRDC.js +1 -0
  13. package/dist/chunk-PQVYDWUK.js +1 -0
  14. package/dist/chunk-RM4W5RV7.mjs +1 -0
  15. package/dist/{chunk-MUKM5CN4.js → chunk-SXHF5CXB.js} +1 -1
  16. package/dist/chunk-T5QR25R6.js +1 -0
  17. package/dist/{index-B4ySDWo5.d.mts → index-BVXwKHfX.d.mts} +2 -2
  18. package/dist/{index-B4ySDWo5.d.ts → index-BVXwKHfX.d.ts} +2 -2
  19. package/dist/index.css +1 -1
  20. package/dist/index.d.mts +434 -111
  21. package/dist/index.d.ts +434 -111
  22. package/dist/index.js +2 -2
  23. package/dist/index.mjs +2 -2
  24. package/dist/input/index.css +1 -1
  25. package/dist/input/index.d.mts +9 -3
  26. package/dist/input/index.d.ts +9 -3
  27. package/dist/input/index.js +1 -1
  28. package/dist/input/index.mjs +1 -1
  29. package/dist/popover/index.d.mts +6 -6
  30. package/dist/popover/index.d.ts +6 -6
  31. package/dist/switch/index.d.mts +2 -2
  32. package/dist/switch/index.d.ts +2 -2
  33. package/dist/tabs/index.css +1 -1
  34. package/dist/tabs/index.d.mts +10 -6
  35. package/dist/tabs/index.d.ts +10 -6
  36. package/dist/tabs/index.js +1 -1
  37. package/dist/tabs/index.mjs +1 -1
  38. package/dist/textarea/index.d.mts +2 -2
  39. package/dist/textarea/index.d.ts +2 -2
  40. package/dist/toast/index.css +1 -1
  41. package/dist/toast/index.js +1 -1
  42. package/dist/toast/index.mjs +1 -1
  43. package/dist/tokens.css +1 -1
  44. package/dist/tooltip/index.css +1 -1
  45. package/dist/tooltip/index.d.mts +6 -1
  46. package/dist/tooltip/index.d.ts +6 -1
  47. package/dist/tooltip/index.js +1 -1
  48. package/dist/tooltip/index.mjs +1 -1
  49. package/package.json +8 -3
  50. package/skill/AGENTS-SNIPPET.md +253 -0
  51. package/skill/SKILL.md +205 -0
  52. package/skill/VERSION.json +7 -0
  53. package/skill/references/components/alert.md +30 -0
  54. package/skill/references/components/avatar.md +45 -0
  55. package/skill/references/components/button.md +40 -0
  56. package/skill/references/components/checkbox.md +39 -0
  57. package/skill/references/components/color-picker.md +40 -0
  58. package/skill/references/components/date-picker.md +46 -0
  59. package/skill/references/components/dialog.md +68 -0
  60. package/skill/references/components/divider.md +30 -0
  61. package/skill/references/components/drawer.md +42 -0
  62. package/skill/references/components/dropdown.md +93 -0
  63. package/skill/references/components/empty.md +28 -0
  64. package/skill/references/components/flex.md +44 -0
  65. package/skill/references/components/form.md +57 -0
  66. package/skill/references/components/image.md +37 -0
  67. package/skill/references/components/input.md +33 -0
  68. package/skill/references/components/pagination.md +42 -0
  69. package/skill/references/components/popover.md +45 -0
  70. package/skill/references/components/progress.md +36 -0
  71. package/skill/references/components/radio.md +43 -0
  72. package/skill/references/components/range-picker.md +49 -0
  73. package/skill/references/components/scroll-area.md +50 -0
  74. package/skill/references/components/select.md +52 -0
  75. package/skill/references/components/sidebar.md +187 -0
  76. package/skill/references/components/skeleton.md +39 -0
  77. package/skill/references/components/slider.md +42 -0
  78. package/skill/references/components/spin.md +25 -0
  79. package/skill/references/components/steps.md +34 -0
  80. package/skill/references/components/switch.md +26 -0
  81. package/skill/references/components/table.md +44 -0
  82. package/skill/references/components/tabs.md +49 -0
  83. package/skill/references/components/tag.md +59 -0
  84. package/skill/references/components/textarea.md +30 -0
  85. package/skill/references/components/time-picker.md +49 -0
  86. package/skill/references/components/toast.md +47 -0
  87. package/skill/references/components/tooltip.md +33 -0
  88. package/skill/references/components/upload.md +38 -0
  89. package/skill/references/icons.md +1117 -0
  90. package/skill/references/setup.md +132 -0
  91. package/skill/references/tokens.md +201 -0
  92. package/dist/chunk-22G7TVQU.mjs +0 -1
  93. package/dist/chunk-3VTWGWRW.mjs +0 -1
  94. package/dist/chunk-BURKV6KR.js +0 -1
  95. package/dist/chunk-EWZCOQ5H.js +0 -1
  96. package/dist/chunk-I5FIN7UX.mjs +0 -1
  97. package/dist/chunk-LGFBC4UA.mjs +0 -1
  98. package/dist/chunk-U5VI5OCN.mjs +0 -1
  99. package/dist/chunk-WJXAQ3RX.js +0 -1
  100. package/dist/chunk-ZXRCMMQM.js +0 -1
@@ -1 +1 @@
1
- 'use strict';var chunkZXRCMMQM_js=require('../chunk-ZXRCMMQM.js');require('../chunk-DCDWEVW4.js');Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkZXRCMMQM_js.a}});
1
+ 'use strict';var chunkP56ABRDC_js=require('../chunk-P56ABRDC.js');require('../chunk-DCDWEVW4.js');Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkP56ABRDC_js.c}});
@@ -1 +1 @@
1
- export{a as Tooltip}from'../chunk-LGFBC4UA.mjs';import'../chunk-DN2VKVCV.mjs';
1
+ export{c as Tooltip}from'../chunk-JKY43GCS.mjs';import'../chunk-DN2VKVCV.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lingee-ui",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "Kingdee Lingee UI 基础组件库 — React 18+ 轻量级企业 UI 组件",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -26,6 +26,7 @@
26
26
  ],
27
27
  "files": [
28
28
  "dist",
29
+ "skill",
29
30
  "README.md",
30
31
  "CHANGELOG.md",
31
32
  "LICENSE"
@@ -62,11 +63,15 @@
62
63
  "require": "./dist/popover/index.js"
63
64
  },
64
65
  "./styles.css": "./dist/index.css",
65
- "./tokens.css": "./dist/tokens.css"
66
+ "./tokens.css": "./dist/tokens.css",
67
+ "./skill": "./skill/SKILL.md",
68
+ "./skill/*": "./skill/*"
66
69
  },
67
70
  "scripts": {
68
71
  "generate-tokens": "node scripts/generate-tokens.js",
69
- "build": "tsup",
72
+ "gen-skill": "node scripts/gen-skill.mjs",
73
+ "gen-skill:check": "node scripts/gen-skill.mjs --check",
74
+ "build": "tsup && node scripts/gen-skill.mjs",
70
75
  "dev": "tsup --watch",
71
76
  "test": "vitest run",
72
77
  "test:watch": "vitest",
@@ -0,0 +1,253 @@
1
+ # lingee-ui 组件与 Token 速查
2
+
3
+ > **本文件由 `packages/lingee-ui/scripts/gen-skill.mjs` 自动生成,禁止手工编辑。**
4
+ > 供根 `AGENTS.md` 引用,避免手写清单随组件库迭代脱节。
5
+ > 组件库 `0.0.7` | 图标库 `1.0.16`
6
+
7
+ ## 可用组件(36)
8
+
9
+ | 组件 | 名称 | 说明 |
10
+ |------|------|------|
11
+ | `Alert` | 消息通知 | 消息提示组件,用于页面中展示重要的提示信息。 |
12
+ | `Avatar`、`AvatarGroup` | 头像 | 头像组件,用于展示用户头像或图标,支持图片、文字、默认图标三种形态。 |
13
+ | `Button` | 按钮 | 用于触发一个操作,是用户与系统交互的基础元素。 |
14
+ | `Checkbox`、`CheckboxGroup` | 多选框 | 在一组选项中进行多项选择。 |
15
+ | `ColorPicker` | 颜色选择器 | 用于选择颜色值的交互组件。 |
16
+ | `DatePicker` | 日期选择器 | 用于选择日期的输入组件。 |
17
+ | `Dialog` | 弹出窗 | 模态对话框,用于需要用户确认或填写信息的场景。支持声明式和命令式两种调用方式。 |
18
+ | `Divider` | 分割线 | 用于分隔内容区块,使页面结构更清晰。 |
19
+ | `Drawer` | 抽屉 | 从屏幕边缘滑出的浮层面板,用于承载表单或详情内容。 |
20
+ | `Dropdown` +13 个子组件 | 下拉菜单 | 向下弹出的操作菜单列表,支持图标、分组、危险操作、子菜单等。 |
21
+ | `Empty` | 空状态 | 当目标区域无数据时展示的空状态占位图,引导用户进行下一步操作。 |
22
+ | `Flex` | 弹性布局 | 弹性布局容器,用于快速搭建横向/纵向排列,避免为简单布局单独写样式文件。 |
23
+ | `Form` | 表单 | 数据录入和校验组件,支持垂直、水平、行内布局。 |
24
+ | `Image` | 图片预览 | 图片展示组件,支持点击放大预览、旋转、缩放等操作。 |
25
+ | `Input` | 输入框 | 用于接收用户的文本输入。 |
26
+ | `Pagination` | 分页 | 当数据量较大时,使用分页拆分数据,方便用户快速定位。 |
27
+ | `Popover` +5 个子组件 | 气泡弹出层 | 点击/悬停在元素上时弹出气泡式浮层,用于承载更多内容。 |
28
+ | `Progress` | 进度条 | 展示操作的当前进度,支持线性和环形两种形态。 |
29
+ | `RadioGroup`、`RadioItem` | 单选 | 单选框组件,用于在一组互斥选项中选择一个。 |
30
+ | `RangePicker` | 日期范围选择器 | 用于选择日期范围的输入组件。 |
31
+ | `ScrollArea`、`ScrollBar` | 自定义滚动区域 | 自定义样式的滚动容器组件,提供美观的滚动条体验。 |
32
+ | `Select` | 选择器 | 下拉选择器,支持单选、多选、搜索和远程加载。 |
33
+ | `Sidebar` +10 个子组件 | 侧边栏 | 侧边栏复合组件,提供根容器、页签、导航项、分组、列表项、占位项与底栏,通过 Sidebar.xxx 组合使用。 |
34
+ | `Skeleton` | 骨架屏 | 在数据加载完成前通过占位图形展示页面结构,降低用户等待焦虑。 |
35
+ | `Slider` | 数值滑块 | 滑动输入器,用于在数值区间内进行选择。 |
36
+ | `Spin` | 加载中 | 用于页面和区域的加载中状态指示器。 |
37
+ | `Steps` | 步骤条 | 引导用户按照流程完成任务的导航条。 |
38
+ | `Switch` | 开关 | 用于在两个互斥状态之间切换,如启用/禁用。 |
39
+ | `Table` | 表格 | 用于展示行列数据的表格组件,支持排序、行选择、加载态等。 |
40
+ | `Tabs` | 页签 | 选项卡切换组件,支持多种风格变体和尺寸。 |
41
+ | `Tag` | 标签 | 用于标记和分类的小型标签元素。 |
42
+ | `Textarea` | 多行文本框 | 多行纯文本编辑控件,支持字数统计和自动高度。 |
43
+ | `TimePicker` | 时间选择器 | 用于选择时间的输入组件。 |
44
+ | `toast` | 全局提示 | 命令式全局提示组件,用于操作反馈。 |
45
+ | `Tooltip` | 文字提示 | 鼠标悬停时显示的简短提示信息。 |
46
+ | `Upload` | 上传 | 文件上传组件,支持点击和拖拽上传。 |
47
+
48
+ **清单里没有的组件本库就是没有**,不要臆造组件名。各组件完整 Props 见 `packages/lingee-ui/packages/{目录名}/README.mdx`,或 `skill/references/components/{目录名}.md`。
49
+
50
+ ## 与 antd 的 API 差异
51
+
52
+ | 场景 | 正确写法 | 错误写法 |
53
+ |------|---------|---------|
54
+ | Tooltip 内容 | `content` | ~~`title`~~ |
55
+ | Tooltip 延迟 | `delayDuration`(毫秒) | ~~`mouseEnterDelay`~~ |
56
+ | Checkbox 回调 | `onChange={(checked: boolean) => {}}` | ~~`e.target.checked`~~ |
57
+ | Button 原生 type | `htmlType` | ~~`type`~~ |
58
+ | Button 视觉变体 | `variant` | ~~`type`~~ |
59
+ | Dropdown / Popover | 组合式子组件 API | ~~`overlay` prop~~ |
60
+
61
+ ## 语义 Token 全量速查
62
+
63
+ 按 CSS 属性选前缀:`color`/`fill`/`stroke` → `fg`,`background` → `bg`,`border-color`/`outline` → `border`。
64
+
65
+ 亮暗变量名相同,`data-theme="dark"` 自动切换。色值列供**反查**(设计稿色值找 Token)与**比对**(少数 Token 亮暗语义不对称)使用,**业务代码禁止硬编码色值或引用 primitives**。
66
+
67
+ ### ⚠️ 命名异常的 Token(照抄,不要纠正)
68
+
69
+ 设计源文件里的错拼,已被组件库使用不能改。按「正确」拼写会静默失效(CSS 变量不存在不报错,颜色直接丢失):
70
+
71
+ | 实际可用 | 说明 |
72
+ |---------|------|
73
+ | `--lg-g-fg-color-indigo-defauit` | ~~`--lg-g-fg-color-indigo-default`~~ |
74
+ | `--lg-g-fg-color-lime-defauit` | ~~`--lg-g-fg-color-lime-default`~~ |
75
+ | `--lg-g-fg-color-violet-defauit` | ~~`--lg-g-fg-color-violet-default`~~ |
76
+ | `--lg-g-bg-color-emeraid-translucent-soft` | ~~`--lg-g-bg-color-emerald-translucent-soft`~~ |
77
+ | `--lg-g-fg-color-black-aint` | 片段 `aint` 非标准命名,照抄即可 |
78
+
79
+ #### 前景色 fg(34)
80
+
81
+ | Token | 亮色 | 暗色 |
82
+ |-------|------|------|
83
+ | `--lg-g-fg-color-white-heavy` | `#FFFFFF` | `#FFFFFF` |
84
+ | `--lg-g-fg-color-white-dark` | `#FFFFFF` | `rgba(255, 255, 255, 0.28)` |
85
+ | `--lg-g-fg-color-black-moderate` | `rgba(0, 0, 0, 0.18)` | `rgba(255, 255, 255, 0.18)` |
86
+ | `--lg-g-fg-color-black-aint` | `rgba(0, 0, 0, 0.28)` | `rgba(255, 255, 255, 0.28)` |
87
+ | `--lg-g-fg-color-black-default` | `rgba(0, 0, 0, 0.46)` | `rgba(255, 255, 255, 0.46)` |
88
+ | `--lg-g-fg-color-black-muted` | `rgba(0, 0, 0, 0.64)` | `rgba(255, 255, 255, 0.64)` |
89
+ | `--lg-g-fg-color-black-strong` | `rgba(0, 0, 0, 0.82)` | `rgba(255, 255, 255, 0.82)` |
90
+ | `--lg-g-fg-color-black-intense` | `rgba(0, 0, 0, 0.94)` | `rgba(255, 255, 255, 0.94)` |
91
+ | `--lg-g-fg-color-primary-muted` | `#B7C1FF` | `rgba(109, 128, 255, 0.28)` |
92
+ | `--lg-g-fg-color-primary-low` | `#6D80FF` | `#6D80FF` |
93
+ | `--lg-g-fg-color-primary-default` | `#495DFF` | `#495DFF` |
94
+ | `--lg-g-fg-color-primary-emphasis` | `#3B47F2` | `#3B47F2` |
95
+ | `--lg-g-fg-color-warning-default` | `#FF7700` | `#FF7700` |
96
+ | `--lg-g-fg-color-danger-muted` | `#FF9EA6` | `rgba(255, 41, 59, 0.28)` |
97
+ | `--lg-g-fg-color-danger-low` | `#FF293B` | `#FF293B` |
98
+ | `--lg-g-fg-color-danger-default` | `#F12234` | `#F12234` |
99
+ | `--lg-g-fg-color-danger-emphasis` | `#DA0B20` | `#DA0B20` |
100
+ | `--lg-g-fg-color-success-default` | `#04B545` | `#04B545` |
101
+ | `--lg-g-fg-color-success-emphasis` | `#078E3B` | `#078E3B` |
102
+ | `--lg-g-fg-color-blue-muted` | `#A4C5FF` | `rgba(77, 137, 255, 0.28)` |
103
+ | `--lg-g-fg-color-blue-low` | `#4D89FF` | `#4D89FF` |
104
+ | `--lg-g-fg-color-blue-default` | `#2970FF` | `#2970FF` |
105
+ | `--lg-g-fg-color-blue-emphasis` | `#155BE8` | `#155BE8` |
106
+ | `--lg-g-fg-color-amber-default` | `#E28800` | `#E28800` |
107
+ | `--lg-g-fg-color-teal-default` | `#00BFB8` | `#00BFB8` |
108
+ | `--lg-g-fg-color-purple-default` | `#7F2AF3` | `#7F2AF3` |
109
+ | `--lg-g-fg-color-indigo-defauit` | `#4343F5` | `#4343F5` |
110
+ | `--lg-g-fg-color-yellow-default` | `#D1A600` | `#D1A600` |
111
+ | `--lg-g-fg-color-cyan-default` | `#0083D4` | `#0083D4` |
112
+ | `--lg-g-fg-color-pink-default` | `#ED1165` | `#ED1165` |
113
+ | `--lg-g-fg-color-fuchsia-default` | `#ED1DB9` | `#ED1DB9` |
114
+ | `--lg-g-fg-color-emerald-default` | `#009D72` | `#009D72` |
115
+ | `--lg-g-fg-color-lime-defauit` | `#5FBA04` | `#5FBA04` |
116
+ | `--lg-g-fg-color-violet-defauit` | `#572FF7` | `#572FF7` |
117
+
118
+ #### 背景色 bg(92)
119
+
120
+ | Token | 亮色 | 暗色 |
121
+ |-------|------|------|
122
+ | `--lg-g-bg-color-white-emphasis` | `rgba(255, 255, 255, 0.64)` | `rgba(255, 255, 255, 0.64)` |
123
+ | `--lg-g-bg-color-white-heavy` | `#FFFFFF` | `#232426` |
124
+ | `--lg-g-bg-color-white-translucent-heavy` | `#FFFFFF` | `#232426` |
125
+ | `--lg-g-bg-color-white-translucent-strong` | `rgba(255, 255, 255, 0.82)` | `rgba(35, 36, 38, 0.82)` |
126
+ | `--lg-g-bg-color-white-translucent-ghost` | `rgba(255, 255, 255, 0)` | `rgba(35, 36, 38, 0)` |
127
+ | `--lg-g-bg-color-black-ghost` | `rgba(0, 0, 0, 0)` | `rgba(255, 255, 255, 0)` |
128
+ | `--lg-g-bg-color-black-hint` | `rgba(0, 0, 0, 0.02)` | `rgba(255, 255, 255, 0.03)` |
129
+ | `--lg-g-bg-color-black-faint` | `rgba(0, 0, 0, 0.03)` | `rgba(255, 255, 255, 0.03)` |
130
+ | `--lg-g-bg-color-black-dim` | `rgba(0, 0, 0, 0.04)` | `rgba(255, 255, 255, 0.04)` |
131
+ | `--lg-g-bg-color-black-subtle` | `rgba(0, 0, 0, 0.06)` | `rgba(255, 255, 255, 0.06)` |
132
+ | `--lg-g-bg-color-black-soft` | `rgba(0, 0, 0, 0.08)` | `rgba(255, 255, 255, 0.12)` |
133
+ | `--lg-g-bg-color-black-muted` | `rgba(0, 0, 0, 0.12)` | `rgba(255, 255, 255, 0.12)` |
134
+ | `--lg-g-bg-color-black-moderate` | `rgba(0, 0, 0, 0.18)` | `rgba(255, 255, 255, 0.18)` |
135
+ | `--lg-g-bg-color-black-default` | `rgba(0, 0, 0, 0.46)` | `rgba(255, 255, 255, 0.46)` |
136
+ | `--lg-g-bg-color-black-emphasis` | `rgba(0, 0, 0, 0.64)` | `rgba(255, 255, 255, 0.64)` |
137
+ | `--lg-g-bg-color-black-strong` | `rgba(0, 0, 0, 0.82)` | `rgba(255, 255, 255, 0.82)` |
138
+ | `--lg-g-bg-color-black-intense` | `rgba(0, 0, 0, 0.94)` | `rgba(255, 255, 255, 0.94)` |
139
+ | `--lg-g-bg-color-primary-translucent-faint` | `rgba(109, 128, 255, 0.03)` | `rgba(109, 128, 255, 0.03)` |
140
+ | `--lg-g-bg-color-primary-translucent-subtle` | `rgba(109, 128, 255, 0.06)` | `rgba(109, 128, 255, 0.06)` |
141
+ | `--lg-g-bg-color-primary-translucent-soft` | `rgba(109, 128, 255, 0.08)` | `rgba(109, 128, 255, 0.12)` |
142
+ | `--lg-g-bg-color-primary-translucent-muted` | `rgba(109, 128, 255, 0.12)` | `rgba(109, 128, 255, 0.12)` |
143
+ | `--lg-g-bg-color-primary-muted` | `#B7C1FF` | `rgba(109, 128, 255, 0.28)` |
144
+ | `--lg-g-bg-color-primary-low` | `#6D80FF` | `#2F37C7` |
145
+ | `--lg-g-bg-color-primary-default` | `#495DFF` | `#495DFF` |
146
+ | `--lg-g-bg-color-primary-emphasis` | `#3B47F2` | `#3B47F2` |
147
+ | `--lg-g-bg-color-warning-translucent-ghost` | `rgba(255, 119, 0, 0)` | `rgba(255, 119, 0, 0.03)` |
148
+ | `--lg-g-bg-color-warning-translucent-faint` | `rgba(255, 119, 0, 0.03)` | `rgba(255, 119, 0, 0.08)` |
149
+ | `--lg-g-bg-color-warning-translucent-subtle` | `rgba(255, 119, 0, 0.06)` | `rgba(255, 119, 0, 0.06)` |
150
+ | `--lg-g-bg-color-warning-translucent-soft` | `rgba(255, 119, 0, 0.08)` | `rgba(255, 119, 0, 0.08)` |
151
+ | `--lg-g-bg-color-warning-translucent-muted` | `rgba(255, 119, 0, 0.12)` | `rgba(255, 119, 0, 0.12)` |
152
+ | `--lg-g-bg-color-warning-ghost` | `#FFF7F0` | `#FFF7F0` |
153
+ | `--lg-g-bg-color-warning-faint` | `#FFF5EC` | `#FFF5EC` |
154
+ | `--lg-g-bg-color-warning-default` | `#FF7700` | `#FF7700` |
155
+ | `--lg-g-bg-color-danger-translucent-ghost` | `rgba(255, 41, 59, 0)` | `rgba(255, 41, 59, 0.03)` |
156
+ | `--lg-g-bg-color-danger-translucent-faint` | `rgba(255, 41, 59, 0.03)` | `rgba(255, 41, 59, 0.08)` |
157
+ | `--lg-g-bg-color-danger-translucent-subtle` | `rgba(255, 41, 59, 0.06)` | `rgba(255, 41, 59, 0.06)` |
158
+ | `--lg-g-bg-color-danger-translucent-soft` | `rgba(255, 41, 59, 0.08)` | `rgba(255, 41, 59, 0.06)` |
159
+ | `--lg-g-bg-color-danger-translucent-muted` | `rgba(255, 41, 59, 0.12)` | `rgba(255, 41, 59, 0.12)` |
160
+ | `--lg-g-bg-color-danger-ghost` | `#FFF5F5` | `#FFF5F5` |
161
+ | `--lg-g-bg-color-danger-faint` | `#FFF0F1` | `rgba(255, 41, 59, 0.08)` |
162
+ | `--lg-g-bg-color-danger-faint-dark` | `#FFF0F1` | `#FFF0F1` |
163
+ | `--lg-g-bg-color-danger-muted` | `#FF9EA6` | `rgba(255, 41, 59, 0.12)` |
164
+ | `--lg-g-bg-color-danger-low` | `#FF293B` | `#FF293B` |
165
+ | `--lg-g-bg-color-danger-default` | `#F12234` | `#F12234` |
166
+ | `--lg-g-bg-color-danger-emphasis` | `#DA0B20` | `#DA0B20` |
167
+ | `--lg-g-bg-color-success-translucent-transparent` | `rgba(8, 204, 80, 0)` | `rgba(8, 204, 80, 0.03)` |
168
+ | `--lg-g-bg-color-success-translucent-faint` | `rgba(8, 204, 80, 0.03)` | `rgba(8, 204, 80, 0.08)` |
169
+ | `--lg-g-bg-color-success-translucent-soft` | `rgba(8, 204, 80, 0.08)` | `rgba(8, 204, 80, 0.08)` |
170
+ | `--lg-g-bg-color-success-ghost` | `#F7FFF8` | `#F7FFF8` |
171
+ | `--lg-g-bg-color-success-faint` | `#EEFFF0` | `rgba(8, 204, 80, 0.03)` |
172
+ | `--lg-g-bg-color-success-faint-dark` | `#EEFFF0` | `#222428` |
173
+ | `--lg-g-bg-color-success-default` | `#04B545` | `#04B545` |
174
+ | `--lg-g-bg-color-blue-translucent-transparent` | `rgba(77, 137, 255, 0)` | `rgba(77, 137, 255, 0.03)` |
175
+ | `--lg-g-bg-color-blue-translucent-faint` | `rgba(77, 137, 255, 0.03)` | `rgba(77, 137, 255, 0.08)` |
176
+ | `--lg-g-bg-color-blue-translucent-soft` | `rgba(77, 137, 255, 0.08)` | `rgba(77, 137, 255, 0.08)` |
177
+ | `--lg-g-bg-color-blue-ghost` | `#F7FBFF` | `#F7FBFF` |
178
+ | `--lg-g-bg-color-blue-faint` | `#F2F7FF` | `rgba(77, 137, 255, 0.03)` |
179
+ | `--lg-g-bg-color-blue-faint-dark` | `#F2F7FF` | `#222428` |
180
+ | `--lg-g-bg-color-blue-default` | `#2970FF` | `#2970FF` |
181
+ | `--lg-g-bg-color-amber-translucent-subtle` | `rgba(255, 178, 0, 0.06)` | `rgba(255, 178, 0, 0.06)` |
182
+ | `--lg-g-bg-color-amber-translucent-soft` | `rgba(255, 178, 0, 0.08)` | `rgba(255, 178, 0, 0.08)` |
183
+ | `--lg-g-bg-color-amber-translucent-muted` | `rgba(255, 178, 0, 0.12)` | `rgba(255, 178, 0, 0.12)` |
184
+ | `--lg-g-bg-color-amber-faint` | `#FFFDEA` | `rgba(255, 178, 0, 0.03)` |
185
+ | `--lg-g-bg-color-amber-faint-dark` | `#FFFDEA` | `#282520` |
186
+ | `--lg-g-bg-color-amber-default` | `#E28800` | `#E28800` |
187
+ | `--lg-g-bg-color-teal-translucent-soft` | `rgba(0, 229, 229, 0.08)` | `rgba(0, 229, 229, 0.08)` |
188
+ | `--lg-g-bg-color-teal-default` | `#00BFB8` | `#00BFB8` |
189
+ | `--lg-g-bg-color-purple-translucent-soft` | `rgba(143, 64, 255, 0.08)` | `rgba(143, 64, 255, 0.08)` |
190
+ | `--lg-g-bg-color-purple-faint` | `#F9F5FF` | `rgba(143, 64, 255, 0.03)` |
191
+ | `--lg-g-bg-color-purple-default` | `#7F2AF3` | `#7F2AF3` |
192
+ | `--lg-g-bg-color-yellow-translucent-soft` | `rgba(255, 229, 0, 0.08)` | `rgba(255, 229, 0, 0.08)` |
193
+ | `--lg-g-bg-color-cyan-translucent-soft` | `rgba(0, 163, 244, 0.08)` | `rgba(0, 163, 244, 0.08)` |
194
+ | `--lg-g-bg-color-cyan-default` | `#0083D4` | `#0083D4` |
195
+ | `--lg-g-bg-color-pink-translucent-soft` | `rgba(255, 36, 109, 0.08)` | `rgba(255, 36, 109, 0.08)` |
196
+ | `--lg-g-bg-color-pink-default` | `#ED1165` | `#ED1165` |
197
+ | `--lg-g-bg-color-fuchsia-faint` | `#FFF2FC` | `rgba(248, 88, 208, 0.03)` |
198
+ | `--lg-g-bg-color-fuchsia-faint-dark` | `#FFF2FC` | `#272326` |
199
+ | `--lg-g-bg-color-emerald-faint` | `#EBFEF7` | `#EBFEF7` |
200
+ | `--lg-g-bg-color-indigo-faint` | `#F5F6FF` | `rgba(81, 85, 246, 0.03)` |
201
+ | `--lg-g-bg-color-indigo-faint-dark` | `#F5F6FF` | `#222327` |
202
+ | `--lg-g-bg-color-gray-subtle` | `#F7F8FA` | `#F7F8FA` |
203
+ | `--lg-g-bg-color-emeraid-translucent-soft` | `rgba(8, 199, 135, 0.08)` | `rgba(8, 199, 135, 0.08)` |
204
+ | `--lg-g-bg-color-emerald-default` | `#009D72` | `#009D72` |
205
+ | `--lg-g-bg-color-lime-translucent-soft` | `rgba(116, 215, 11, 0.08)` | `rgba(116, 215, 11, 0.08)` |
206
+ | `--lg-g-bg-color-lime-default` | `#5FBA04` | `#5FBA04` |
207
+ | `--lg-g-bg-color-indigo-translucent-soft` | `rgba(81, 85, 246, 0.08)` | `rgba(81, 85, 246, 0.08)` |
208
+ | `--lg-g-bg-color-indigo-default` | `#4343F5` | `#4343F5` |
209
+ | `--lg-g-bg-color-violet-translucent-soft` | `rgba(120, 88, 249, 0.08)` | `rgba(120, 88, 249, 0.08)` |
210
+ | `--lg-g-bg-color-violet-default` | `#572FF7` | `#572FF7` |
211
+ | `--lg-g-bg-color-fuchsia-translucent-soft` | `rgba(248, 88, 208, 0.08)` | `rgba(248, 88, 208, 0.08)` |
212
+ | `--lg-g-bg-color-fuchsia-default` | `#ED1DB9` | `#ED1DB9` |
213
+ | `--lg-g-bg-color-page-default` | `#F7F7FA` | `#1A1A1A` |
214
+
215
+ #### 边框色 border(27)
216
+
217
+ | Token | 亮色 | 暗色 |
218
+ |-------|------|------|
219
+ | `--lg-g-border-color-black-faint` | `rgba(0, 0, 0, 0.03)` | `rgba(255, 255, 255, 0.03)` |
220
+ | `--lg-g-border-color-black-dim` | `rgba(0, 0, 0, 0.04)` | `rgba(255, 255, 255, 0.04)` |
221
+ | `--lg-g-border-color-black-subtle` | `rgba(0, 0, 0, 0.06)` | `rgba(255, 255, 255, 0.06)` |
222
+ | `--lg-g-border-color-black-soft` | `rgba(0, 0, 0, 0.08)` | `rgba(255, 255, 255, 0.12)` |
223
+ | `--lg-g-border-color-black-muted` | `rgba(0, 0, 0, 0.12)` | `rgba(255, 255, 255, 0.18)` |
224
+ | `--lg-g-border-color-black-moderate` | `rgba(0, 0, 0, 0.18)` | `rgba(255, 255, 255, 0.28)` |
225
+ | `--lg-g-border-color-black-emphasis` | `rgba(0, 0, 0, 0.64)` | `rgba(255, 255, 255, 0.64)` |
226
+ | `--lg-g-border-color-black-intense` | `rgba(0, 0, 0, 0.94)` | `rgba(255, 255, 255, 0.94)` |
227
+ | `--lg-g-border-color-primary-soft` | `#B7C1FF` | `rgba(109, 128, 255, 0.28)` |
228
+ | `--lg-g-border-color-primary-low` | `#6D80FF` | `#6D80FF` |
229
+ | `--lg-g-border-color-primary-default` | `#495DFF` | `#495DFF` |
230
+ | `--lg-g-border-color-primary-emphasis` | `#3B47F2` | `#3B47F2` |
231
+ | `--lg-g-border-color-warning-translucent-soft` | `rgba(255, 119, 0, 0.08)` | `rgba(255, 119, 0, 0.08)` |
232
+ | `--lg-g-border-color-warning-subtle` | `#FFE8D6` | `#964009` |
233
+ | `--lg-g-border-color-warning-default` | `#FF7700` | `#FF7700` |
234
+ | `--lg-g-border-color-danger-translucent-soft` | `rgba(255, 41, 59, 0.08)` | `rgba(255, 41, 59, 0.08)` |
235
+ | `--lg-g-border-color-danger-subtle` | `#FFE0E3` | `#991519` |
236
+ | `--lg-g-border-color-danger-muted` | `#FF9EA6` | `rgba(255, 41, 59, 0.12)` |
237
+ | `--lg-g-border-color-danger-low` | `#FF293B` | `rgba(255, 41, 59, 0.46)` |
238
+ | `--lg-g-border-color-danger-default` | `#F12234` | `rgba(255, 41, 59, 0.28)` |
239
+ | `--lg-g-border-color-danger-emphasis` | `#DA0B20` | `#DA0B20` |
240
+ | `--lg-g-border-color-success-translucent-soft` | `rgba(8, 204, 80, 0.08)` | `rgba(8, 204, 80, 0.08)` |
241
+ | `--lg-g-border-color-success-subtle` | `#DBFFE1` | `#0C5B31` |
242
+ | `--lg-g-border-color-success-default` | `#04B545` | `#04B545` |
243
+ | `--lg-g-border-color-blue-translucent-soft` | `rgba(77, 137, 255, 0.08)` | `rgba(77, 137, 255, 0.08)` |
244
+ | `--lg-g-border-color-blue-subtle` | `#E4EEFF` | `#183F96` |
245
+ | `--lg-g-border-color-blue-default` | `#2970FF` | `#2970FF` |
246
+ #### 其他(3)
247
+
248
+ | Token | 亮色 | 暗色 |
249
+ |-------|------|------|
250
+ | `--lg-g-shadow-color-black-subtle` | `rgba(0, 0, 0, 0.03)` | `rgba(0, 0, 0, 0.03)` |
251
+ | `--lg-g-shadow-color-black-muted` | `rgba(0, 0, 0, 0.08)` | `rgba(0, 0, 0, 0.08)` |
252
+ | `--lg-g-shadow-color-moderate` | `rgba(0, 0, 0, 0.18)` | `rgba(0, 0, 0, 0.18)` |
253
+
package/skill/SKILL.md ADDED
@@ -0,0 +1,205 @@
1
+ ---
2
+ name: lingee-ui-usage
3
+ description: 使用 lingee-ui 组件库与 lingee-icon 图标库开发 React 界面。当需要编写含按钮、表单、弹窗、表格、下拉、页签、图标等 UI 的 React/TypeScript 代码,或需要查询 lingee-ui 组件 API、Design Token 语义变量、可用图标名时触发。关键词:lingee-ui、lingee-icon、组件库、图标库、Design Token、语义变量、lg- 前缀、UI 组件。
4
+ metadata:
5
+ lingeeUi: "0.0.7"
6
+ lingeeIcon: "1.0.16"
7
+ generatedBy: "gen-skill.mjs"
8
+ ---
9
+
10
+ # lingee-ui 组件库使用技能
11
+
12
+ Kingdee Lingee 设计体系的 React 组件库(36 个组件)与图标库(967 个图标)。
13
+ 本技能面向**消费方项目**,只覆盖「如何用」,不含组件库内部开发约定。
14
+
15
+ - 组件库版本 `0.0.7` | 图标库版本 `1.0.16`
16
+ - 组件在线预览:https://kingdee.github.io/lingee-ui/
17
+ - 图标在线预览:https://kingdee.github.io/lingee-icon/
18
+
19
+ ## 使用前必读:与 antd 的关键差异
20
+
21
+ 从 antd 迁移或凭直觉写代码时最容易踩的点:
22
+
23
+ | 场景 | 正确写法 | 错误写法 |
24
+ |------|---------|---------|
25
+ | Tooltip 内容 | `<Tooltip content="提示">` | ~~`title="提示"`~~ |
26
+ | Tooltip 延迟 | `delayDuration={300}`(毫秒) | ~~`mouseEnterDelay`~~ |
27
+ | Checkbox 回调 | `onChange={(checked: boolean) => {}}` | ~~`onChange={e => e.target.checked}`~~ |
28
+ | Button 原生 type | `htmlType="submit"` | ~~`type="submit"`~~ |
29
+ | Button 视觉变体 | `variant="primary"` | ~~`type="primary"`~~ |
30
+ | Dropdown / Popover | 组合式子组件 API | ~~`overlay` / `content` prop~~ |
31
+
32
+ ## 接入
33
+
34
+ ```bash
35
+ pnpm add lingee-ui lingee-icon
36
+ ```
37
+
38
+ `lingee-icon` 是 `lingee-ui` 的 **peerDependency**,必须显式安装。
39
+
40
+ 样式与 Provider 在应用入口引入一次:
41
+
42
+ ```tsx
43
+ import "lingee-ui/styles.css"; // 必须,否则组件完全无样式
44
+ import { LingeeProvider } from "lingee-ui";
45
+
46
+ createRoot(el).render(
47
+ <LingeeProvider locale="zh-CN">
48
+ <App />
49
+ </LingeeProvider>,
50
+ );
51
+ ```
52
+
53
+ 详细接入说明(暗色模式、仅用 Token、样式覆盖、SSR)见 `references/setup.md`。
54
+
55
+ ## 组件清单
56
+
57
+ | 组件 | 名称 | 说明 | 文档 | 按需导入 |
58
+ |------|------|------|------|---------|
59
+ | `Alert` | 消息通知 | 消息提示组件,用于页面中展示重要的提示信息。 | `alert.md` | — |
60
+ | `Avatar`、`AvatarGroup` | 头像 | 头像组件,用于展示用户头像或图标,支持图片、文字、默认图标三种形态。 | `avatar.md` | — |
61
+ | `Button` | 按钮 | 用于触发一个操作,是用户与系统交互的基础元素。 | `button.md` | ✓ |
62
+ | `Checkbox`、`CheckboxGroup` | 多选框 | 在一组选项中进行多项选择。 | `checkbox.md` | — |
63
+ | `ColorPicker` | 颜色选择器 | 用于选择颜色值的交互组件。 | `color-picker.md` | — |
64
+ | `DatePicker` | 日期选择器 | 用于选择日期的输入组件。 | `date-picker.md` | — |
65
+ | `Dialog` | 弹出窗 | 模态对话框,用于需要用户确认或填写信息的场景。支持声明式和命令式两种调用方式。 | `dialog.md` | — |
66
+ | `Divider` | 分割线 | 用于分隔内容区块,使页面结构更清晰。 | `divider.md` | — |
67
+ | `Drawer` | 抽屉 | 从屏幕边缘滑出的浮层面板,用于承载表单或详情内容。 | `drawer.md` | — |
68
+ | `Dropdown` +13 个子组件 | 下拉菜单 | 向下弹出的操作菜单列表,支持图标、分组、危险操作、子菜单等。 | `dropdown.md` | — |
69
+ | `Empty` | 空状态 | 当目标区域无数据时展示的空状态占位图,引导用户进行下一步操作。 | `empty.md` | — |
70
+ | `Flex` | 弹性布局 | 弹性布局容器,用于快速搭建横向/纵向排列,避免为简单布局单独写样式文件。 | `flex.md` | — |
71
+ | `Form` | 表单 | 数据录入和校验组件,支持垂直、水平、行内布局。 | `form.md` | — |
72
+ | `Image` | 图片预览 | 图片展示组件,支持点击放大预览、旋转、缩放等操作。 | `image.md` | — |
73
+ | `Input` | 输入框 | 用于接收用户的文本输入。 | `input.md` | — |
74
+ | `Pagination` | 分页 | 当数据量较大时,使用分页拆分数据,方便用户快速定位。 | `pagination.md` | — |
75
+ | `Popover` +5 个子组件 | 气泡弹出层 | 点击/悬停在元素上时弹出气泡式浮层,用于承载更多内容。 | `popover.md` | ✓ |
76
+ | `Progress` | 进度条 | 展示操作的当前进度,支持线性和环形两种形态。 | `progress.md` | — |
77
+ | `RadioGroup`、`RadioItem` | 单选 | 单选框组件,用于在一组互斥选项中选择一个。 | `radio.md` | — |
78
+ | `RangePicker` | 日期范围选择器 | 用于选择日期范围的输入组件。 | `range-picker.md` | — |
79
+ | `ScrollArea`、`ScrollBar` | 自定义滚动区域 | 自定义样式的滚动容器组件,提供美观的滚动条体验。 | `scroll-area.md` | — |
80
+ | `Select` | 选择器 | 下拉选择器,支持单选、多选、搜索和远程加载。 | `select.md` | — |
81
+ | `Sidebar` +10 个子组件 | 侧边栏 | 侧边栏复合组件,提供根容器、页签、导航项、分组、列表项、占位项与底栏,通过 Sidebar.xxx 组合使用。 | `sidebar.md` | — |
82
+ | `Skeleton` | 骨架屏 | 在数据加载完成前通过占位图形展示页面结构,降低用户等待焦虑。 | `skeleton.md` | — |
83
+ | `Slider` | 数值滑块 | 滑动输入器,用于在数值区间内进行选择。 | `slider.md` | — |
84
+ | `Spin` | 加载中 | 用于页面和区域的加载中状态指示器。 | `spin.md` | — |
85
+ | `Steps` | 步骤条 | 引导用户按照流程完成任务的导航条。 | `steps.md` | — |
86
+ | `Switch` | 开关 | 用于在两个互斥状态之间切换,如启用/禁用。 | `switch.md` | — |
87
+ | `Table` | 表格 | 用于展示行列数据的表格组件,支持排序、行选择、加载态等。 | `table.md` | — |
88
+ | `Tabs` | 页签 | 选项卡切换组件,支持多种风格变体和尺寸。 | `tabs.md` | ✓ |
89
+ | `Tag` | 标签 | 用于标记和分类的小型标签元素。 | `tag.md` | — |
90
+ | `Textarea` | 多行文本框 | 多行纯文本编辑控件,支持字数统计和自动高度。 | `textarea.md` | — |
91
+ | `TimePicker` | 时间选择器 | 用于选择时间的输入组件。 | `time-picker.md` | — |
92
+ | `toast` | 全局提示 | 命令式全局提示组件,用于操作反馈。 | `toast.md` | ✓ |
93
+ | `Tooltip` | 文字提示 | 鼠标悬停时显示的简短提示信息。 | `tooltip.md` | ✓ |
94
+ | `Upload` | 上传 | 文件上传组件,支持点击和拖拽上传。 | `upload.md` | — |
95
+
96
+ - 「文档」列对应 `references/components/` 下的文件名,含完整 Props 与示例
97
+ - 「按需导入」为 ✓ 的组件可写 `import { X } from "lingee-ui/{目录名}"`,其余从 `lingee-ui` 根导入
98
+ - **清单里没有的组件本库就是没有**,不要臆造组件名
99
+
100
+ ## 选型决策
101
+
102
+ 优先使用本库组件,**仅当本库确实没有对应组件时**才引入其他三方库。
103
+
104
+ | 需求 | 用这个 |
105
+ |------|--------|
106
+ | 鼠标悬浮的文字提示 | `Tooltip` |
107
+ | 悬浮/点击弹出的富内容浮层 | `Popover` |
108
+ | 点击弹出的操作菜单、选项列表 | `Dropdown` |
109
+ | 表单里的选择器 | `Select` |
110
+ | 删除等二次确认 | `Dialog.confirm()` |
111
+ | 侧滑面板 | `Drawer` |
112
+ | 操作后的轻提示 | `toast.success()` / `toast.error()` |
113
+ | 常驻的状态提示条 | `Alert` |
114
+ | 标签页切换 | `Tabs` |
115
+ | 无数据占位 | `Empty` |
116
+ | 加载中 | `Spin`(转圈) / `Skeleton`(占位骨架) |
117
+ | 分页 | `Pagination` |
118
+ | 自定义滚动条区域 | `ScrollArea` |
119
+
120
+ **禁止用绝对定位手写浮层**,一律用 `Tooltip` / `Popover` / `Dropdown` / `Drawer`。
121
+
122
+ ## 图标
123
+
124
+ ```tsx
125
+ import { Search, Trash } from "lingee-icon";
126
+
127
+ <Search size={16} />
128
+ <Trash size={16} className="danger-icon" />
129
+ ```
130
+
131
+ 图标默认 `size="1em"`、`color="currentColor"`,即随父级字号与文字颜色走,
132
+ 所以**优先用 CSS 控制颜色**而不是传 `color` prop。
133
+
134
+ 完整 Props 见 `references/setup.md`,967 个图标的名称与中文语义索引见 `references/icons.md`。
135
+ 选图标时必须从索引中查找,**不要凭猜测写图标名**,也不要从 `@ant-design/icons`、`lucide-react` 等其他库引入。
136
+
137
+ ## 颜色:只用语义 Token
138
+
139
+ 三条铁律:
140
+
141
+ 1. **禁止硬编码色值**(`#495DFF`、`rgb(...)`、`red`),也禁止在 tsx 中写 hex/rgb
142
+ 2. **禁止使用 primitives 色板变量**(`--lg-primary-600`、`--lg-black-82`),它们不随暗色模式切换
143
+ 3. 只用语义层 `--lg-g-*` 变量,按 CSS 属性选前缀:
144
+
145
+ | CSS 属性 | Token 前缀 |
146
+ |----------|-----------|
147
+ | `color` / `fill` / `stroke` | `--lg-g-fg-color-*` |
148
+ | `background` / `background-color` | `--lg-g-bg-color-*` |
149
+ | `border-color` / `border` / `outline` | `--lg-g-border-color-*` |
150
+
151
+ 常用 Token(色值列为亮色下的实际取值,仅供比对,不要写进代码):
152
+
153
+ | 用途 | Token | 亮色值 |
154
+ |------|-------|--------|
155
+ | 文本-标题/正文 | `var(--lg-g-fg-color-black-strong)` | `rgba(0, 0, 0, 0.82)` |
156
+ | 文本-次要 | `var(--lg-g-fg-color-black-muted)` | `rgba(0, 0, 0, 0.64)` |
157
+ | 文本-辅助说明 | `var(--lg-g-fg-color-black-default)` | `rgba(0, 0, 0, 0.46)` |
158
+ | 文本-禁用/占位 | `var(--lg-g-fg-color-black-aint)` | `rgba(0, 0, 0, 0.28)` |
159
+ | 文本-品牌色 | `var(--lg-g-fg-color-primary-default)` | `#495DFF` |
160
+ | 文本-危险 | `var(--lg-g-fg-color-danger-default)` | `#F12234` |
161
+ | 文本-白色 | `var(--lg-g-fg-color-white-heavy)` | `#FFFFFF` |
162
+ | 背景-白色 | `var(--lg-g-bg-color-white-heavy)` | `#FFFFFF` |
163
+ | 背景-极浅灰 | `var(--lg-g-bg-color-black-faint)` | `rgba(0, 0, 0, 0.03)` |
164
+ | 背景-浅灰 | `var(--lg-g-bg-color-black-subtle)` | `rgba(0, 0, 0, 0.06)` |
165
+ | 背景-中灰 | `var(--lg-g-bg-color-black-muted)` | `rgba(0, 0, 0, 0.12)` |
166
+ | 背景-品牌实色 | `var(--lg-g-bg-color-primary-default)` | `#495DFF` |
167
+ | 背景-品牌浅底 | `var(--lg-g-bg-color-primary-translucent-soft)` | `rgba(109, 128, 255, 0.08)` |
168
+ | 背景-危险实色 | `var(--lg-g-bg-color-danger-default)` | `#F12234` |
169
+ | 边框-默认 | `var(--lg-g-border-color-black-soft)` | `rgba(0, 0, 0, 0.08)` |
170
+ | 边框-中等 | `var(--lg-g-border-color-black-muted)` | `rgba(0, 0, 0, 0.12)` |
171
+ | 边框-强调 | `var(--lg-g-border-color-black-moderate)` | `rgba(0, 0, 0, 0.18)` |
172
+ | 边框-品牌 | `var(--lg-g-border-color-primary-default)` | `#495DFF` |
173
+ | 边框-危险 | `var(--lg-g-border-color-danger-default)` | `#F12234` |
174
+
175
+ 暗色模式给 `<html>` 加 `data-theme="dark"` 即自动切换,无需额外处理。
176
+
177
+ ### 命名异常的 Token
178
+
179
+ 以下 Token 名在设计源文件里拼错了,但已被组件库使用**不能改**。按正确拼写写出来的变量不存在,
180
+ CSS 不报错、颜色直接丢失,属于极难排查的静默失效:
181
+
182
+ - `var(--lg-g-fg-color-indigo-defauit)` ← 照抄,不要写成 `--lg-g-fg-color-indigo-default`
183
+ - `var(--lg-g-fg-color-lime-defauit)` ← 照抄,不要写成 `--lg-g-fg-color-lime-default`
184
+ - `var(--lg-g-fg-color-violet-defauit)` ← 照抄,不要写成 `--lg-g-fg-color-violet-default`
185
+ - `var(--lg-g-bg-color-emeraid-translucent-soft)` ← 照抄,不要写成 `--lg-g-bg-color-emerald-translucent-soft`
186
+ - `var(--lg-g-fg-color-black-aint)` ← 片段 `aint` 命名不规范,照抄即可
187
+
188
+ ### 拿设计稿色值找 Token
189
+
190
+ 设计稿给的是 hex 时,到 `references/tokens.md` 搜该 hex,表格含亮/暗两列最终色值,可直接反查。
191
+ **搜不到不等于可以硬编码** —— 应向用户说明缺口并等设计确认,不要自行新增变量、也不要退回 primitives。
192
+
193
+ 全量 156 个语义 Token 见 `references/tokens.md`。
194
+
195
+ ## 查阅详细 API
196
+
197
+ 需要某个组件的完整 Props 时,读 `references/components/{目录名}.md`(目录名见组件清单表)。
198
+ 不要凭记忆猜 Props,本库 API 与 antd 存在差异。
199
+
200
+ | 文件 | 内容 |
201
+ |------|------|
202
+ | `references/setup.md` | 安装、样式引入、Provider、暗色模式、样式覆盖、图标 Props |
203
+ | `references/components/*.md` | 逐组件 API 表 + 最小示例 |
204
+ | `references/tokens.md` | 全量语义 Token(含亮/暗色值,可按 hex 反查) |
205
+ | `references/icons.md` | 全量图标索引(含中文语义) |
@@ -0,0 +1,7 @@
1
+ {
2
+ "lingeeUi": "0.0.7",
3
+ "lingeeIcon": "1.0.16",
4
+ "componentCount": 36,
5
+ "iconCount": 967,
6
+ "sourceHash": "aeccd0bbb2cfd3c6"
7
+ }
@@ -0,0 +1,30 @@
1
+ # Alert 消息通知
2
+
3
+ 消息提示组件,用于页面中展示重要的提示信息。
4
+
5
+ - 导入:`import { Alert } from "lingee-ui";`
6
+ - 可用类型:`AlertProps`, `AlertType`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { Alert } from "lingee-ui";
12
+
13
+ export default function BasicDemo() {
14
+ return <Alert type="info">This is an informational message.</Alert>;
15
+ }
16
+ ```
17
+
18
+ ## API
19
+
20
+ | 属性 | 说明 | 类型 | 默认值 |
21
+ |------|------|------|--------|
22
+ | `type` | 提示类型 | `"info" \| "success" \| "warning" \| "error" \| "default"` | `"info"` |
23
+ | `title` | 标题内容 | `ReactNode` | - |
24
+ | `description` | 描述/正文内容 | `ReactNode` | - |
25
+ | `items` | 多行列表描述 | `ReactNode[]` | - |
26
+ | `closable` | 是否显示关闭按钮 | `boolean` | `true` |
27
+ | `onClose` | 关闭回调 | `(e: MouseEvent) => void` | - |
28
+ | `icon` | 前缀图标,`false` 隐藏图标 | `ReactNode \| false` | - |
29
+ | `action` | 操作区(右侧按钮/链接) | `ReactNode` | - |
30
+ | `children` | 子内容(替代 description 使用) | `ReactNode` | - |
@@ -0,0 +1,45 @@
1
+ # Avatar 头像
2
+
3
+ 头像组件,用于展示用户头像或图标,支持图片、文字、默认图标三种形态。
4
+
5
+ - 导入:`import { Avatar, AvatarGroup } from "lingee-ui";`
6
+ - 可用类型:`AvatarProps`, `AvatarGroupProps`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { Avatar } from "lingee-ui";
12
+
13
+ export default function BasicDemo() {
14
+ return (
15
+ <div style={{ display: "flex", alignItems: "center", gap: 16 }}>
16
+ <Avatar size={64} src="https://api.dicebear.com/7.x/avataaars/svg?seed=Felix" />
17
+ <Avatar size={48} src="https://api.dicebear.com/7.x/avataaars/svg?seed=Luna" />
18
+ <Avatar size={32} src="https://api.dicebear.com/7.x/avataaars/svg?seed=Max" />
19
+ </div>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Avatar API
25
+
26
+ | 属性 | 说明 | 类型 | 默认值 |
27
+ |------|------|------|--------|
28
+ | `src` | 头像图片地址 | `string` | - |
29
+ | `alt` | 图片加载失败时的替代文字 | `string` | - |
30
+ | `size` | 头像尺寸(px) | `number` | `32` |
31
+ | `shape` | 头像形状 | `"circle" \| "square"` | `"circle"` |
32
+ | `icon` | 自定义图标 | `ReactNode` | - |
33
+ | `className` | 自定义类名 | `string` | - |
34
+ | `style` | 自定义样式 | `CSSProperties` | - |
35
+ | `onError` | 图片加载失败回调 | `() => void` | - |
36
+
37
+ ## AvatarGroup API
38
+
39
+ | 属性 | 说明 | 类型 | 默认值 |
40
+ |------|------|------|--------|
41
+ | `max` | 最多显示数量,超出显示 +N | `number` | `5` |
42
+ | `size` | 头像尺寸(px) | `number` | `32` |
43
+ | `className` | 自定义类名 | `string` | - |
44
+ | `style` | 自定义样式 | `CSSProperties` | - |
45
+ | `children` | 子元素(Avatar 列表) | `ReactNode` | - |
@@ -0,0 +1,40 @@
1
+ # Button 按钮
2
+
3
+ 用于触发一个操作,是用户与系统交互的基础元素。
4
+
5
+ - 导入:`import { Button } from "lingee-ui";`
6
+ - 按需导入:`import { Button } from "lingee-ui/button";`
7
+ - 可用类型:`ButtonProps`, `ButtonVariant`, `ButtonShape`, `ButtonSize`
8
+
9
+ ## 最小示例
10
+
11
+ ```tsx
12
+ import { Button } from "lingee-ui";
13
+
14
+ export default function BasicDemo() {
15
+ return (
16
+ <div style={{ display: "flex", gap: 12 }}>
17
+ <Button variant="primary">Primary</Button>
18
+ <Button variant="default">Default</Button>
19
+ <Button variant="text">Text</Button>
20
+ </div>
21
+ );
22
+ }
23
+ ```
24
+
25
+ ## API
26
+
27
+ | 属性 | 说明 | 类型 | 默认值 |
28
+ |------|------|------|--------|
29
+ | `variant` | 按钮变体 | `"primary" \| "filled" \| "default" \| "text" \| "link-plain" \| "link"` | `"default"` |
30
+ | `size` | 按钮尺寸 | `"sm" \| "md" \| "std" \| "lg"` | `"md"` |
31
+ | `shape` | 按钮形状 | `"default" \| "round" \| "circle"` | `"default"` |
32
+ | `icon` | 图标插槽 | `ReactNode` | - |
33
+ | `iconPosition` | 图标位置 | `"start" \| "end"` | `"start"` |
34
+ | `danger` | 危险态 | `boolean` | `false` |
35
+ | `ghost` | 透明背景 | `boolean` | `false` |
36
+ | `loading` | 加载状态 | `boolean` | `false` |
37
+ | `disabled` | 禁用状态 | `boolean` | `false` |
38
+ | `tooltip` | Tooltip 文字 | `string` | - |
39
+ | `onClick` | 点击回调 | `(e: MouseEvent) => void` | - |
40
+ | `children` | 子内容 | `ReactNode` | - |