lingee-ui 0.0.6 → 0.0.8

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 (108) 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/button/index.js +1 -1
  5. package/dist/button/index.mjs +1 -1
  6. package/dist/chunk-3U36GSZF.js +2 -0
  7. package/dist/chunk-7F53VFM6.mjs +1 -0
  8. package/dist/chunk-7TZ6IXXG.js +1 -0
  9. package/dist/chunk-AEPAJEIR.js +1 -0
  10. package/dist/chunk-AP6UHKTU.mjs +1 -0
  11. package/dist/chunk-JKY43GCS.mjs +1 -0
  12. package/dist/chunk-P56ABRDC.js +1 -0
  13. package/dist/chunk-PKNSR23I.mjs +2 -0
  14. package/dist/chunk-QBEHOXXU.mjs +1 -0
  15. package/dist/{chunk-MUKM5CN4.js → chunk-SXHF5CXB.js} +1 -1
  16. package/dist/chunk-TO3JLUBX.mjs +1 -0
  17. package/dist/chunk-VHOWVMZ3.js +1 -0
  18. package/dist/{index-B4ySDWo5.d.mts → index-7pb5YOcq.d.mts} +3 -3
  19. package/dist/{index-B4ySDWo5.d.ts → index-7pb5YOcq.d.ts} +3 -3
  20. package/dist/index.css +1 -1
  21. package/dist/index.d.mts +596 -119
  22. package/dist/index.d.ts +596 -119
  23. package/dist/index.js +2 -2
  24. package/dist/index.mjs +2 -2
  25. package/dist/input/index.css +1 -1
  26. package/dist/input/index.d.mts +9 -3
  27. package/dist/input/index.d.ts +9 -3
  28. package/dist/input/index.js +1 -1
  29. package/dist/input/index.mjs +1 -1
  30. package/dist/popover/index.d.mts +6 -6
  31. package/dist/popover/index.d.ts +6 -6
  32. package/dist/switch/index.d.mts +2 -2
  33. package/dist/switch/index.d.ts +2 -2
  34. package/dist/tabs/index.css +1 -1
  35. package/dist/tabs/index.d.mts +10 -6
  36. package/dist/tabs/index.d.ts +10 -6
  37. package/dist/tabs/index.js +1 -1
  38. package/dist/tabs/index.mjs +1 -1
  39. package/dist/textarea/index.d.mts +2 -2
  40. package/dist/textarea/index.d.ts +2 -2
  41. package/dist/toast/index.css +1 -1
  42. package/dist/toast/index.js +1 -1
  43. package/dist/toast/index.mjs +1 -1
  44. package/dist/tokens.css +1 -1
  45. package/dist/tooltip/index.css +1 -1
  46. package/dist/tooltip/index.d.mts +6 -1
  47. package/dist/tooltip/index.d.ts +6 -1
  48. package/dist/tooltip/index.js +1 -1
  49. package/dist/tooltip/index.mjs +1 -1
  50. package/dist/tree/index.css +1 -0
  51. package/dist/tree/index.d.mts +229 -0
  52. package/dist/tree/index.d.ts +229 -0
  53. package/dist/tree/index.js +1 -0
  54. package/dist/tree/index.mjs +1 -0
  55. package/package.json +14 -4
  56. package/skill/AGENTS-SNIPPET.md +254 -0
  57. package/skill/SKILL.md +206 -0
  58. package/skill/VERSION.json +7 -0
  59. package/skill/references/components/alert.md +30 -0
  60. package/skill/references/components/avatar.md +45 -0
  61. package/skill/references/components/button.md +40 -0
  62. package/skill/references/components/checkbox.md +39 -0
  63. package/skill/references/components/color-picker.md +40 -0
  64. package/skill/references/components/date-picker.md +46 -0
  65. package/skill/references/components/dialog.md +68 -0
  66. package/skill/references/components/divider.md +30 -0
  67. package/skill/references/components/drawer.md +42 -0
  68. package/skill/references/components/dropdown.md +96 -0
  69. package/skill/references/components/empty.md +54 -0
  70. package/skill/references/components/flex.md +44 -0
  71. package/skill/references/components/form.md +57 -0
  72. package/skill/references/components/image.md +37 -0
  73. package/skill/references/components/input.md +33 -0
  74. package/skill/references/components/pagination.md +42 -0
  75. package/skill/references/components/popover.md +45 -0
  76. package/skill/references/components/progress.md +36 -0
  77. package/skill/references/components/radio.md +43 -0
  78. package/skill/references/components/range-picker.md +49 -0
  79. package/skill/references/components/scroll-area.md +50 -0
  80. package/skill/references/components/select.md +52 -0
  81. package/skill/references/components/sidebar.md +203 -0
  82. package/skill/references/components/skeleton.md +39 -0
  83. package/skill/references/components/slider.md +42 -0
  84. package/skill/references/components/spin.md +25 -0
  85. package/skill/references/components/steps.md +34 -0
  86. package/skill/references/components/switch.md +26 -0
  87. package/skill/references/components/table.md +44 -0
  88. package/skill/references/components/tabs.md +49 -0
  89. package/skill/references/components/tag.md +59 -0
  90. package/skill/references/components/textarea.md +30 -0
  91. package/skill/references/components/time-picker.md +49 -0
  92. package/skill/references/components/toast.md +47 -0
  93. package/skill/references/components/tooltip.md +33 -0
  94. package/skill/references/components/tree.md +118 -0
  95. package/skill/references/components/upload.md +41 -0
  96. package/skill/references/icons.md +1117 -0
  97. package/skill/references/setup.md +133 -0
  98. package/skill/references/tokens.md +201 -0
  99. package/CHANGELOG.md +0 -31
  100. package/dist/chunk-22G7TVQU.mjs +0 -1
  101. package/dist/chunk-3VTWGWRW.mjs +0 -1
  102. package/dist/chunk-BURKV6KR.js +0 -1
  103. package/dist/chunk-EWZCOQ5H.js +0 -1
  104. package/dist/chunk-I5FIN7UX.mjs +0 -1
  105. package/dist/chunk-LGFBC4UA.mjs +0 -1
  106. package/dist/chunk-U5VI5OCN.mjs +0 -1
  107. package/dist/chunk-WJXAQ3RX.js +0 -1
  108. package/dist/chunk-ZXRCMMQM.js +0 -1
@@ -0,0 +1,43 @@
1
+ # Radio 单选
2
+
3
+ 单选框组件,用于在一组互斥选项中选择一个。
4
+
5
+ - 导入:`import { RadioGroup, RadioItem } from "lingee-ui";`
6
+ - 可用类型:`RadioGroupProps`, `RadioItemProps`, `RadioSize`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { RadioGroup, RadioItem } from "lingee-ui";
12
+
13
+ export default function BasicDemo() {
14
+ return (
15
+ <RadioGroup defaultValue="a">
16
+ <RadioItem value="a">Option A</RadioItem>
17
+ <RadioItem value="b">Option B</RadioItem>
18
+ <RadioItem value="c">Option C</RadioItem>
19
+ </RadioGroup>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## API
25
+
26
+ ### RadioGroup
27
+
28
+ | 属性 | 说明 | 类型 | 默认值 |
29
+ |------|------|------|--------|
30
+ | `value` | 受控选中值 | `string` | - |
31
+ | `defaultValue` | 默认选中值 | `string` | - |
32
+ | `onValueChange` | 选中值变化回调 | `(value: string) => void` | - |
33
+ | `disabled` | 是否整组禁用 | `boolean` | `false` |
34
+ | `orientation` | 排列方向 | `"horizontal" \| "vertical"` | `"vertical"` |
35
+ | `size` | 尺寸 | `"sm" \| "md" \| "lg"` | `"md"` |
36
+
37
+ ### RadioItem
38
+
39
+ | 属性 | 说明 | 类型 | 默认值 |
40
+ |------|------|------|--------|
41
+ | `value` | 选项值 | `string` | - |
42
+ | `disabled` | 是否禁用 | `boolean` | `false` |
43
+ | `children` | 标签文本 | `ReactNode` | - |
@@ -0,0 +1,49 @@
1
+ # RangePicker 日期范围选择器
2
+
3
+ 用于选择日期范围的输入组件。
4
+
5
+ - 导入:`import { RangePicker } from "lingee-ui";`
6
+ - 可用类型:`RangePickerProps`, `RangePickerSize`, `DateRange`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { useState } from "react";
12
+ import { RangePicker } from "lingee-ui";
13
+
14
+ export default function BasicDemo() {
15
+ const [value, setValue] = useState(null);
16
+
17
+ return (
18
+ <div style={{ width: 320 }}>
19
+ <RangePicker
20
+ value={value}
21
+ onChange={(v) => setValue(v)}
22
+ />
23
+ </div>
24
+ );
25
+ }
26
+ ```
27
+
28
+ ## API
29
+
30
+ | 属性 | 说明 | 类型 | 默认值 |
31
+ |------|------|------|--------|
32
+ | `value` | 当前日期范围(受控) | `DateRange \| null` | - |
33
+ | `defaultValue` | 默认日期范围(非受控) | `DateRange` | - |
34
+ | `onChange` | 范围变化回调 | `(range: DateRange \| null) => void` | - |
35
+ | `placeholder` | 占位文本 | `[string, string]` | - |
36
+ | `disabled` | 是否禁用 | `boolean` | `false` |
37
+ | `error` | 是否显示错误状态 | `boolean` | `false` |
38
+ | `errorMessage` | 错误提示信息 | `string` | - |
39
+ | `minDate` | 最小可选日期 | `Date` | - |
40
+ | `maxDate` | 最大可选日期 | `Date` | - |
41
+
42
+ ### DateRange
43
+
44
+ ```ts
45
+ interface DateRange {
46
+ from: Date | null;
47
+ to: Date | null;
48
+ }
49
+ ```
@@ -0,0 +1,50 @@
1
+ # ScrollArea 自定义滚动区域
2
+
3
+ 自定义样式的滚动容器组件,提供美观的滚动条体验。
4
+
5
+ - 导入:`import { ScrollArea, ScrollBar } from "lingee-ui";`
6
+ - 可用类型:`ScrollAreaProps`, `ScrollBarProps`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { ScrollArea } from "lingee-ui";
12
+
13
+ const items = Array.from({ length: 50 }, (_, i) => `Item ${i + 1}`);
14
+
15
+ export default function BasicDemo() {
16
+ return (
17
+ <div style={{ width: 280, border: "1px solid #e0e0e0", borderRadius: 8 }}>
18
+ <ScrollArea style={{ maxHeight: 300 }}>
19
+ <div style={{ padding: 8 }}>
20
+ {items.map((item) => (
21
+ <div
22
+ key={item}
23
+ style={{
24
+ padding: "8px 12px",
25
+ borderBottom: "1px solid #f0f0f0",
26
+ fontSize: 14,
27
+ }}
28
+ >
29
+ {item}
30
+ </div>
31
+ ))}
32
+ </div>
33
+ </ScrollArea>
34
+ </div>
35
+ );
36
+ }
37
+ ```
38
+
39
+ ## API
40
+
41
+ | 属性 | 说明 | 类型 | 默认值 |
42
+ |------|------|------|--------|
43
+ | `type` | 滚动条显示策略 | `"scroll" \| "hover" \| "auto" \| "always"` | `"scroll"` |
44
+ | `scrollbars` | 滚动条方向 | `"vertical" \| "horizontal" \| "both"` | `"vertical"` |
45
+ | `scrollbarSize` | 滚动条默认宽度(px) | `number` | `4` |
46
+ | `scrollbarHoverSize` | 滚动条悬浮时宽度(px) | `number` | `6` |
47
+ | `scrollHideDelay` | 滚动条隐藏延迟(ms) | `number` | `1000` |
48
+ | `className` | 自定义类名 | `string` | - |
49
+ | `style` | 自定义样式 | `CSSProperties` | - |
50
+ | `children` | 子内容 | `ReactNode` | - |
@@ -0,0 +1,52 @@
1
+ # Select 选择器
2
+
3
+ 下拉选择器,支持单选、多选、搜索和远程加载。
4
+
5
+ - 导入:`import { Select } from "lingee-ui";`
6
+ - 可用类型:`SelectProps`, `SelectOption`, `SelectOptionGroup`, `SelectSize`, `SelectMode`, `SelectDropdownProps`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { useState } from "react";
12
+ import { Select } from "lingee-ui";
13
+
14
+ export default function BasicDemo() {
15
+ const [value, setValue] = useState<string>("");
16
+
17
+ return (
18
+ <Select
19
+ options={[
20
+ { label: "View only", value: "view" },
21
+ { label: "Can edit", value: "edit" },
22
+ { label: "Admin", value: "admin" },
23
+ ]}
24
+ value={value}
25
+ onChange={(v) => setValue(v as string)}
26
+ placeholder="Select a permission"
27
+ />
28
+ );
29
+ }
30
+ ```
31
+
32
+ ## API
33
+
34
+ | 属性 | 说明 | 类型 | 默认值 |
35
+ |------|------|------|--------|
36
+ | `options` | 选项数据 | `Array<{ label: string; value: T }>` | `[]` |
37
+ | `value` | 当前选中值 | `T \| T[]` | - |
38
+ | `onChange` | 选中值变化回调 | `(value: T \| T[]) => void` | - |
39
+ | `placeholder` | 占位文本 | `string` | - |
40
+ | `showSearch` | 是否支持搜索 | `boolean` | `false` |
41
+ | `filterOption` | 是否本地过滤(设为 false 配合 onSearch 远程搜索) | `boolean` | `true` |
42
+ | `onSearch` | 搜索回调 | `(keyword: string) => void` | - |
43
+ | `disabled` | 是否禁用 | `boolean` | `false` |
44
+ | `error` | 是否错误态 | `boolean` | `false` |
45
+ | `mode` | 选择模式 | `"single" \| "multiple"` | `"single"` |
46
+ | `allowClear` | 是否可清空 | `boolean` | `false` |
47
+ | `loading` | 是否加载中 | `boolean` | `false` |
48
+ | `loadError` | 是否加载失败 | `boolean` | `false` |
49
+ | `size` | 尺寸 | `"sm" \| "md" \| "lg"` | `"md"` |
50
+ | `suffixIcon` | 后缀图标 | `ReactNode` | - |
51
+ | `maxTagCount` | 多选模式最多显示 Tag 数 | `number` | - |
52
+ | `dropdown` | 下拉面板配置 | `SelectDropdownProps` | - |
@@ -0,0 +1,203 @@
1
+ # Sidebar 侧边栏
2
+
3
+ 侧边栏复合组件,提供根容器、页签、导航项、分组、列表项、占位项与底栏,通过 Sidebar.xxx 组合使用。
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`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { useState } from "react";
12
+ import { Sidebar, ScrollArea } from "lingee-ui";
13
+ import { List, Enterprise, NewChat, AlarmClock, Agent } from "lingee-icon";
14
+
15
+ export default function BasicDemo() {
16
+ const [tab, setTab] = useState("work");
17
+ const [active, setActive] = useState("new-task");
18
+
19
+ return (
20
+ <Sidebar.Root style={{ height: 320, borderRadius: 12, paddingTop: 10 }}>
21
+ <Sidebar.TabBar
22
+ items={[
23
+ { key: "work", label: "工作", icon: <List size={20} /> },
24
+ { key: "manage", label: "管理", icon: <Enterprise size={20} /> },
25
+ ]}
26
+ activeKey={tab}
27
+ onChange={setTab}
28
+ />
29
+
30
+ <ScrollArea className="lg-sidebar__scroll">
31
+ {/* 区块内缩用 lg-sidebar__section,无需自行写 padding */}
32
+ <div className="lg-sidebar__section">
33
+ <Sidebar.NavItem
34
+ icon={<NewChat size={18} />}
35
+ label="新任务"
36
+ active={active === "new-task"}
37
+ onClick={() => setActive("new-task")}
38
+ />
39
+ <Sidebar.NavItem
40
+ icon={<AlarmClock size={18} />}
41
+ label="定时任务"
42
+ active={active === "scheduled"}
43
+ onClick={() => setActive("scheduled")}
44
+ />
45
+ <Sidebar.NavItem
46
+ icon={<Agent size={18} />}
47
+ label="智能体"
48
+ active={active === "agent"}
49
+ onClick={() => setActive("agent")}
50
+ />
51
+ </div>
52
+ </ScrollArea>
53
+ </Sidebar.Root>
54
+ );
55
+ }
56
+ ```
57
+
58
+ ## API
59
+
60
+ ### Sidebar.Root
61
+
62
+ | 属性 | 说明 | 类型 | 默认值 |
63
+ |------|------|------|--------|
64
+ | `width` | 展开宽度(px) | `number` | `280` |
65
+ | `collapsed` | 折叠态。传入即启用双层结构与宽度过渡;不传则宽度恒定 | `boolean` | - |
66
+ | `safeAreaTop` | 顶部安全区高度(px),用于让位固定顶栏 | `number` | `0` |
67
+
68
+ ### Sidebar.Header
69
+
70
+ 纯插槽容器。平台相关处理(窗口拖拽区、系统按钮避让)由消费方通过 `children` 与 `style` 注入。
71
+
72
+ | 属性 | 说明 | 类型 | 默认值 |
73
+ |------|------|------|--------|
74
+ | `children` | 内容 | `ReactNode` | - |
75
+
76
+ ### Sidebar.TabBar
77
+
78
+ | 属性 | 说明 | 类型 | 默认值 |
79
+ |------|------|------|--------|
80
+ | `items` | 页签列表 `{ key, label, icon?, disabled?, ariaLabel? }` | `SidebarTabItem[]` | - |
81
+ | `activeKey` | 当前选中 key | `string` | - |
82
+ | `onChange` | 切换回调 | `(key: string) => void` | - |
83
+
84
+ 页签显隐过滤(如权限控制)请在传入 `items` 前完成,组件不介入。
85
+
86
+ ### Sidebar.NavItem
87
+
88
+ | 属性 | 说明 | 类型 | 默认值 |
89
+ |------|------|------|--------|
90
+ | `icon` | 左侧图标 | `ReactNode` | - |
91
+ | `label` | 文本 | `ReactNode` | - |
92
+ | `active` | 选中态 | `boolean` | `false` |
93
+ | `disabled` | 禁用态 | `boolean` | `false` |
94
+ | `badge` | 右侧徽章插槽。传纯文本即得药丸样式;传自带样式的节点可覆盖 | `ReactNode` | - |
95
+ | `onClick` | 点击回调 | `() => void` | - |
96
+
97
+ 文本溢出时自动显示 Tooltip,无需外层包裹。
98
+
99
+ ### Sidebar.CollapsibleNavItem
100
+
101
+ | 属性 | 说明 | 类型 | 默认值 |
102
+ |------|------|------|--------|
103
+ | `icon` | 左侧图标 | `ReactNode` | - |
104
+ | `label` | 分组标题 | `ReactNode` | - |
105
+ | `active` | 头部高亮。内部与子项 active 互斥 | `boolean` | `false` |
106
+ | `open` | 受控展开态 | `boolean` | - |
107
+ | `defaultOpen` | 非受控初始展开态 | `boolean` | `false` |
108
+ | `onOpenChange` | 展开态变化回调 | `(next: boolean) => void` | - |
109
+ | `onLabelClick` | 标签区点击。传入后标签与箭头分离命中 | `() => void` | - |
110
+ | `items` | 子项列表 `{ key, label, active?, disabled?, onClick? }` | `SidebarCollapsibleNavItemChild[]` | - |
111
+ | `extra` | 头部右侧插槽 | `ReactNode` | - |
112
+ | `disabled` | 禁用态 | `boolean` | `false` |
113
+ | `expandLabel` / `collapseLabel` | 箭头无障碍标签 | `string` | - |
114
+
115
+ ### Sidebar.GroupHeader
116
+
117
+ | 属性 | 说明 | 类型 | 默认值 |
118
+ |------|------|------|--------|
119
+ | `title` | 标题 | `ReactNode` | - |
120
+ | `collapsible` | 可折叠 | `boolean` | `false` |
121
+ | `expanded` | 展开态,仅 `collapsible` 时生效 | `boolean` | `true` |
122
+ | `onToggle` | 切换回调 | `() => void` | - |
123
+ | `actions` | 右侧操作区插槽 | `ReactNode` | - |
124
+
125
+ 折叠箭头与操作区悬停显现,展开态箭头常显。
126
+
127
+ ### Sidebar.ListItem
128
+
129
+ | 属性 | 说明 | 类型 | 默认值 |
130
+ |------|------|------|--------|
131
+ | `title` | 标题 | `ReactNode` | - |
132
+ | `active` | 选中态 | `boolean` | `false` |
133
+ | `indicator` | 状态指示器 | `"running" \| "clarification" \| "unread" \| null` | - |
134
+ | `prefix` | 标题前插槽 | `ReactNode` | - |
135
+ | `onSelect` | 点击回调 | `() => void` | - |
136
+ | `menu` | 右侧菜单插槽(需自带触发按钮) | `ReactNode` | - |
137
+
138
+ ### Sidebar.CollapsibleListItem
139
+
140
+ | 属性 | 说明 | 类型 | 默认值 |
141
+ |------|------|------|--------|
142
+ | `icon` | 头部图标。需随展开态切换时由消费方传入对应图标 | `ReactNode` | - |
143
+ | `title` | 标题 | `ReactNode` | - |
144
+ | `expanded` | 展开态 | `boolean` | `false` |
145
+ | `onToggle` | 切换回调 | `() => void` | - |
146
+ | `caretPlacement` | 箭头位置。`title` 紧跟标题、悬停才显现;`end` 恒在行尾且常显 | `"title" \| "end"` | `"title"` |
147
+ | `actions` | 头部操作区插槽 | `ReactNode` | - |
148
+ | `actionsVisible` | 操作区常显。菜单打开时置 `true` | `boolean` | `false` |
149
+ | `active` | 头部高亮 | `boolean` | `false` |
150
+ | `children` | 展开区内容 | `ReactNode` | - |
151
+ | `expandLabel` / `collapseLabel` | 无障碍标签 | `string` | - |
152
+
153
+ ### Sidebar.Footer
154
+
155
+ | 属性 | 说明 | 类型 | 默认值 |
156
+ |------|------|------|--------|
157
+ | `avatar` | 头像插槽 | `ReactNode` | - |
158
+ | `name` | 名称,为空时不渲染身份区 | `ReactNode` | - |
159
+ | `nameSuffix` | 名称后插槽(套餐标签等) | `ReactNode` | - |
160
+ | `menuOpen` | 菜单展开态,驱动触发区高亮与箭头旋转 | `boolean` | `false` |
161
+ | `onTriggerClick` | 点击触发区,回传 `DOMRect` 供手动定位浮层 | `(rect: DOMRect) => void` | - |
162
+ | `actions` | 右侧动作区插槽 | `ReactNode` | - |
163
+
164
+ ### Sidebar.FooterMenuStaticRow
165
+
166
+ | 属性 | 说明 | 类型 | 默认值 |
167
+ |------|------|------|--------|
168
+ | `icon` | 行首图标 | `ReactNode` | - |
169
+ | `children` | 行内容 | `ReactNode` | - |
170
+
171
+ ### Sidebar.FooterBadge
172
+
173
+ | 属性 | 说明 | 类型 | 默认值 |
174
+ |------|------|------|--------|
175
+ | `dot` | 是否显示未读红点 | `boolean` | `false` |
176
+ | `children` | 被包裹的按钮 | `ReactNode` | - |
177
+
178
+ ### Sidebar.UsageBar
179
+
180
+ | 属性 | 说明 | 类型 | 默认值 |
181
+ |------|------|------|--------|
182
+ | `used` | 已用量 | `number` | - |
183
+ | `total` | 总量。为 0 时进度按 0 处理 | `number` | - |
184
+ | `formatNumber` | 数字格式化(千分位/小数位依赖 locale) | `(n: number) => string` | `String` |
185
+ | `percentSuffix` | 总量后缀,如「(65%)」 | `ReactNode` | - |
186
+ | `remainingPrefix` | 剩余量前缀,如「剩余 」 | `ReactNode` | - |
187
+ | `ariaLabel` | 进度条无障碍标签 | `string` | - |
188
+
189
+ ### Sidebar.UsagePanel
190
+
191
+ | 属性 | 说明 | 类型 | 默认值 |
192
+ |------|------|------|--------|
193
+ | `title` | 面板标题,为空时不渲染头部 | `ReactNode` | - |
194
+ | `loading` | 加载态,展示骨架屏并隐藏内容 | `boolean` | `false` |
195
+ | `children` | 各额度分区 | `ReactNode` | - |
196
+
197
+ ### Sidebar.UsagePanelSection
198
+
199
+ | 属性 | 说明 | 类型 | 默认值 |
200
+ |------|------|------|--------|
201
+ | `title` | 分区标题 | `ReactNode` | - |
202
+ | `extra` | 标题行右侧附加信息,如到期日 | `ReactNode` | - |
203
+ | `children` | 分区内容,通常是一个 `UsageBar` | `ReactNode` | - |
@@ -0,0 +1,39 @@
1
+ # Skeleton 骨架屏
2
+
3
+ 在数据加载完成前通过占位图形展示页面结构,降低用户等待焦虑。
4
+
5
+ - 导入:`import { Skeleton } from "lingee-ui";`
6
+ - 可用类型:`SkeletonProps`, `SkeletonVariant`, `SkeletonAnimation`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { Skeleton } from "lingee-ui";
12
+
13
+ export default function BasicDemo() {
14
+ return (
15
+ <div style={{ display: "flex", flexDirection: "column", gap: 16 }}>
16
+ <div style={{ display: "flex", flexDirection: "column", gap: 8 }}>
17
+ <Skeleton variant="text" width="100%" />
18
+ <Skeleton variant="text" width="80%" />
19
+ <Skeleton variant="text" width="60%" />
20
+ </div>
21
+ <div style={{ display: "flex", alignItems: "center", gap: 12 }}>
22
+ <Skeleton variant="circle" size={40} />
23
+ <Skeleton variant="rect" width={120} height={36} />
24
+ </div>
25
+ </div>
26
+ );
27
+ }
28
+ ```
29
+
30
+ ## API
31
+
32
+ | 属性 | 说明 | 类型 | 默认值 |
33
+ |------|------|------|--------|
34
+ | `variant` | 形状预设 | `"text" \| "circle" \| "rect"` | `"text"` |
35
+ | `width` | 宽度 | `string \| number` | `"100%"` |
36
+ | `height` | 高度 | `string \| number` | - |
37
+ | `size` | 圆形/方形尺寸(同时设置宽高) | `number` | - |
38
+ | `borderRadius` | 圆角 | `string \| number` | - |
39
+ | `animation` | 动画类型 | `"shimmer" \| "pulse" \| false` | `"shimmer"` |
@@ -0,0 +1,42 @@
1
+ # Slider 数值滑块
2
+
3
+ 滑动输入器,用于在数值区间内进行选择。
4
+
5
+ - 导入:`import { Slider } from "lingee-ui";`
6
+ - 可用类型:`SliderProps`, `SliderSize`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { useState } from "react";
12
+ import { Slider } from "lingee-ui";
13
+
14
+ export default function BasicDemo() {
15
+ const [value, setValue] = useState([50]);
16
+
17
+ return (
18
+ <div style={{ width: 300 }}>
19
+ <Slider value={value} onChange={setValue} />
20
+ <p style={{ marginTop: 12, fontSize: 14, color: "#666" }}>
21
+ Current value: {value[0]}
22
+ </p>
23
+ </div>
24
+ );
25
+ }
26
+ ```
27
+
28
+ ## API
29
+
30
+ | 属性 | 说明 | 类型 | 默认值 |
31
+ |------|------|------|--------|
32
+ | `value` | 当前值(受控) | `number[]` | - |
33
+ | `defaultValue` | 默认值(非受控) | `number[]` | `[0]` |
34
+ | `onChange` | 值变化回调 | `(value: number[]) => void` | - |
35
+ | `min` | 最小值 | `number` | `0` |
36
+ | `max` | 最大值 | `number` | `100` |
37
+ | `step` | 步长 | `number` | `1` |
38
+ | `disabled` | 是否禁用 | `boolean` | `false` |
39
+ | `size` | 尺寸 | `"sm" \| "md" \| "lg"` | `"md"` |
40
+ | `orientation` | 方向 | `"horizontal" \| "vertical"` | `"horizontal"` |
41
+ | `tooltip` | 是否显示 Tooltip | `boolean` | `true` |
42
+ | `tipFormatter` | Tooltip 格式化 | `(value: number) => string` | - |
@@ -0,0 +1,25 @@
1
+ # Spin 加载中
2
+
3
+ 用于页面和区域的加载中状态指示器。
4
+
5
+ - 导入:`import { Spin } from "lingee-ui";`
6
+ - 可用类型:`SpinProps`, `SpinSize`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { Spin } from "lingee-ui";
12
+
13
+ export default function BasicDemo() {
14
+ return <Spin spinning size="lg" />;
15
+ }
16
+ ```
17
+
18
+ ## API
19
+
20
+ | 属性 | 说明 | 类型 | 默认值 |
21
+ |------|------|------|--------|
22
+ | `size` | 尺寸 | `"sm" \| "md" \| "lg"` | `"md"` |
23
+ | `spinning` | 是否显示加载 | `boolean` | `true` |
24
+ | `tip` | 加载提示文本 | `string` | - |
25
+ | `children` | 包裹内容(容器模式) | `ReactNode` | - |
@@ -0,0 +1,34 @@
1
+ # Steps 步骤条
2
+
3
+ 引导用户按照流程完成任务的导航条。
4
+
5
+ - 导入:`import { Steps } from "lingee-ui";`
6
+ - 可用类型:`StepsProps`, `StepItem`, `StepStatus`, `StepsSize`, `StepsTitlePlacement`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { Steps } from "lingee-ui";
12
+
13
+ const items = [
14
+ { title: "Select product" },
15
+ { title: "Confirm order" },
16
+ { title: "Payment" },
17
+ { title: "Done" },
18
+ ];
19
+
20
+ export default function BasicDemo() {
21
+ return <Steps items={items} current={1} />;
22
+ }
23
+ ```
24
+
25
+ ## API
26
+
27
+ | 属性 | 说明 | 类型 | 默认值 |
28
+ |------|------|------|--------|
29
+ | `current` | 当前步骤索引(从 0 开始) | `number` | `0` |
30
+ | `items` | 步骤配置 | `Array<{ title, description? }>` | - |
31
+ | `size` | 尺寸 | `"default" \| "small"` | `"default"` |
32
+ | `status` | 当前步骤状态 | `"process" \| "error"` | `"process"` |
33
+ | `titlePlacement` | 标题方向 | `"vertical" \| "horizontal"` | `"vertical"` |
34
+ | `onChange` | 步骤点击回调 | `(current: number) => void` | - |
@@ -0,0 +1,26 @@
1
+ # Switch 开关
2
+
3
+ 用于在两个互斥状态之间切换,如启用/禁用。
4
+
5
+ - 导入:`import { Switch } from "lingee-ui";`
6
+ - 可用类型:`SwitchProps`, `SwitchSize`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { Switch } from "lingee-ui";
12
+
13
+ export default function BasicDemo() {
14
+ return <Switch defaultChecked />;
15
+ }
16
+ ```
17
+
18
+ ## API
19
+
20
+ | 属性 | 说明 | 类型 | 默认值 |
21
+ |------|------|------|--------|
22
+ | `checked` | 开关状态(受控) | `boolean` | - |
23
+ | `defaultChecked` | 默认开关状态(非受控) | `boolean` | `false` |
24
+ | `onChange` | 状态变更回调 | `(checked: boolean) => void` | - |
25
+ | `size` | 开关尺寸 | `"sm" \| "md" \| "lg"` | `"md"` |
26
+ | `disabled` | 禁用状态 | `boolean` | `false` |
@@ -0,0 +1,44 @@
1
+ # Table 表格
2
+
3
+ 用于展示行列数据的表格组件,支持排序、行选择、加载态等。
4
+
5
+ - 导入:`import { Table } from "lingee-ui";`
6
+ - 可用类型:`TableProps`, `TableColumnType`, `TableRowSelection`, `TableSize`, `TableSorterState`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { Table } from "lingee-ui";
12
+
13
+ const columns = [
14
+ { title: "Name", dataIndex: "name", key: "name" },
15
+ { title: "Age", dataIndex: "age", key: "age" },
16
+ { title: "Department", dataIndex: "department", key: "department" },
17
+ ];
18
+
19
+ const dataSource = [
20
+ { key: "1", name: "Alice Chen", age: 28, department: "Engineering" },
21
+ { key: "2", name: "Bob Liu", age: 32, department: "Product" },
22
+ { key: "3", name: "Carol Wang", age: 25, department: "Design" },
23
+ ];
24
+
25
+ export default function BasicDemo() {
26
+ return <Table columns={columns} dataSource={dataSource} />;
27
+ }
28
+ ```
29
+
30
+ ## API
31
+
32
+ | 属性 | 说明 | 类型 | 默认值 |
33
+ |------|------|------|--------|
34
+ | `columns` | 列定义 | `Array<{ title, dataIndex, key, render?, width?, align?, fixed?, sorter? }>` | - |
35
+ | `dataSource` | 数据源 | `Array<Record<string, any>>` | `[]` |
36
+ | `loading` | 是否显示加载状态 | `boolean` | `false` |
37
+ | `rowKey` | 行唯一标识字段 | `string \| ((record) => string)` | `"key"` |
38
+ | `rowSelection` | 行选择配置 | `{ selectedRowKeys, onChange }` | - |
39
+ | `onRow` | 行事件 | `(record, index) => HTMLAttributes` | - |
40
+ | `size` | 尺寸 | `"default" \| "large"` | `"default"` |
41
+ | `bordered` | 是否显示边框 | `boolean` | `false` |
42
+ | `striped` | 是否显示斑马纹 | `boolean` | `false` |
43
+ | `hoverable` | 是否行悬浮高亮 | `boolean` | `true` |
44
+ | `scroll` | 滚动设置 | `{ x?: number, y?: number }` | - |
@@ -0,0 +1,49 @@
1
+ # Tabs 页签
2
+
3
+ 选项卡切换组件,支持多种风格变体和尺寸。
4
+
5
+ - 导入:`import { Tabs } from "lingee-ui";`
6
+ - 按需导入:`import { Tabs } from "lingee-ui/tabs";`
7
+ - 可用类型:`TabsProps`, `TabItem`, `TabsVariant`, `TabsSize`
8
+
9
+ ## 最小示例
10
+
11
+ ```tsx
12
+ import { Tabs } from "lingee-ui";
13
+
14
+ const items = [
15
+ { key: "tab1", label: "Tab One" },
16
+ { key: "tab2", label: "Tab Two" },
17
+ { key: "tab3", label: "Tab Three" },
18
+ ];
19
+
20
+ export default function BasicDemo() {
21
+ return <Tabs items={items} defaultActiveKey="tab1" />;
22
+ }
23
+ ```
24
+
25
+ ## API
26
+
27
+ | 属性 | 说明 | 类型 | 默认值 |
28
+ |------|------|------|--------|
29
+ | `items` | 标签项配置 | `TabItem[]` | - |
30
+ | `activeKey` | 当前激活 key(受控) | `string` | - |
31
+ | `defaultActiveKey` | 默认激活 key(非受控) | `string` | - |
32
+ | `onChange` | 切换回调 | `(key: string) => void` | - |
33
+ | `variant` | 风格变体 | `"segmented" \| "rounded" \| "solid" \| "outline" \| "underline"` | `"segmented"` |
34
+ | `size` | 尺寸 | `"sm" \| "md"` | `"md"` |
35
+ | `glassy` | 滑块玻璃高光效果 | `boolean` | `false` |
36
+ | `transparent` | 容器背景透明(去掉灰底) | `boolean` | `false` |
37
+ | `animated` | 是否开启内容切换动画 | `boolean` | `true` |
38
+ | `destroyInactivePanel` | 切走时是否销毁非活跃面板 | `boolean` | `false` |
39
+
40
+ ### TabItem
41
+
42
+ | 属性 | 说明 | 类型 | 默认值 |
43
+ |------|------|------|--------|
44
+ | `key` | 唯一标识 | `string` | - |
45
+ | `label` | 标签文本 | `ReactNode` | - |
46
+ | `children` | 面板内容 | `ReactNode` | - |
47
+ | `icon` | 图标 | `ReactNode` | - |
48
+ | `suffix` | 后缀(如徽标) | `ReactNode` | - |
49
+ | `disabled` | 是否禁用 | `boolean` | `false` |