@teamix-evo/ui 0.1.1 → 0.2.0
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.
- package/README.md +1 -1
- package/package.json +8 -4
- package/src/components/accordion/accordion.meta.md +10 -5
- package/src/components/accordion/accordion.stories.tsx +11 -6
- package/src/components/affix/affix.meta.md +19 -10
- package/src/components/affix/affix.stories.tsx +4 -2
- package/src/components/alert/alert.meta.md +19 -14
- package/src/components/alert/alert.stories.tsx +1 -1
- package/src/components/alert/alert.tsx +5 -5
- package/src/components/alert-dialog/alert-dialog.meta.md +23 -10
- package/src/components/alert-dialog/alert-dialog.stories.tsx +1 -1
- package/src/components/alert-dialog/alert-dialog.tsx +1 -1
- package/src/components/anchor/anchor.meta.md +20 -11
- package/src/components/anchor/anchor.stories.tsx +1 -1
- package/src/components/app/app.meta.md +19 -10
- package/src/components/app/app.stories.tsx +4 -2
- package/src/components/aspect-ratio/aspect-ratio.meta.md +10 -5
- package/src/components/aspect-ratio/aspect-ratio.stories.tsx +1 -1
- package/src/components/auto-complete/auto-complete.meta.md +25 -16
- package/src/components/auto-complete/auto-complete.stories.tsx +4 -2
- package/src/components/avatar/avatar.meta.md +23 -11
- package/src/components/avatar/avatar.stories.tsx +1 -1
- package/src/components/badge/badge.meta.md +26 -21
- package/src/components/badge/badge.tsx +7 -13
- package/src/components/breadcrumb/breadcrumb.meta.md +21 -10
- package/src/components/breadcrumb/breadcrumb.stories.tsx +8 -0
- package/src/components/button/button.meta.md +22 -17
- package/src/components/button/button.stories.tsx +1 -1
- package/src/components/button/demo/as-child.tsx +24 -0
- package/src/components/button/demo/basic.tsx +8 -0
- package/src/components/button/demo/block.tsx +16 -0
- package/src/components/button/demo/loading.tsx +19 -0
- package/src/components/button/demo/shapes.tsx +18 -0
- package/src/components/button/demo/sizes.tsx +19 -0
- package/src/components/button/demo/variants.tsx +19 -0
- package/src/components/button/demo/with-icon.tsx +20 -0
- package/src/components/button-group/button-group.meta.md +18 -9
- package/src/components/button-group/button-group.stories.tsx +5 -2
- package/src/components/calendar/calendar.meta.md +14 -9
- package/src/components/calendar/calendar.stories.tsx +1 -1
- package/src/components/calendar/calendar.tsx +1 -1
- package/src/components/card/card.meta.md +36 -11
- package/src/components/card/card.stories.tsx +8 -0
- package/src/components/carousel/carousel.meta.md +16 -11
- package/src/components/carousel/carousel.stories.tsx +10 -5
- package/src/components/cascader/cascader.meta.md +28 -19
- package/src/components/cascader/cascader.stories.tsx +9 -8
- package/src/components/cascader/cascader.tsx +2 -2
- package/src/components/checkbox/checkbox.meta.md +26 -8
- package/src/components/checkbox/checkbox.stories.tsx +1 -1
- package/src/components/collapsible/collapsible.meta.md +11 -4
- package/src/components/collapsible/collapsible.stories.tsx +8 -0
- package/src/components/color-picker/color-picker.meta.md +27 -18
- package/src/components/color-picker/color-picker.stories.tsx +1 -1
- package/src/components/color-picker/color-picker.tsx +1 -0
- package/src/components/combobox/combobox.meta.md +29 -20
- package/src/components/combobox/combobox.stories.tsx +1 -1
- package/src/components/combobox/combobox.tsx +3 -3
- package/src/components/command/command.meta.md +32 -12
- package/src/components/command/command.stories.tsx +1 -1
- package/src/components/command/command.tsx +1 -1
- package/src/components/context-menu/context-menu.meta.md +34 -11
- package/src/components/context-menu/context-menu.stories.tsx +8 -0
- package/src/components/context-menu/context-menu.tsx +2 -2
- package/src/components/data-table/data-table.meta.md +24 -19
- package/src/components/data-table/data-table.stories.tsx +12 -5
- package/src/components/date-picker/date-picker.meta.md +40 -20
- package/src/components/date-picker/date-picker.stories.tsx +1 -1
- package/src/components/descriptions/descriptions.meta.md +23 -14
- package/src/components/descriptions/descriptions.stories.tsx +1 -1
- package/src/components/dialog/dialog.meta.md +25 -12
- package/src/components/dialog/dialog.stories.tsx +1 -1
- package/src/components/dialog/dialog.tsx +1 -1
- package/src/components/drawer/drawer.meta.md +19 -8
- package/src/components/drawer/drawer.stories.tsx +1 -1
- package/src/components/drawer/drawer.tsx +1 -0
- package/src/components/dropdown-menu/dropdown-menu.meta.md +42 -14
- package/src/components/dropdown-menu/dropdown-menu.stories.tsx +8 -0
- package/src/components/dropdown-menu/dropdown-menu.tsx +2 -2
- package/src/components/empty/empty.meta.md +20 -11
- package/src/components/empty/empty.stories.tsx +1 -1
- package/src/components/field/field.meta.md +27 -10
- package/src/components/field/field.stories.tsx +6 -3
- package/src/components/flex/flex.meta.md +23 -14
- package/src/components/flex/flex.stories.tsx +46 -14
- package/src/components/float-button/float-button.meta.md +35 -11
- package/src/components/float-button/float-button.stories.tsx +4 -2
- package/src/components/float-button/float-button.tsx +1 -1
- package/src/components/form/form.meta.md +57 -14
- package/src/components/form/form.stories.tsx +1 -1
- package/src/components/grid/grid.meta.md +31 -6
- package/src/components/grid/grid.stories.tsx +4 -2
- package/src/components/hover-card/hover-card.meta.md +21 -9
- package/src/components/hover-card/hover-card.stories.tsx +6 -2
- package/src/components/image/image.meta.md +24 -15
- package/src/components/image/image.stories.tsx +1 -1
- package/src/components/image/image.tsx +4 -4
- package/src/components/input/demo/addon.tsx +15 -0
- package/src/components/input/demo/basic.tsx +12 -0
- package/src/components/input/demo/clearable.tsx +21 -0
- package/src/components/input/demo/show-count.tsx +18 -0
- package/src/components/input/demo/sizes.tsx +15 -0
- package/src/components/input/demo/with-prefix-suffix.tsx +19 -0
- package/src/components/input/input.meta.md +21 -16
- package/src/components/input/input.stories.tsx +1 -1
- package/src/components/input/input.tsx +51 -47
- package/src/components/input-group/input-group.meta.md +26 -8
- package/src/components/input-group/input-group.stories.tsx +1 -1
- package/src/components/input-group/input-group.tsx +4 -3
- package/src/components/input-number/input-number.meta.md +26 -17
- package/src/components/input-number/input-number.stories.tsx +14 -3
- package/src/components/input-number/input-number.tsx +20 -6
- package/src/components/input-otp/input-otp.meta.md +22 -9
- package/src/components/input-otp/input-otp.stories.tsx +1 -1
- package/src/components/item/item.meta.md +32 -9
- package/src/components/item/item.stories.tsx +5 -2
- package/src/components/kbd/kbd.meta.md +29 -8
- package/src/components/kbd/kbd.stories.tsx +1 -1
- package/src/components/kbd/kbd.tsx +2 -1
- package/src/components/label/label.meta.md +14 -9
- package/src/components/masonry/masonry.meta.md +18 -9
- package/src/components/masonry/masonry.stories.tsx +4 -2
- package/src/components/masonry/masonry.tsx +1 -0
- package/src/components/mentions/mentions.meta.md +28 -19
- package/src/components/mentions/mentions.stories.tsx +1 -1
- package/src/components/mentions/mentions.tsx +2 -1
- package/src/components/menubar/menubar.meta.md +36 -14
- package/src/components/menubar/menubar.stories.tsx +8 -0
- package/src/components/menubar/menubar.tsx +2 -2
- package/src/components/native-select/native-select.meta.md +17 -8
- package/src/components/native-select/native-select.stories.tsx +6 -3
- package/src/components/navigation-menu/navigation-menu.meta.md +25 -11
- package/src/components/navigation-menu/navigation-menu.stories.tsx +11 -11
- package/src/components/navigation-menu/navigation-menu.tsx +3 -2
- package/src/components/notification/notification.meta.md +14 -5
- package/src/components/notification/notification.stories.tsx +5 -3
- package/src/components/notification/notification.tsx +3 -3
- package/src/components/pagination/pagination.meta.md +59 -28
- package/src/components/pagination/pagination.stories.tsx +9 -3
- package/src/components/popconfirm/popconfirm.meta.md +30 -21
- package/src/components/popconfirm/popconfirm.stories.tsx +1 -2
- package/src/components/popconfirm/popconfirm.tsx +1 -1
- package/src/components/popover/popover.meta.md +13 -8
- package/src/components/popover/popover.stories.tsx +1 -1
- package/src/components/progress/progress.meta.md +28 -13
- package/src/components/progress/progress.stories.tsx +1 -1
- package/src/components/progress/progress.tsx +6 -6
- package/src/components/radio-group/radio-group.meta.md +17 -12
- package/src/components/radio-group/radio-group.stories.tsx +1 -1
- package/src/components/rate/rate.meta.md +25 -16
- package/src/components/rate/rate.stories.tsx +11 -3
- package/src/components/rate/rate.tsx +2 -2
- package/src/components/resizable/resizable.meta.md +19 -8
- package/src/components/resizable/resizable.stories.tsx +1 -1
- package/src/components/result/result.meta.md +21 -12
- package/src/components/result/result.stories.tsx +2 -6
- package/src/components/result/result.tsx +3 -3
- package/src/components/scroll-area/scroll-area.meta.md +10 -5
- package/src/components/scroll-area/scroll-area.stories.tsx +8 -0
- package/src/components/scroll-area/scroll-area.tsx +3 -3
- package/src/components/segmented/segmented.meta.md +19 -14
- package/src/components/segmented/segmented.stories.tsx +35 -6
- package/src/components/select/select.meta.md +22 -9
- package/src/components/select/select.stories.tsx +1 -1
- package/src/components/select/select.tsx +2 -2
- package/src/components/separator/separator.meta.md +16 -11
- package/src/components/separator/separator.stories.tsx +1 -1
- package/src/components/sheet/sheet.meta.md +22 -11
- package/src/components/sheet/sheet.stories.tsx +1 -1
- package/src/components/sidebar/sidebar.meta.md +47 -18
- package/src/components/sidebar/sidebar.stories.tsx +10 -5
- package/src/components/skeleton/skeleton.meta.md +33 -10
- package/src/components/skeleton/skeleton.stories.tsx +1 -1
- package/src/components/slider/slider.meta.md +12 -7
- package/src/components/slider/slider.stories.tsx +1 -1
- package/src/components/sonner/sonner.meta.md +8 -3
- package/src/components/sonner/sonner.stories.tsx +13 -8
- package/src/components/space/space.meta.md +22 -13
- package/src/components/space/space.stories.tsx +20 -6
- package/src/components/spinner/spinner.meta.md +23 -10
- package/src/components/spinner/spinner.stories.tsx +1 -1
- package/src/components/statistic/statistic.meta.md +37 -16
- package/src/components/statistic/statistic.stories.tsx +2 -6
- package/src/components/statistic/statistic.tsx +1 -1
- package/src/components/steps/steps.meta.md +21 -12
- package/src/components/steps/steps.stories.tsx +7 -2
- package/src/components/switch/switch.meta.md +16 -11
- package/src/components/switch/switch.stories.tsx +1 -1
- package/src/components/switch/switch.tsx +58 -36
- package/src/components/table/table.meta.md +24 -9
- package/src/components/table/table.stories.tsx +9 -4
- package/src/components/tabs/tabs.meta.md +14 -9
- package/src/components/tabs/tabs.stories.tsx +8 -0
- package/src/components/tag/tag.meta.md +39 -10
- package/src/components/tag/tag.stories.tsx +7 -2
- package/src/components/tag/tag.tsx +3 -3
- package/src/components/textarea/textarea.meta.md +17 -12
- package/src/components/textarea/textarea.stories.tsx +1 -1
- package/src/components/textarea/textarea.tsx +1 -1
- package/src/components/time-picker/time-picker.meta.md +38 -15
- package/src/components/time-picker/time-picker.stories.tsx +44 -6
- package/src/components/time-picker/time-picker.tsx +74 -10
- package/src/components/timeline/timeline.meta.md +20 -11
- package/src/components/timeline/timeline.stories.tsx +14 -4
- package/src/components/timeline/timeline.tsx +3 -2
- package/src/components/toggle/toggle.meta.md +14 -9
- package/src/components/toggle/toggle.stories.tsx +1 -1
- package/src/components/toggle-group/toggle-group.meta.md +16 -11
- package/src/components/toggle-group/toggle-group.stories.tsx +1 -1
- package/src/components/tooltip/tooltip.meta.md +18 -13
- package/src/components/tooltip/tooltip.stories.tsx +1 -1
- package/src/components/tour/tour.meta.md +25 -16
- package/src/components/tour/tour.stories.tsx +1 -1
- package/src/components/tour/tour.tsx +1 -1
- package/src/components/transfer/transfer.meta.md +29 -20
- package/src/components/transfer/transfer.stories.tsx +2 -6
- package/src/components/tree/tree.meta.md +36 -23
- package/src/components/tree/tree.stories.tsx +30 -11
- package/src/components/tree-select/tree-select.meta.md +37 -22
- package/src/components/tree-select/tree-select.stories.tsx +1 -1
- package/src/components/tree-select/tree-select.tsx +1 -1
- package/src/components/typography/typography.meta.md +41 -16
- package/src/components/typography/typography.stories.tsx +4 -8
- package/src/components/typography/typography.tsx +5 -3
- package/src/components/upload/upload.meta.md +31 -22
- package/src/components/upload/upload.stories.tsx +8 -14
- package/src/components/watermark/watermark.meta.md +26 -17
- package/src/components/watermark/watermark.stories.tsx +4 -2
- package/src/components/watermark/watermark.tsx +1 -0
|
@@ -4,10 +4,11 @@ name: Collapsible
|
|
|
4
4
|
type: component
|
|
5
5
|
category: navigation
|
|
6
6
|
since: 0.1.0
|
|
7
|
-
package:
|
|
7
|
+
package: '@teamix-evo/ui'
|
|
8
|
+
displayName: 折叠面板
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
# Collapsible
|
|
11
|
+
# Collapsible 折叠面板
|
|
11
12
|
|
|
12
13
|
单区域展开收起 — Radix Collapsible 薄包装。**shadcn-only**(antd Collapse 单 item 也可以模拟,但语义粗糙)。
|
|
13
14
|
|
|
@@ -27,7 +28,9 @@ package: "@teamix-evo/ui"
|
|
|
27
28
|
> 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。`Collapsible` 是 `CollapsibleRoot` 别名,接受 Radix 的 `open / defaultOpen / onOpenChange / disabled`。
|
|
28
29
|
|
|
29
30
|
<!-- auto:props:begin -->
|
|
31
|
+
|
|
30
32
|
_(组件无 `<Name>Props` interface — props 详见 [`collapsible.tsx`](./collapsible.tsx))_
|
|
33
|
+
|
|
31
34
|
<!-- auto:props:end -->
|
|
32
35
|
|
|
33
36
|
## 依赖
|
|
@@ -35,6 +38,7 @@ _(组件无 `<Name>Props` interface — props 详见 [`collapsible.tsx`](./colla
|
|
|
35
38
|
> 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
|
|
36
39
|
|
|
37
40
|
<!-- auto:deps:begin -->
|
|
41
|
+
|
|
38
42
|
### 同库依赖
|
|
39
43
|
|
|
40
44
|
_无 — 本组件不依赖其他 ui entry。_
|
|
@@ -46,6 +50,7 @@ _无 — 本组件不依赖其他 ui entry。_
|
|
|
46
50
|
```bash
|
|
47
51
|
pnpm add @radix-ui/react-collapsible@^1.1.0
|
|
48
52
|
```
|
|
53
|
+
|
|
49
54
|
<!-- auto:deps:end -->
|
|
50
55
|
|
|
51
56
|
> 子组件:`Collapsible` / `CollapsibleTrigger`(触发器)/ `CollapsibleContent`(可折叠内容)。
|
|
@@ -60,7 +65,9 @@ pnpm add @radix-ui/react-collapsible@^1.1.0
|
|
|
60
65
|
|
|
61
66
|
```tsx
|
|
62
67
|
import {
|
|
63
|
-
Collapsible,
|
|
68
|
+
Collapsible,
|
|
69
|
+
CollapsibleTrigger,
|
|
70
|
+
CollapsibleContent,
|
|
64
71
|
} from '@/components/ui/collapsible';
|
|
65
72
|
import { Button } from '@/components/ui/button';
|
|
66
73
|
import { ChevronsUpDown } from 'lucide-react';
|
|
@@ -76,5 +83,5 @@ import { ChevronsUpDown } from 'lucide-react';
|
|
|
76
83
|
<p className="text-sm text-muted-foreground">高级配置 1</p>
|
|
77
84
|
<p className="text-sm text-muted-foreground">高级配置 2</p>
|
|
78
85
|
</CollapsibleContent>
|
|
79
|
-
</Collapsible
|
|
86
|
+
</Collapsible>;
|
|
80
87
|
```
|
|
@@ -11,6 +11,14 @@ const meta: Meta<typeof Collapsible> = {
|
|
|
11
11
|
title: '导航 · Navigation/Collapsible',
|
|
12
12
|
component: Collapsible,
|
|
13
13
|
tags: ['autodocs'],
|
|
14
|
+
parameters: {
|
|
15
|
+
docs: {
|
|
16
|
+
description: {
|
|
17
|
+
component:
|
|
18
|
+
'折叠面板 — 单区域展开收起,常用于“查看更多 / 收起”、表单高级选项开关等场景。Radix Collapsible 实现,shadcn 专有(antd Collapse 单 item 可模拟但语义粗糙)。',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
14
22
|
};
|
|
15
23
|
|
|
16
24
|
export default meta;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: color-picker
|
|
3
3
|
name: ColorPicker
|
|
4
|
+
displayName: 颜色选择
|
|
4
5
|
type: component
|
|
5
6
|
category: form
|
|
6
7
|
since: 0.1.0
|
|
7
|
-
package:
|
|
8
|
+
package: '@teamix-evo/ui'
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
# ColorPicker
|
|
11
|
+
# ColorPicker 颜色选择
|
|
11
12
|
|
|
12
13
|
颜色选择 — antd 独有补足。**等价 antd `ColorPicker`**(v5.5+)。基于原生 `<input type="color">` + alpha 滑块 + hex 文本输入 + 预设色块,提供"触发器(色块)→ 弹出面板"的标准交互。可选透明度(8 位 hex)。
|
|
13
14
|
|
|
@@ -24,38 +25,46 @@ package: "@teamix-evo/ui"
|
|
|
24
25
|
- 渐变 / 多色阶 → 当前不支持,需配合第三方 picker
|
|
25
26
|
- HSL / RGB 各通道独立调节 → 当前仅 hex + alpha,复杂场景建议引入专业 picker
|
|
26
27
|
|
|
28
|
+
## Props
|
|
29
|
+
|
|
27
30
|
<!-- auto:props:begin -->
|
|
28
|
-
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
37
|
-
| `
|
|
31
|
+
|
|
32
|
+
| 名称 | 类型 | 默认值 | 必填 | 说明 |
|
|
33
|
+
| -------------- | --------------------------- | ----------- | ---- | ----------------------------------------------------------------------------------------- |
|
|
34
|
+
| `value` | `string` | – | – | 受控值 — `#RRGGBB` 或 `#RRGGBBAA`(开 `allowAlpha` 时)。 |
|
|
35
|
+
| `defaultValue` | `string` | `"#000000"` | – | uncontrolled 初值。 |
|
|
36
|
+
| `onChange` | `(value: string) => void` | – | – | 值变化回调。 |
|
|
37
|
+
| `allowAlpha` | `boolean` | `false` | – | 是否允许透明度(antd `format=hex8` 类似行为) — 启用后展示 alpha 滑块,value 变为 8 位 hex。 |
|
|
38
|
+
| `presets` | `string[]` | – | – | 预设色块(antd `presets` 并集) — 一组常用颜色快捷选择。 |
|
|
39
|
+
| `disabled` | `boolean` | – | – | 整体禁用。 |
|
|
40
|
+
| `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 触发器尺寸。 |
|
|
41
|
+
| `className` | `string` | – | – | 触发器 className。 |
|
|
42
|
+
|
|
38
43
|
<!-- auto:props:end -->
|
|
39
44
|
|
|
45
|
+
## 依赖
|
|
46
|
+
|
|
40
47
|
<!-- auto:deps:begin -->
|
|
48
|
+
|
|
41
49
|
### 同库依赖
|
|
42
50
|
|
|
43
51
|
> `teamix-evo ui add color-picker` 时,以下 entry 会被自动连带安装(无需手动 add)。
|
|
44
52
|
|
|
45
|
-
| Entry
|
|
46
|
-
|
|
|
47
|
-
| `cn`
|
|
48
|
-
| `input`
|
|
49
|
-
| `popover` | component | 可交互浮层 — Radix Popover + antd arrow 并集
|
|
53
|
+
| Entry | 类型 | 描述 |
|
|
54
|
+
| --------- | --------- | ----------------------------------------------------------------------------------------------- |
|
|
55
|
+
| `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
|
|
56
|
+
| `input` | component | 文本输入 — shadcn 简洁基底 + antd prefix/suffix/clearable/showCount/addonBefore/addonAfter/size |
|
|
57
|
+
| `popover` | component | 可交互浮层 — Radix Popover + antd arrow 并集 |
|
|
50
58
|
|
|
51
59
|
### npm 依赖
|
|
52
60
|
|
|
53
61
|
_无 — 本组件不依赖任何 npm 包。_
|
|
62
|
+
|
|
54
63
|
<!-- auto:deps:end -->
|
|
55
64
|
|
|
56
65
|
## AI 生成纪律
|
|
57
66
|
|
|
58
|
-
- **value 必须是 `#RRGGBB`(6位)或 `#RRGGBBAA`(8位 + 透明度)** — 不接受 `rgb()` / `hsl()` / 命名色
|
|
67
|
+
- **value 必须是 `#RRGGBB`(6 位)或 `#RRGGBBAA`(8 位 + 透明度)** — 不接受 `rgb()` / `hsl()` / 命名色
|
|
59
68
|
- **`allowAlpha=true`** 时 value 自动变为 8 位 hex;关闭时即使有 alpha 也会被截断到 6 位
|
|
60
69
|
- **`presets`** 应是品牌色板而非随手凑数 — 6-12 个 stable 颜色为佳,避免视觉混乱
|
|
61
70
|
- **`disabled`** 是只读语义 — 配 value 展示当前选中色;**不要**用做"暂时锁定"等业务态(用 form-level 控制)
|
|
@@ -10,7 +10,7 @@ const meta: Meta<typeof ColorPicker> = {
|
|
|
10
10
|
docs: {
|
|
11
11
|
description: {
|
|
12
12
|
component:
|
|
13
|
-
'颜色选择 — 触发器色块 → Popover
|
|
13
|
+
'颜色选择 — 触发器色块 → Popover 面板(原生 color input + alpha + hex 输入 + 预设色板)。可选 8 位 hex(含透明度)。等价 antd `ColorPicker`(v5.5+)。',
|
|
14
14
|
},
|
|
15
15
|
},
|
|
16
16
|
},
|
|
@@ -48,6 +48,7 @@ const ColorPicker = React.forwardRef<HTMLButtonElement, ColorPickerProps>(
|
|
|
48
48
|
(
|
|
49
49
|
{
|
|
50
50
|
value,
|
|
51
|
+
// eslint-disable-next-line teamix-evo/no-color-literal -- ColorPicker default value is a hex literal by API contract (antd parity); not a styling decision.
|
|
51
52
|
defaultValue = '#000000',
|
|
52
53
|
onChange,
|
|
53
54
|
allowAlpha = false,
|
|
@@ -4,10 +4,11 @@ name: Combobox
|
|
|
4
4
|
type: component
|
|
5
5
|
category: form
|
|
6
6
|
since: 0.1.0
|
|
7
|
-
package:
|
|
7
|
+
package: '@teamix-evo/ui'
|
|
8
|
+
displayName: 组合框
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
# Combobox
|
|
11
|
+
# Combobox 组合框
|
|
11
12
|
|
|
12
13
|
可搜索单选下拉 — `Command + Popover` 复合,等价 antd `AutoComplete` / `Select showSearch` 的核心场景。
|
|
13
14
|
**单选**(刻意不做多选,保持语义简单);多选请直接用 `Command` + 自管 selected 数组。
|
|
@@ -23,31 +24,38 @@ package: "@teamix-evo/ui"
|
|
|
23
24
|
- 多选 → `Command` 自定义,或 `CheckboxGroup`
|
|
24
25
|
- 自由文本输入 → `Input` + 自定义 suggestion(超出本组件范围)
|
|
25
26
|
|
|
27
|
+
## Props
|
|
28
|
+
|
|
26
29
|
<!-- auto:props:begin -->
|
|
27
|
-
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
| `
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
37
|
-
| `
|
|
30
|
+
|
|
31
|
+
| 名称 | 类型 | 默认值 | 必填 | 说明 |
|
|
32
|
+
| ------------------- | --------------------------- | ------------- | ---- | -------------------------------------------- |
|
|
33
|
+
| `options` | `ComboboxOption[]` | – | ✓ | 选项列表(antd `AutoComplete.options` 并集)。 |
|
|
34
|
+
| `value` | `string` | – | – | 受控 value(单选)。 |
|
|
35
|
+
| `onChange` | `(value: string) => void` | – | – | value 变化回调。 |
|
|
36
|
+
| `placeholder` | `string` | `"请选择..."` | – | 触发器占位文本(未选)。 |
|
|
37
|
+
| `searchPlaceholder` | `string` | `"搜索..."` | – | 搜索框占位文本。 |
|
|
38
|
+
| `emptyText` | `string` | `"无匹配项"` | – | 无匹配时的提示文本。 |
|
|
39
|
+
| `className` | `string` | `"w-[200px]"` | – | 触发器宽度。 |
|
|
40
|
+
| `disabled` | `boolean` | – | – | 是否禁用。 |
|
|
41
|
+
| `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 触发器尺寸。 |
|
|
42
|
+
|
|
38
43
|
<!-- auto:props:end -->
|
|
39
44
|
|
|
45
|
+
## 依赖
|
|
46
|
+
|
|
40
47
|
<!-- auto:deps:begin -->
|
|
48
|
+
|
|
41
49
|
### 同库依赖
|
|
42
50
|
|
|
43
51
|
> `teamix-evo ui add combobox` 时,以下 entry 会被自动连带安装(无需手动 add)。
|
|
44
52
|
|
|
45
|
-
| Entry
|
|
46
|
-
|
|
|
47
|
-
| `cn`
|
|
48
|
-
| `button`
|
|
49
|
-
| `command` | component | 命令面板 — cmdk(Linear / Raycast 风格),全局搜索 / 命令执行;Combobox 的底座
|
|
50
|
-
| `popover` | component | 可交互浮层 — Radix Popover + antd arrow 并集
|
|
53
|
+
| Entry | 类型 | 描述 |
|
|
54
|
+
| --------- | --------- | --------------------------------------------------------------------------------------- |
|
|
55
|
+
| `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
|
|
56
|
+
| `button` | component | 通用按钮 — shadcn 实现 + antd 功能扩展(loading / icon / shape / block / dashed variant) |
|
|
57
|
+
| `command` | component | 命令面板 — cmdk(Linear / Raycast 风格),全局搜索 / 命令执行;Combobox 的底座 |
|
|
58
|
+
| `popover` | component | 可交互浮层 — Radix Popover + antd arrow 并集 |
|
|
51
59
|
|
|
52
60
|
### npm 依赖
|
|
53
61
|
|
|
@@ -56,6 +64,7 @@ package: "@teamix-evo/ui"
|
|
|
56
64
|
```bash
|
|
57
65
|
pnpm add lucide-react@^0.460.0
|
|
58
66
|
```
|
|
67
|
+
|
|
59
68
|
<!-- auto:deps:end -->
|
|
60
69
|
|
|
61
70
|
> 选项类型 `ComboboxOption`:`{ value: string; label: ReactNode; disabled?: boolean }`。
|
|
@@ -89,5 +98,5 @@ const [v, setV] = React.useState('');
|
|
|
89
98
|
onChange={setV}
|
|
90
99
|
placeholder="选择框架"
|
|
91
100
|
searchPlaceholder="搜索框架..."
|
|
92
|
-
|
|
101
|
+
/>;
|
|
93
102
|
```
|
|
@@ -10,7 +10,7 @@ const meta: Meta<typeof Combobox> = {
|
|
|
10
10
|
docs: {
|
|
11
11
|
description: {
|
|
12
12
|
component:
|
|
13
|
-
'可搜索单选下拉 — Command + Popover
|
|
13
|
+
'可搜索单选下拉 — Command + Popover 复合,对标 antd AutoComplete / Select showSearch。键盘可达、模糊搜索、空态、再次选中清空,适合选项数 > 7 的单选场景。',
|
|
14
14
|
},
|
|
15
15
|
},
|
|
16
16
|
},
|
|
@@ -39,7 +39,7 @@ export interface ComboboxProps {
|
|
|
39
39
|
searchPlaceholder?: string;
|
|
40
40
|
/** 无匹配时的提示文本。 @default "无匹配项" */
|
|
41
41
|
emptyText?: string;
|
|
42
|
-
/** 触发器宽度。 @default "w-
|
|
42
|
+
/** 触发器宽度。 @default "w-panel-sm" */
|
|
43
43
|
className?: string;
|
|
44
44
|
/** 是否禁用。 */
|
|
45
45
|
disabled?: boolean;
|
|
@@ -83,7 +83,7 @@ const Combobox = React.forwardRef<HTMLButtonElement, ComboboxProps>(
|
|
|
83
83
|
role="combobox"
|
|
84
84
|
aria-expanded={open}
|
|
85
85
|
className={cn(
|
|
86
|
-
'w-
|
|
86
|
+
'w-panel-sm justify-between font-normal',
|
|
87
87
|
!value && 'text-muted-foreground',
|
|
88
88
|
className,
|
|
89
89
|
)}
|
|
@@ -92,7 +92,7 @@ const Combobox = React.forwardRef<HTMLButtonElement, ComboboxProps>(
|
|
|
92
92
|
<ChevronsUpDown className="ml-2 size-4 shrink-0 opacity-50" />
|
|
93
93
|
</Button>
|
|
94
94
|
</PopoverTrigger>
|
|
95
|
-
<PopoverContent className="w-
|
|
95
|
+
<PopoverContent className="w-panel-sm p-0">
|
|
96
96
|
<Command>
|
|
97
97
|
<CommandInput placeholder={searchPlaceholder} />
|
|
98
98
|
<CommandList>
|
|
@@ -4,10 +4,11 @@ name: Command
|
|
|
4
4
|
type: component
|
|
5
5
|
category: shell
|
|
6
6
|
since: 0.1.0
|
|
7
|
-
package:
|
|
7
|
+
package: '@teamix-evo/ui'
|
|
8
|
+
displayName: 命令面板
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
# Command
|
|
11
|
+
# Command 命令面板
|
|
11
12
|
|
|
12
13
|
命令面板 — 基于 [`cmdk`](https://cmdk.paco.me/),提供"按 ⌘K 打开"的全局搜索 / 命令执行体验(Linear / Raycast / Vercel 风格)。
|
|
13
14
|
**shadcn-only**(antd 无对标)。是 `Combobox` 的底座(Combobox = Command + Popover)。
|
|
@@ -26,18 +27,25 @@ package: "@teamix-evo/ui"
|
|
|
26
27
|
- 静态菜单 → `DropdownMenu`
|
|
27
28
|
- 需要表单语义 → `Combobox`(基于本组件)
|
|
28
29
|
|
|
30
|
+
## Props
|
|
31
|
+
|
|
29
32
|
<!-- auto:props:begin -->
|
|
33
|
+
|
|
30
34
|
_(no props)_
|
|
35
|
+
|
|
31
36
|
<!-- auto:props:end -->
|
|
32
37
|
|
|
38
|
+
## 依赖
|
|
39
|
+
|
|
33
40
|
<!-- auto:deps:begin -->
|
|
41
|
+
|
|
34
42
|
### 同库依赖
|
|
35
43
|
|
|
36
44
|
> `teamix-evo ui add command` 时,以下 entry 会被自动连带安装(无需手动 add)。
|
|
37
45
|
|
|
38
|
-
| Entry
|
|
39
|
-
|
|
|
40
|
-
| `cn`
|
|
46
|
+
| Entry | 类型 | 描述 |
|
|
47
|
+
| -------- | --------- | ----------------------------------------------------------------------------------- |
|
|
48
|
+
| `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
|
|
41
49
|
| `dialog` | component | 模态对话框 — Radix Dialog + antd Modal 并集(组合式 Header/Footer/Title/Description) |
|
|
42
50
|
|
|
43
51
|
### npm 依赖
|
|
@@ -47,6 +55,7 @@ _(no props)_
|
|
|
47
55
|
```bash
|
|
48
56
|
pnpm add cmdk@^1.0.0 lucide-react@^0.460.0
|
|
49
57
|
```
|
|
58
|
+
|
|
50
59
|
<!-- auto:deps:end -->
|
|
51
60
|
|
|
52
61
|
> 子组件:`Command`(Root 容器)/ `CommandDialog`(模态版,内部组合 Dialog)/ `CommandInput`(自带搜索图标)/ `CommandList`(可滚动列表)/ `CommandEmpty`(无匹配空态)/ `CommandGroup`(分组,带 heading)/ `CommandItem`(选项,支持 `onSelect`)/ `CommandSeparator` / `CommandShortcut`(右对齐快捷键)。
|
|
@@ -63,8 +72,13 @@ pnpm add cmdk@^1.0.0 lucide-react@^0.460.0
|
|
|
63
72
|
|
|
64
73
|
```tsx
|
|
65
74
|
import {
|
|
66
|
-
Command,
|
|
67
|
-
|
|
75
|
+
Command,
|
|
76
|
+
CommandInput,
|
|
77
|
+
CommandList,
|
|
78
|
+
CommandEmpty,
|
|
79
|
+
CommandGroup,
|
|
80
|
+
CommandItem,
|
|
81
|
+
CommandShortcut,
|
|
68
82
|
} from '@/components/ui/command';
|
|
69
83
|
import { Calendar, Mail, User } from 'lucide-react';
|
|
70
84
|
|
|
@@ -74,14 +88,20 @@ import { Calendar, Mail, User } from 'lucide-react';
|
|
|
74
88
|
<CommandList>
|
|
75
89
|
<CommandEmpty>无结果。</CommandEmpty>
|
|
76
90
|
<CommandGroup heading="建议">
|
|
77
|
-
<CommandItem
|
|
78
|
-
|
|
91
|
+
<CommandItem>
|
|
92
|
+
<Calendar /> 日历 <CommandShortcut>⌘K</CommandShortcut>
|
|
93
|
+
</CommandItem>
|
|
94
|
+
<CommandItem>
|
|
95
|
+
<Mail /> 邮件
|
|
96
|
+
</CommandItem>
|
|
79
97
|
</CommandGroup>
|
|
80
98
|
<CommandGroup heading="设置">
|
|
81
|
-
<CommandItem
|
|
99
|
+
<CommandItem>
|
|
100
|
+
<User /> 个人资料
|
|
101
|
+
</CommandItem>
|
|
82
102
|
</CommandGroup>
|
|
83
103
|
</CommandList>
|
|
84
|
-
</Command
|
|
104
|
+
</Command>;
|
|
85
105
|
|
|
86
106
|
// 模态(全局 ⌘K)
|
|
87
107
|
import { CommandDialog } from '@/components/ui/command';
|
|
@@ -100,5 +120,5 @@ React.useEffect(() => {
|
|
|
100
120
|
<CommandDialog open={open} onOpenChange={setOpen}>
|
|
101
121
|
<CommandInput placeholder="..." />
|
|
102
122
|
<CommandList>...</CommandList>
|
|
103
|
-
</CommandDialog
|
|
123
|
+
</CommandDialog>;
|
|
104
124
|
```
|
|
@@ -19,7 +19,7 @@ const meta: Meta<typeof Command> = {
|
|
|
19
19
|
docs: {
|
|
20
20
|
description: {
|
|
21
21
|
component:
|
|
22
|
-
'命令面板 — 全局搜索 /
|
|
22
|
+
'命令面板 — 全局搜索 / 命令执行(Linear / Raycast / Vercel 风格)。基于 cmdk,提供键盘导航、模糊搜索、分组、空态、快捷键提示;模态版用 CommandDialog 监听 ⌘K 全局触发。',
|
|
23
23
|
},
|
|
24
24
|
},
|
|
25
25
|
},
|
|
@@ -60,7 +60,7 @@ const CommandList = React.forwardRef<
|
|
|
60
60
|
>(({ className, ...props }, ref) => (
|
|
61
61
|
<CommandPrimitive.List
|
|
62
62
|
ref={ref}
|
|
63
|
-
className={cn('max-h-
|
|
63
|
+
className={cn('max-h-listbox overflow-y-auto overflow-x-hidden', className)}
|
|
64
64
|
{...props}
|
|
65
65
|
/>
|
|
66
66
|
));
|
|
@@ -4,10 +4,11 @@ name: ContextMenu
|
|
|
4
4
|
type: component
|
|
5
5
|
category: navigation
|
|
6
6
|
since: 0.1.0
|
|
7
|
-
package:
|
|
7
|
+
package: '@teamix-evo/ui'
|
|
8
|
+
displayName: 右键菜单
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
# ContextMenu
|
|
11
|
+
# ContextMenu 右键菜单
|
|
11
12
|
|
|
12
13
|
右键菜单 — Radix ContextMenu 完整实现。**与 DropdownMenu 形态一致**(Item / CheckboxItem / RadioItem / Sub / Label / Separator / Shortcut),仅触发方式不同(右键 vs click)。
|
|
13
14
|
shadcn 显式版,antd 用 Dropdown 模拟同样可达。
|
|
@@ -29,7 +30,25 @@ shadcn 显式版,antd 用 Dropdown 模拟同样可达。
|
|
|
29
30
|
> 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。下表是 `ContextMenuContent` 的 props。
|
|
30
31
|
|
|
31
32
|
<!-- auto:props:begin -->
|
|
32
|
-
|
|
33
|
+
|
|
34
|
+
#### ContextMenuSubTrigger
|
|
35
|
+
|
|
36
|
+
| 名称 | 类型 | 默认值 | 必填 | 说明 |
|
|
37
|
+
| ------- | --------- | ------- | ---- | ------------------------------------------- |
|
|
38
|
+
| `inset` | `boolean` | `false` | – | 左侧留出 icon 宽度的缩进,对齐同级 icon 项。 |
|
|
39
|
+
|
|
40
|
+
#### ContextMenuItem
|
|
41
|
+
|
|
42
|
+
| 名称 | 类型 | 默认值 | 必填 | 说明 |
|
|
43
|
+
| ------- | --------- | ------- | ---- | ------------------------------------------- |
|
|
44
|
+
| `inset` | `boolean` | `false` | – | 左侧留出 icon 宽度的缩进,对齐同级 icon 项。 |
|
|
45
|
+
|
|
46
|
+
#### ContextMenuLabel
|
|
47
|
+
|
|
48
|
+
| 名称 | 类型 | 默认值 | 必填 | 说明 |
|
|
49
|
+
| ------- | --------- | ------- | ---- | ------------------------------------------- |
|
|
50
|
+
| `inset` | `boolean` | `false` | – | 左侧留出 icon 宽度的缩进,对齐同级 icon 项。 |
|
|
51
|
+
|
|
33
52
|
<!-- auto:props:end -->
|
|
34
53
|
|
|
35
54
|
## 依赖
|
|
@@ -37,13 +56,14 @@ _(组件无 `<Name>Props` interface — props 详见 [`context-menu.tsx`](./cont
|
|
|
37
56
|
> 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
|
|
38
57
|
|
|
39
58
|
<!-- auto:deps:begin -->
|
|
59
|
+
|
|
40
60
|
### 同库依赖
|
|
41
61
|
|
|
42
62
|
> `teamix-evo ui add context-menu` 时,以下 entry 会被自动连带安装(无需手动 add)。
|
|
43
63
|
|
|
44
|
-
| Entry | 类型 | 描述
|
|
45
|
-
|
|
|
46
|
-
| `cn`
|
|
64
|
+
| Entry | 类型 | 描述 |
|
|
65
|
+
| ----- | ---- | -------------------------------------------------- |
|
|
66
|
+
| `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
|
|
47
67
|
|
|
48
68
|
### npm 依赖
|
|
49
69
|
|
|
@@ -52,9 +72,8 @@ _(组件无 `<Name>Props` interface — props 详见 [`context-menu.tsx`](./cont
|
|
|
52
72
|
```bash
|
|
53
73
|
pnpm add @radix-ui/react-context-menu@^2.2.0 lucide-react@^0.460.0
|
|
54
74
|
```
|
|
55
|
-
<!-- auto:deps:end -->
|
|
56
75
|
|
|
57
|
-
|
|
76
|
+
<!-- auto:deps:end -->
|
|
58
77
|
|
|
59
78
|
## AI 生成纪律
|
|
60
79
|
|
|
@@ -67,8 +86,12 @@ pnpm add @radix-ui/react-context-menu@^2.2.0 lucide-react@^0.460.0
|
|
|
67
86
|
|
|
68
87
|
```tsx
|
|
69
88
|
import {
|
|
70
|
-
ContextMenu,
|
|
71
|
-
|
|
89
|
+
ContextMenu,
|
|
90
|
+
ContextMenuTrigger,
|
|
91
|
+
ContextMenuContent,
|
|
92
|
+
ContextMenuItem,
|
|
93
|
+
ContextMenuSeparator,
|
|
94
|
+
ContextMenuShortcut,
|
|
72
95
|
} from '@/components/ui/context-menu';
|
|
73
96
|
|
|
74
97
|
<ContextMenu>
|
|
@@ -86,5 +109,5 @@ import {
|
|
|
86
109
|
删除 <ContextMenuShortcut>⌫</ContextMenuShortcut>
|
|
87
110
|
</ContextMenuItem>
|
|
88
111
|
</ContextMenuContent>
|
|
89
|
-
</ContextMenu
|
|
112
|
+
</ContextMenu>;
|
|
90
113
|
```
|
|
@@ -12,6 +12,14 @@ const meta: Meta<typeof ContextMenuContent> = {
|
|
|
12
12
|
title: '导航 · Navigation/ContextMenu',
|
|
13
13
|
component: ContextMenuContent,
|
|
14
14
|
tags: ['autodocs'],
|
|
15
|
+
parameters: {
|
|
16
|
+
docs: {
|
|
17
|
+
description: {
|
|
18
|
+
component:
|
|
19
|
+
'右键菜单 — 右键触发的操作菜单,与 DropdownMenu 形态一致(Item / CheckboxItem / RadioItem / Sub),仅触发方式不同。Radix ContextMenu 实现,shadcn 显式版,antd 用 Dropdown 模拟同样可达。',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
15
23
|
};
|
|
16
24
|
|
|
17
25
|
export default meta;
|
|
@@ -39,7 +39,7 @@ const ContextMenuSubContent = React.forwardRef<
|
|
|
39
39
|
<ContextMenuPrimitive.SubContent
|
|
40
40
|
ref={ref}
|
|
41
41
|
className={cn(
|
|
42
|
-
'z-50 min-w-
|
|
42
|
+
'z-50 min-w-menu overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',
|
|
43
43
|
className,
|
|
44
44
|
)}
|
|
45
45
|
{...props}
|
|
@@ -55,7 +55,7 @@ const ContextMenuContent = React.forwardRef<
|
|
|
55
55
|
<ContextMenuPrimitive.Content
|
|
56
56
|
ref={ref}
|
|
57
57
|
className={cn(
|
|
58
|
-
'z-50 min-w-
|
|
58
|
+
'z-50 min-w-menu overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',
|
|
59
59
|
className,
|
|
60
60
|
)}
|
|
61
61
|
{...props}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: data-table
|
|
3
3
|
name: DataTable
|
|
4
|
+
displayName: 数据表格
|
|
4
5
|
type: component
|
|
5
6
|
category: data-display
|
|
6
7
|
since: 0.1.0
|
|
7
|
-
package:
|
|
8
|
+
package: '@teamix-evo/ui'
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
# DataTable
|
|
11
|
+
# DataTable 数据表格
|
|
11
12
|
|
|
12
13
|
数据表 — 基于 [`@tanstack/react-table`](https://tanstack.com/table) + 基础 `Table` primitives + `SimplePagination`。
|
|
13
14
|
**等价 antd `Table` 的核心交互合集**:`sorter` + `filter` + `pagination` + `rowSelection`,声明式 `columns + data` 即可。
|
|
@@ -29,16 +30,18 @@ package: "@teamix-evo/ui"
|
|
|
29
30
|
> 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。
|
|
30
31
|
|
|
31
32
|
<!-- auto:props:begin -->
|
|
32
|
-
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
37
|
-
| `
|
|
38
|
-
| `
|
|
39
|
-
| `
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
33
|
+
|
|
34
|
+
| 名称 | 类型 | 默认值 | 必填 | 说明 |
|
|
35
|
+
| ---------------------- | --------------------------------------------------------- | ------ | ---- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
36
|
+
| `columns` | `ColumnDef<TData, TValue>[]` | – | ✓ | 列定义(TanStack ColumnDef)。 |
|
|
37
|
+
| `data` | `TData[]` | – | ✓ | 行数据。 |
|
|
38
|
+
| `pagination` | `boolean \| { pageSize?: number; siblingCount?: number }` | `true` | – | 是否启用分页(antd `pagination` 并集)。 传 `true` 用默认配置;传对象自定义 pageSize / siblingCount。 |
|
|
39
|
+
| `sorting` | `boolean` | `true` | – | 是否启用排序(列定义里的 `enableSorting` 也要打开;默认列已开)。 |
|
|
40
|
+
| `filtering` | `boolean` | `true` | – | 是否启用列过滤(每列 `header` 配 input 单独使用;此 flag 控制 columnFilters 状态)。 |
|
|
41
|
+
| `onRowSelectionChange` | `(selectedRows: TData[]) => void` | – | – | 行选择回调(antd `rowSelection.onChange` 并集)。传入即启用 selection。 Selected rows 的原始 data 通过 `getRowId(row)` 推断,默认是 row.index。 |
|
|
42
|
+
| `emptyText` | `React.ReactNode` | – | – | 空数据时显示的内容。 |
|
|
43
|
+
| `className` | `string` | – | – | 容器 className。 |
|
|
44
|
+
|
|
42
45
|
<!-- auto:props:end -->
|
|
43
46
|
|
|
44
47
|
## 依赖
|
|
@@ -46,14 +49,15 @@ package: "@teamix-evo/ui"
|
|
|
46
49
|
> 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
|
|
47
50
|
|
|
48
51
|
<!-- auto:deps:begin -->
|
|
52
|
+
|
|
49
53
|
### 同库依赖
|
|
50
54
|
|
|
51
55
|
> `teamix-evo ui add data-table` 时,以下 entry 会被自动连带安装(无需手动 add)。
|
|
52
56
|
|
|
53
|
-
| Entry
|
|
54
|
-
|
|
|
55
|
-
| `cn`
|
|
56
|
-
| `table`
|
|
57
|
+
| Entry | 类型 | 描述 |
|
|
58
|
+
| ------------ | --------- | --------------------------------------------------------------------------------------------------------------- |
|
|
59
|
+
| `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
|
|
60
|
+
| `table` | component | 基础表格 — 原生 HTML 元素薄包装(视觉骨架,无交互,交互见 DataTable) |
|
|
57
61
|
| `pagination` | component | 分页 — shadcn primitives + 高阶 SimplePagination(antd 风格 total/pageSize/current/onChange,自动页码窗口 + 折叠) |
|
|
58
62
|
|
|
59
63
|
### npm 依赖
|
|
@@ -63,6 +67,7 @@ package: "@teamix-evo/ui"
|
|
|
63
67
|
```bash
|
|
64
68
|
pnpm add @tanstack/react-table@^8.0.0
|
|
65
69
|
```
|
|
70
|
+
|
|
66
71
|
<!-- auto:deps:end -->
|
|
67
72
|
|
|
68
73
|
> 透传 TanStack Table 的核心能力。需要更精细控制(可控 state、virtualizer、column visibility / resizing 等),请直接用 `useReactTable` + 基础 `Table` primitives 自行拼装。
|
|
@@ -102,8 +107,8 @@ const columns: ColumnDef<User>[] = [
|
|
|
102
107
|
table.getIsAllPageRowsSelected()
|
|
103
108
|
? true
|
|
104
109
|
: table.getIsSomePageRowsSelected()
|
|
105
|
-
|
|
106
|
-
|
|
110
|
+
? 'indeterminate'
|
|
111
|
+
: false
|
|
107
112
|
}
|
|
108
113
|
onCheckedChange={(v) => table.toggleAllPageRowsSelected(!!v)}
|
|
109
114
|
/>
|
|
@@ -145,5 +150,5 @@ const columns: ColumnDef<User>[] = [
|
|
|
145
150
|
data={users}
|
|
146
151
|
pagination={{ pageSize: 10 }}
|
|
147
152
|
onRowSelectionChange={(selected) => console.log(selected)}
|
|
148
|
-
|
|
153
|
+
/>;
|
|
149
154
|
```
|