lingee-ui 0.0.23 → 0.0.25
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/dist/button/index.d.mts +1 -1
- package/dist/button/index.d.ts +1 -1
- package/dist/button/index.js +1 -1
- package/dist/button/index.mjs +1 -1
- package/dist/{chunk-CQVDHCVR.js → chunk-2N2YZIHQ.js} +1 -1
- package/dist/chunk-CATPKTPR.mjs +1 -0
- package/dist/chunk-EBYXYMEL.mjs +1 -0
- package/dist/{chunk-CJUKQFAJ.js → chunk-ENYYJ7ES.js} +1 -1
- package/dist/chunk-MFBMJTYZ.js +2 -0
- package/dist/chunk-QEKT37W5.js +1 -0
- package/dist/chunk-TDJG7ZB6.js +1 -0
- package/dist/{chunk-RTCATZUZ.js → chunk-VKZD4ESR.js} +1 -1
- package/dist/chunk-XVM4RPVQ.mjs +2 -0
- package/dist/chunk-Y463GZ2F.mjs +1 -0
- package/dist/chunk-YURAXA54.mjs +2 -0
- package/dist/chunk-Z4J7SMTI.mjs +1 -0
- package/dist/{index-7pb5YOcq.d.mts → index-89atTLPD.d.mts} +2 -2
- package/dist/{index-7pb5YOcq.d.ts → index-89atTLPD.d.ts} +2 -2
- package/dist/index.css +1 -1
- package/dist/index.d.mts +348 -18
- package/dist/index.d.ts +348 -18
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/input/index.js +1 -1
- package/dist/input/index.mjs +1 -1
- package/dist/tabs/index.css +1 -1
- package/dist/tabs/index.js +1 -1
- package/dist/tabs/index.mjs +1 -1
- package/dist/toast/index.js +1 -1
- package/dist/toast/index.mjs +1 -1
- package/dist/tooltip/index.js +1 -1
- package/dist/tooltip/index.mjs +1 -1
- package/dist/tree/index.css +1 -1
- package/dist/tree/index.js +1 -1
- package/dist/tree/index.mjs +1 -1
- package/package.json +2 -1
- package/skill/AGENTS-SNIPPET.md +5 -2
- package/skill/SKILL.md +6 -3
- package/skill/VERSION.json +3 -3
- package/skill/references/components/cascader.md +97 -0
- package/skill/references/components/color-picker.md +10 -3
- package/skill/references/components/dialog.md +15 -4
- package/skill/references/components/drawer.md +1 -1
- package/skill/references/components/dropdown.md +1 -1
- package/skill/references/components/table.md +2 -1
- package/skill/references/components/timeline.md +75 -0
- package/skill/references/components/tree-select.md +86 -0
- package/skill/references/components/upload.md +2 -1
- package/skill/references/setup.md +2 -2
- package/skill/references/tokens.md +1 -1
- package/dist/chunk-4VICYRWD.mjs +0 -1
- package/dist/chunk-B3BNV2BA.js +0 -1
- package/dist/chunk-CHYJKCAM.mjs +0 -1
- package/dist/chunk-FDENIWMP.mjs +0 -2
- package/dist/chunk-LS4LPBJT.js +0 -2
- package/dist/chunk-PEXFBRR4.mjs +0 -2
- package/dist/chunk-RNRDXECM.js +0 -1
- package/dist/chunk-S5TTZBPX.mjs +0 -1
- package/dist/chunk-T3QXFSH7.mjs +0 -1
package/dist/tree/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkVKZD4ESR_js=require('../chunk-VKZD4ESR.js');require('../chunk-TDJG7ZB6.js'),require('../chunk-QEKT37W5.js'),require('../chunk-MFBMJTYZ.js'),require('../chunk-DCDWEVW4.js');Object.defineProperty(exports,"Tree",{enumerable:true,get:function(){return chunkVKZD4ESR_js.e}});
|
package/dist/tree/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{e as Tree}from'../chunk-
|
|
1
|
+
export{e as Tree}from'../chunk-XVM4RPVQ.mjs';import'../chunk-CATPKTPR.mjs';import'../chunk-Z4J7SMTI.mjs';import'../chunk-YURAXA54.mjs';import'../chunk-DN2VKVCV.mjs';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lingee-ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.25",
|
|
4
4
|
"description": "Kingdee Lingee UI 基础组件库 — React 18+ 轻量级企业 UI 组件",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -116,6 +116,7 @@
|
|
|
116
116
|
"embla-carousel-react": "8.6.0",
|
|
117
117
|
"rc-field-form": "^2.7.1",
|
|
118
118
|
"react-day-picker": "^10.0.1",
|
|
119
|
+
"react-draggable": "4.7.2",
|
|
119
120
|
"sonner": "^2.0.0"
|
|
120
121
|
},
|
|
121
122
|
"devDependencies": {
|
package/skill/AGENTS-SNIPPET.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
> **本文件由 `packages/lingee-ui/scripts/gen-skill.mjs` 自动生成,禁止手工编辑。**
|
|
4
4
|
> 供根 `AGENTS.md` 引用,避免手写清单随组件库迭代脱节。
|
|
5
|
-
> 组件库 `0.0.
|
|
5
|
+
> 组件库 `0.0.25` | 图标库 `1.0.22`
|
|
6
6
|
|
|
7
|
-
## 可用组件(
|
|
7
|
+
## 可用组件(45)
|
|
8
8
|
|
|
9
9
|
| 组件 | 名称 | 说明 |
|
|
10
10
|
|------|------|------|
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
| `Breadcrumb` | 面包屑 | 显示当前页面在系统层级结构中的位置,并提供返回之前层级的导航。 |
|
|
14
14
|
| `Button` | 按钮 | 用于触发一个操作,是用户与系统交互的基础元素。 |
|
|
15
15
|
| `Carousel`、`CarouselItem` | 轮播容器 | 水平轮播容器,用于在一屏内循环展示一组内容,支持自动播放、拖拽切换与圆点指示器。 |
|
|
16
|
+
| `Cascader` | 级联选择 | 逐级展开的多列菜单,用于选择省市区等层级路径。 |
|
|
16
17
|
| `Checkbox`、`CheckboxGroup` | 多选框 | 在一组选项中进行多项选择。 |
|
|
17
18
|
| `ColorPicker` | 颜色选择器 | 用于选择颜色值的交互组件。 |
|
|
18
19
|
| `DatePicker` | 日期选择器 | 用于选择日期的输入组件。 |
|
|
@@ -46,9 +47,11 @@
|
|
|
46
47
|
| `Tag` | 标签 | 用于标记和分类的小型标签元素。 |
|
|
47
48
|
| `Textarea` | 多行文本框 | 多行纯文本编辑控件,支持字数统计和自动高度。 |
|
|
48
49
|
| `TimePicker` | 时间选择器 | 用于选择时间的输入组件。 |
|
|
50
|
+
| `Timeline`、`TimelineCard` | 时间轴 | 纵向展示按时间或流程先后排列的一组节点,可配合卡片承载节点详情。 |
|
|
49
51
|
| `toast` | 全局提示 | 命令式全局提示组件,用于操作反馈。 |
|
|
50
52
|
| `Tooltip` | 文字提示 | 鼠标悬停时显示的简短提示信息。 |
|
|
51
53
|
| `Tree` | 树形控件 | 用于展示层级结构数据,支持勾选、拖拽排序、异步加载与虚拟滚动。 |
|
|
54
|
+
| `TreeSelect` | 树选择 | 下拉面板中以树形结构选择单个节点。 |
|
|
52
55
|
| `Upload` | 上传 | 文件上传组件,支持点击和拖拽上传。 |
|
|
53
56
|
|
|
54
57
|
**清单里没有的组件本库就是没有**,不要臆造组件名。各组件完整 Props 见 `packages/lingee-ui/packages/{目录名}/README.mdx`,或 `skill/references/components/{目录名}.md`。
|
package/skill/SKILL.md
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
name: lingee-ui-usage
|
|
3
3
|
description: 使用 lingee-ui 组件库与 lingee-icon 图标库开发 React 界面。当需要编写含按钮、表单、弹窗、表格、下拉、页签、图标等 UI 的 React/TypeScript 代码,或需要查询 lingee-ui 组件 API、Design Token 语义变量、可用图标名时触发。关键词:lingee-ui、lingee-icon、组件库、图标库、Design Token、语义变量、lg- 前缀、UI 组件。
|
|
4
4
|
metadata:
|
|
5
|
-
lingeeUi: "0.0.
|
|
5
|
+
lingeeUi: "0.0.25"
|
|
6
6
|
lingeeIcon: "1.0.22"
|
|
7
7
|
generatedBy: "gen-skill.mjs"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# lingee-ui 组件库使用技能
|
|
11
11
|
|
|
12
|
-
Kingdee Lingee 设计体系的 React 组件库(
|
|
12
|
+
Kingdee Lingee 设计体系的 React 组件库(45 个组件)与图标库(990 个图标)。
|
|
13
13
|
本技能面向**消费方项目**,只覆盖「如何用」,不含组件库内部开发约定。
|
|
14
14
|
|
|
15
|
-
- 组件库版本 `0.0.
|
|
15
|
+
- 组件库版本 `0.0.25` | 图标库版本 `1.0.22`
|
|
16
16
|
- 组件在线预览:https://kingdee.github.io/lingee-ui/
|
|
17
17
|
- 图标在线预览:https://kingdee.github.io/lingee-icon/
|
|
18
18
|
|
|
@@ -61,6 +61,7 @@ createRoot(el).render(
|
|
|
61
61
|
| `Breadcrumb` | 面包屑 | 显示当前页面在系统层级结构中的位置,并提供返回之前层级的导航。 | `breadcrumb.md` | — |
|
|
62
62
|
| `Button` | 按钮 | 用于触发一个操作,是用户与系统交互的基础元素。 | `button.md` | ✓ |
|
|
63
63
|
| `Carousel`、`CarouselItem` | 轮播容器 | 水平轮播容器,用于在一屏内循环展示一组内容,支持自动播放、拖拽切换与圆点指示器。 | `carousel.md` | — |
|
|
64
|
+
| `Cascader` | 级联选择 | 逐级展开的多列菜单,用于选择省市区等层级路径。 | `cascader.md` | — |
|
|
64
65
|
| `Checkbox`、`CheckboxGroup` | 多选框 | 在一组选项中进行多项选择。 | `checkbox.md` | — |
|
|
65
66
|
| `ColorPicker` | 颜色选择器 | 用于选择颜色值的交互组件。 | `color-picker.md` | — |
|
|
66
67
|
| `DatePicker` | 日期选择器 | 用于选择日期的输入组件。 | `date-picker.md` | — |
|
|
@@ -94,9 +95,11 @@ createRoot(el).render(
|
|
|
94
95
|
| `Tag` | 标签 | 用于标记和分类的小型标签元素。 | `tag.md` | — |
|
|
95
96
|
| `Textarea` | 多行文本框 | 多行纯文本编辑控件,支持字数统计和自动高度。 | `textarea.md` | — |
|
|
96
97
|
| `TimePicker` | 时间选择器 | 用于选择时间的输入组件。 | `time-picker.md` | — |
|
|
98
|
+
| `Timeline`、`TimelineCard` | 时间轴 | 纵向展示按时间或流程先后排列的一组节点,可配合卡片承载节点详情。 | `timeline.md` | — |
|
|
97
99
|
| `toast` | 全局提示 | 命令式全局提示组件,用于操作反馈。 | `toast.md` | ✓ |
|
|
98
100
|
| `Tooltip` | 文字提示 | 鼠标悬停时显示的简短提示信息。 | `tooltip.md` | ✓ |
|
|
99
101
|
| `Tree` | 树形控件 | 用于展示层级结构数据,支持勾选、拖拽排序、异步加载与虚拟滚动。 | `tree.md` | ✓ |
|
|
102
|
+
| `TreeSelect` | 树选择 | 下拉面板中以树形结构选择单个节点。 | `tree-select.md` | — |
|
|
100
103
|
| `Upload` | 上传 | 文件上传组件,支持点击和拖拽上传。 | `upload.md` | — |
|
|
101
104
|
|
|
102
105
|
- 「文档」列对应 `references/components/` 下的文件名,含完整 Props 与示例
|
package/skill/VERSION.json
CHANGED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Cascader 级联选择
|
|
2
|
+
|
|
3
|
+
逐级展开的多列菜单,用于选择省市区等层级路径。
|
|
4
|
+
|
|
5
|
+
- 导入:`import { Cascader } from "lingee-ui";`
|
|
6
|
+
- 可用类型:`CascaderProps`, `CascaderOption`, `CascaderSize`, `CascaderDropdownProps`
|
|
7
|
+
|
|
8
|
+
## 最小示例
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import { useState } from "react";
|
|
12
|
+
import { Cascader } from "lingee-ui";
|
|
13
|
+
import type { CascaderOption } from "lingee-ui";
|
|
14
|
+
|
|
15
|
+
const options: CascaderOption[] = [
|
|
16
|
+
{
|
|
17
|
+
value: "a",
|
|
18
|
+
label: "Level A",
|
|
19
|
+
children: [
|
|
20
|
+
{
|
|
21
|
+
value: "a-1",
|
|
22
|
+
label: "Level A-1",
|
|
23
|
+
children: [
|
|
24
|
+
{ value: "a-1-1", label: "Level A-1-1" },
|
|
25
|
+
{ value: "a-1-2", label: "Level A-1-2" },
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
{ value: "a-2", label: "Level A-2" },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
value: "b",
|
|
33
|
+
label: "Level B",
|
|
34
|
+
children: [{ value: "b-1", label: "Level B-1" }],
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
export default function BasicDemo() {
|
|
39
|
+
const [value, setValue] = useState<string[]>([]);
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<div style={{ width: 280 }}>
|
|
43
|
+
<Cascader
|
|
44
|
+
options={options}
|
|
45
|
+
value={value}
|
|
46
|
+
onChange={setValue}
|
|
47
|
+
placeholder="Select a path"
|
|
48
|
+
allowClear
|
|
49
|
+
/>
|
|
50
|
+
</div>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## API
|
|
56
|
+
|
|
57
|
+
### Cascader
|
|
58
|
+
|
|
59
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
60
|
+
|------|------|------|--------|
|
|
61
|
+
| `options` | 级联数据 | `CascaderOption[]` | - |
|
|
62
|
+
| `value` | 当前选中路径(受控),显式传 `undefined` 也视为受控的空值 | `string[]` | - |
|
|
63
|
+
| `defaultValue` | 默认选中路径(非受控) | `string[]` | - |
|
|
64
|
+
| `onChange` | 选中叶子或清空时回调,清空时路径为空数组 | `(value: string[], selectedOptions: CascaderOption[]) => void` | - |
|
|
65
|
+
| `placeholder` | 占位文本 | `string` | - |
|
|
66
|
+
| `disabled` | 是否禁用 | `boolean` | `false` |
|
|
67
|
+
| `error` | 是否错误态 | `boolean` | `false` |
|
|
68
|
+
| `allowClear` | 是否可清空 | `boolean` | `false` |
|
|
69
|
+
| `size` | 尺寸 | `"sm" \| "md" \| "lg"` | `"md"` |
|
|
70
|
+
| `separator` | 触发器中各级文本的分隔符 | `string` | `" / "` |
|
|
71
|
+
| `notFoundContent` | 无数据时面板中展示的内容 | `ReactNode` | 「暂无数据」缺省态 |
|
|
72
|
+
| `dropdown` | 下拉面板配置,字段见 CascaderDropdownProps | `CascaderDropdownProps` | - |
|
|
73
|
+
| `className` | 自定义类名 | `string` | - |
|
|
74
|
+
| `style` | 自定义样式 | `CSSProperties` | - |
|
|
75
|
+
|
|
76
|
+
### CascaderOption
|
|
77
|
+
|
|
78
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
79
|
+
|------|------|------|--------|
|
|
80
|
+
| `value` | 选项值,同一层级内需唯一 | `string` | - |
|
|
81
|
+
| `label` | 选项文本,选中后按层级拼接显示在触发器中 | `ReactNode` | - |
|
|
82
|
+
| `children` | 下一级选项 | `CascaderOption[]` | - |
|
|
83
|
+
| `disabled` | 是否禁用 | `boolean` | `false` |
|
|
84
|
+
|
|
85
|
+
### CascaderDropdownProps
|
|
86
|
+
|
|
87
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
88
|
+
|------|------|------|--------|
|
|
89
|
+
| `maxHeight` | 每列的最大高度(px),超出时该列滚动;同时不超出视口可用高度 | `number` | `346` |
|
|
90
|
+
| `className` | 下拉浮层的自定义类名 | `string` | - |
|
|
91
|
+
| `container` | Portal 挂载容器,传 `null` 时就地渲染;长文本的悬浮提示挂在同一容器 | `HTMLElement \| null` | `document.body` |
|
|
92
|
+
|
|
93
|
+
### CSS 变量
|
|
94
|
+
|
|
95
|
+
| 变量 | 说明 | 默认值 |
|
|
96
|
+
|------|------|--------|
|
|
97
|
+
| `--lg-cascader-menu-max-width` | 每列的最大宽度,超出的文字省略 | `200px` |
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
用于选择颜色值的交互组件。
|
|
4
4
|
|
|
5
5
|
- 导入:`import { ColorPicker } from "lingee-ui";`
|
|
6
|
-
- 可用类型:`ColorPickerProps`, `ColorPickerSize`
|
|
6
|
+
- 可用类型:`ColorPickerProps`, `ColorPickerRgba`, `ColorPickerSize`
|
|
7
7
|
|
|
8
8
|
## 最小示例
|
|
9
9
|
|
|
@@ -31,7 +31,8 @@ export default function BasicDemo() {
|
|
|
31
31
|
|------|------|------|--------|
|
|
32
32
|
| `value` | 当前颜色值(受控) | `string` | - |
|
|
33
33
|
| `defaultValue` | 默认颜色值(非受控) | `string` | - |
|
|
34
|
-
| `onChange` |
|
|
34
|
+
| `onChange` | 颜色变化回调,`color` 为 hex(含透明度时为 8 位) | `(color: string, rgba: ColorPickerRgba) => void` | - |
|
|
35
|
+
| `onChangeComplete` | 拖拽结束回调,适合只在最终色值上触发请求的场景 | `(color: string, rgba: ColorPickerRgba) => void` | - |
|
|
35
36
|
| `disabled` | 是否禁用 | `boolean` | `false` |
|
|
36
37
|
| `disabledAlpha` | 是否禁用透明度 | `boolean` | `false` |
|
|
37
38
|
| `size` | 尺寸 | `"sm" \| "md" \| "lg"` | `"md"` |
|
|
@@ -39,4 +40,10 @@ export default function BasicDemo() {
|
|
|
39
40
|
| `placement` | 面板弹出方向 | `"top" \| "bottom" \| "left" \| "right"` | `"bottom"` |
|
|
40
41
|
| `panelExtra` | 面板额外内容(如预设色板) | `ReactNode` | - |
|
|
41
42
|
| `placeholder` | 占位文本 | `string` | - |
|
|
42
|
-
| `
|
|
43
|
+
| `children` | 自定义触发器,需为能接收 ref 与点击事件的单个元素;传入后 `size` / `error` / `placeholder` / `className` / `style` 不再作用于触发器 | `ReactElement` | - |
|
|
44
|
+
| `showInput` | 面板内显示十六进制与透明度输入框 | `boolean` | `false` |
|
|
45
|
+
| `getPopupContainer` | 浮层挂载容器,打开面板时求值;全屏元素内使用时需返回该元素,否则面板不可见 | `() => HTMLElement` | `document.body` |
|
|
46
|
+
| `className` | 默认触发器的自定义类名 | `string` | - |
|
|
47
|
+
| `style` | 默认触发器的自定义样式 | `CSSProperties` | - |
|
|
48
|
+
|
|
49
|
+
`ColorPickerRgba` 为 `{ r: number; g: number; b: number; a: number }`,`r` / `g` / `b` 取 0–255,`a` 取 0–1。
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
模态对话框,用于需要用户确认或填写信息的场景。支持声明式和命令式两种调用方式。
|
|
4
4
|
|
|
5
5
|
- 导入:`import { Dialog, HostModalPage, isInHostModal, getHostModalParams, notifyHostModalReady, closeHostModal } from "lingee-ui";`
|
|
6
|
-
- 可用类型:`DialogProps`, `DialogConfirmOptions`, `DialogHostModal`, `HostModalPageProps`
|
|
6
|
+
- 可用类型:`DialogProps`, `DialogConfirmOptions`, `DialogHostModal`, `DialogHostWindow`, `HostModalPageProps`
|
|
7
7
|
|
|
8
8
|
## 最小示例
|
|
9
9
|
|
|
@@ -64,6 +64,7 @@ export default function BasicDemo() {
|
|
|
64
64
|
| `modal` | 是否为模态,`true` 时点击遮罩**不**关闭 | `boolean` | `false` |
|
|
65
65
|
| `mask` | 是否显示遮罩层 | `boolean` | `true` |
|
|
66
66
|
| `maskClassName` | 遮罩层自定义类名,仅 `mask=true` 时生效 | `string` | - |
|
|
67
|
+
| `draggable` | 是否可拖动面板。拖拽区默认是标题栏,没有标题栏时给 children 里的元素加 `data-lg-dialog-drag-handle`,详见「可拖拽」 | `boolean` | `false` |
|
|
67
68
|
| `destroyOnHidden` | 关闭后是否销毁子节点 | `boolean` | `true` |
|
|
68
69
|
| `zIndex` | 遮罩层层级,内容层自动加 1;优先于 Provider 基线 | `number` | `LingeeProvider.dialog.zIndex` |
|
|
69
70
|
| `hostModal` | 宿主承载配置,见下方说明 | `DialogHostModal` | - |
|
|
@@ -74,8 +75,8 @@ export default function BasicDemo() {
|
|
|
74
75
|
|
|
75
76
|
### Dialog.confirm(options)
|
|
76
77
|
|
|
77
|
-
类型为 `DialogConfirmOptions`,**继承 `Omit<DialogProps, "open" | "onOpenChange" | "children">`** ——
|
|
78
|
-
上面 Dialog
|
|
78
|
+
类型为 `DialogConfirmOptions`,**继承 `Omit<DialogProps, "open" | "onOpenChange" | "children" | "draggable">`** ——
|
|
79
|
+
上面 Dialog 表里除这四项外的属性都可用(`width` / `footer` / `okProps` / `modal` / `hostModal` 等)。
|
|
79
80
|
以下是 confirm 独有或默认值不同的字段:
|
|
80
81
|
|
|
81
82
|
| 属性 | 说明 | 类型 | 默认值 |
|
|
@@ -128,7 +129,17 @@ export default function BasicDemo() {
|
|
|
128
129
|
|
|
129
130
|
按钮在承载页内为 `fixed` 定位 —— 承载页容器自身可滚动,`absolute` 会让按钮随内容滚出视口,而承载页的视口就是弹窗面板,`fixed` 与「面板右上角」等价。
|
|
130
131
|
|
|
131
|
-
|
|
132
|
+
### DialogHostWindow
|
|
133
|
+
|
|
134
|
+
`hostModal.window` 的类型,用法见「客户端独立窗口」。
|
|
135
|
+
|
|
136
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
137
|
+
|------|------|------|--------|
|
|
138
|
+
| `position` | 首次出现的位置,相对客户端主窗口 | `"center" \| "top-left" \| "top-right" \| "bottom-left" \| "bottom-right"` | `"center"` |
|
|
139
|
+
| `alwaysOnTop` | 是否置顶在其它应用之上 | `boolean` | `false` |
|
|
140
|
+
| `resizable` | 是否可调整窗口大小 | `boolean` | `false` |
|
|
141
|
+
|
|
142
|
+
传了 `window` 只认独立窗口:客户端没有该能力(旧版客户端、浏览器、被 iframe 嵌入)时本地渲染 `children`,不退回居中带遮罩的宿主弹窗。窗口宽度取 `width`(须为数字),内容区高度取 `contentHeight`,未传时取面板总高减去 68px;窗口自带标题条与关闭入口,`headless` 不生效。
|
|
132
143
|
|
|
133
144
|
### 面板高度与视口
|
|
134
145
|
|
|
@@ -40,6 +40,6 @@ export default function BasicDemo() {
|
|
|
40
40
|
| `modal` | 是否为模态模式 | `boolean` | `false` |
|
|
41
41
|
| `footer` | 底部操作区 | `ReactNode` | - |
|
|
42
42
|
| `extra` | 标题栏右侧额外内容 | `ReactNode` | - |
|
|
43
|
-
| `destroyOnHidden` |
|
|
43
|
+
| `destroyOnHidden` | 关闭后是否销毁子节点。`false` 时首次打开后子节点常驻,关闭只隐藏、重开复用原实例(适合承载需保留会话的 iframe);隐藏期间面板仍挂着 Esc 监听,处于最上层时 Esc 事件会被标记 `defaultPrevented` | `boolean` | `true` |
|
|
44
44
|
| `zIndex` | 自定义 z-index,优先于 Provider 基线 | `number` | - |
|
|
45
45
|
| `children` | 内容区域 | `ReactNode` | - |
|
|
@@ -35,7 +35,7 @@ export default function BasicDemo() {
|
|
|
35
35
|
| `open` | 受控打开状态 | `boolean` | - |
|
|
36
36
|
| `defaultOpen` | 非受控默认打开状态 | `boolean` | `false` |
|
|
37
37
|
| `onOpenChange` | 打开状态变化回调 | `(open: boolean) => void` | - |
|
|
38
|
-
| `modal` | 是否为模态弹出 | `boolean` | `
|
|
38
|
+
| `modal` | 是否为模态弹出 | `boolean` | `false` |
|
|
39
39
|
| `disabled` | 是否禁用 | `boolean` | `false` |
|
|
40
40
|
| `selectedKeys` | 选中项 key 数组(显示勾选) | `string[]` | - |
|
|
41
41
|
| `loading` | 加载中,面板显示加载占位 | `boolean` | `false` |
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
用于展示行列数据的表格组件,支持排序、行选择、加载态等。
|
|
4
4
|
|
|
5
5
|
- 导入:`import { Table } from "lingee-ui";`
|
|
6
|
-
- 可用类型:`TableProps`, `TableColumnType`, `TableRowSelection`, `TableSize`, `TableSorterState`, `TableStatusType`, `TableStatusText`
|
|
6
|
+
- 可用类型:`TableProps`, `TableColumnType`, `TableRowSelection`, `TableSize`, `TableSorterState`, `TableStatusType`, `TableStatusText`, `TableComponents`
|
|
7
7
|
|
|
8
8
|
## 最小示例
|
|
9
9
|
|
|
@@ -44,6 +44,7 @@ export default function BasicDemo() {
|
|
|
44
44
|
| `bordered` | 是否显示边框 | `boolean` | `false` |
|
|
45
45
|
| `striped` | 是否显示斑马纹 | `boolean` | `false` |
|
|
46
46
|
| `hoverable` | 是否行悬浮高亮 | `boolean` | `true` |
|
|
47
|
+
| `components` | 替换表格内部元素的渲染组件,需保持引用稳定 | `TableComponents` | - |
|
|
47
48
|
| `scroll` | 滚动设置 | `{ x?: number, y?: number }` | - |
|
|
48
49
|
| `showHeader` | 是否显示表头 | `boolean` | `true` |
|
|
49
50
|
| `title` | 表格标题 | `ReactNode \| (() => ReactNode)` | - |
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Timeline 时间轴
|
|
2
|
+
|
|
3
|
+
纵向展示按时间或流程先后排列的一组节点,可配合卡片承载节点详情。
|
|
4
|
+
|
|
5
|
+
- 导入:`import { Timeline, TimelineCard } from "lingee-ui";`
|
|
6
|
+
- 可用类型:`TimelineProps`, `TimelineItem`, `TimelineStatus`, `TimelineCardProps`, `TimelineCardStatus`
|
|
7
|
+
|
|
8
|
+
## 最小示例
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import { Timeline } from "lingee-ui";
|
|
12
|
+
|
|
13
|
+
const items = [
|
|
14
|
+
{ key: "1", time: "09:00", content: "Item 1" },
|
|
15
|
+
{ key: "2", time: "11:00", content: "Item 2" },
|
|
16
|
+
{ key: "3", time: "12:40", content: "Item 3" },
|
|
17
|
+
{ key: "4", time: "14:00", content: "Item 4" },
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
export default function BasicDemo() {
|
|
21
|
+
return <Timeline items={items} />;
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## API
|
|
26
|
+
|
|
27
|
+
### Timeline
|
|
28
|
+
|
|
29
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
30
|
+
|------|------|------|--------|
|
|
31
|
+
| `items` | 节点数据 | `TimelineItem[]` | - |
|
|
32
|
+
| `className` | 自定义类名 | `string` | - |
|
|
33
|
+
| `style` | 自定义样式 | `CSSProperties` | - |
|
|
34
|
+
|
|
35
|
+
### TimelineItem
|
|
36
|
+
|
|
37
|
+
继承 `HTMLAttributes<HTMLLIElement>`(`content`、`color` 除外)。
|
|
38
|
+
|
|
39
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
40
|
+
|------|------|------|--------|
|
|
41
|
+
| `key` | 唯一标识,缺省用索引 | `Key` | - |
|
|
42
|
+
| `time` | 节点左侧的时间或标签,右对齐 | `ReactNode` | - |
|
|
43
|
+
| `content` | 节点内容 | `ReactNode` | - |
|
|
44
|
+
| `status` | 节点状态,决定圆点颜色 | `"default" \| "processing" \| "completed" \| "unfinished" \| "disabled"` | `"default"` |
|
|
45
|
+
| `color` | 自定义圆点颜色,优先于 `status` | `string` | - |
|
|
46
|
+
| `filled` | 是否实心圆点 | `boolean` | `false` |
|
|
47
|
+
|
|
48
|
+
### TimelineCard
|
|
49
|
+
|
|
50
|
+
即 `Timeline.Card`,继承 `HTMLAttributes<HTMLDivElement>`(`title` 除外)。
|
|
51
|
+
|
|
52
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
53
|
+
|------|------|------|--------|
|
|
54
|
+
| `time` | 卡片顶部的时间段 | `ReactNode` | - |
|
|
55
|
+
| `extra` | 右上角内容,有 `time` 时与它同行,否则放在标题行末尾 | `ReactNode` | - |
|
|
56
|
+
| `title` | 标题 | `ReactNode` | - |
|
|
57
|
+
| `titleLines` | 标题最多显示的行数,超出省略 | `number` | `1` |
|
|
58
|
+
| `tag` | 紧跟标题的标签 | `ReactNode` | - |
|
|
59
|
+
| `description` | 描述 | `ReactNode` | - |
|
|
60
|
+
| `descriptionLines` | 描述最多显示的行数,超出省略 | `number` | `2` |
|
|
61
|
+
| `footer` | 底部内容,如操作或附加信息 | `ReactNode` | - |
|
|
62
|
+
| `status` | 卡片状态 | `"default" \| "processing" \| "completed"` | `"default"` |
|
|
63
|
+
| `hoverable` | 悬停时高亮背景 | `boolean` | `false` |
|
|
64
|
+
|
|
65
|
+
### CSS 变量
|
|
66
|
+
|
|
67
|
+
| 变量 | 说明 | 默认值 |
|
|
68
|
+
|------|------|--------|
|
|
69
|
+
| `--_timeline-dot-size` | 圆点直径 | `10px` |
|
|
70
|
+
| `--_timeline-rail-color` | 连接线颜色 | `var(--lg-timeline-border-color-line)` |
|
|
71
|
+
| `--_timeline-tail-width` | 连接线宽度 | `2px` |
|
|
72
|
+
| `--_timeline-line-height` | 时间与内容首行的行高,圆点按它垂直居中 | `22px` |
|
|
73
|
+
| `--_timeline-head-offset` | 内容首行距节点顶部的距离,需带单位;内容是卡片时自动取 `16px` | `0px` |
|
|
74
|
+
| `--_timeline-time-width` | 时间列宽度 | `72px` |
|
|
75
|
+
| `--_timeline-gap` | 节点间距 | `var(--lg-spacing-small)` |
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# TreeSelect 树选择
|
|
2
|
+
|
|
3
|
+
下拉面板中以树形结构选择单个节点。
|
|
4
|
+
|
|
5
|
+
- 导入:`import { TreeSelect } from "lingee-ui";`
|
|
6
|
+
- 可用类型:`TreeSelectProps`, `TreeSelectNode`, `TreeSelectSize`, `TreeSelectDropdownProps`
|
|
7
|
+
|
|
8
|
+
## 最小示例
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import { useState } from "react";
|
|
12
|
+
import { TreeSelect } from "lingee-ui";
|
|
13
|
+
import type { TreeSelectNode } from "lingee-ui";
|
|
14
|
+
|
|
15
|
+
const treeData: TreeSelectNode[] = [
|
|
16
|
+
{
|
|
17
|
+
value: "folder-1",
|
|
18
|
+
title: "Folder 1",
|
|
19
|
+
children: [
|
|
20
|
+
{ value: "folder-1-1", title: "Folder 1-1" },
|
|
21
|
+
{ value: "folder-1-2", title: "Folder 1-2" },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
value: "folder-2",
|
|
26
|
+
title: "Folder 2",
|
|
27
|
+
children: [{ value: "folder-2-1", title: "Folder 2-1" }],
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
export default function BasicDemo() {
|
|
32
|
+
const [value, setValue] = useState<string>();
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<div style={{ width: 280 }}>
|
|
36
|
+
<TreeSelect
|
|
37
|
+
treeData={treeData}
|
|
38
|
+
value={value}
|
|
39
|
+
onChange={setValue}
|
|
40
|
+
placeholder="Select a folder"
|
|
41
|
+
defaultExpandAll
|
|
42
|
+
allowClear
|
|
43
|
+
/>
|
|
44
|
+
</div>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## API
|
|
50
|
+
|
|
51
|
+
### TreeSelect
|
|
52
|
+
|
|
53
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
54
|
+
|------|------|------|--------|
|
|
55
|
+
| `treeData` | 树形数据 | `TreeSelectNode[]` | - |
|
|
56
|
+
| `value` | 当前选中值(受控),显式传 `undefined` 也视为受控的空值 | `string` | - |
|
|
57
|
+
| `defaultValue` | 默认选中值(非受控) | `string` | - |
|
|
58
|
+
| `onChange` | 选中或清空时回调,清空时两个参数均为 `undefined` | `(value: string \| undefined, node: TreeSelectNode \| undefined) => void` | - |
|
|
59
|
+
| `placeholder` | 占位文本 | `string` | - |
|
|
60
|
+
| `disabled` | 是否禁用 | `boolean` | `false` |
|
|
61
|
+
| `error` | 是否错误态 | `boolean` | `false` |
|
|
62
|
+
| `allowClear` | 是否可清空 | `boolean` | `false` |
|
|
63
|
+
| `size` | 尺寸 | `"sm" \| "md" \| "lg"` | `"md"` |
|
|
64
|
+
| `defaultExpandAll` | 是否默认展开全部节点 | `boolean` | `false` |
|
|
65
|
+
| `notFoundContent` | 无数据时面板中展示的内容 | `ReactNode` | 「暂无数据」缺省态 |
|
|
66
|
+
| `dropdown` | 下拉面板配置,字段见 TreeSelectDropdownProps | `TreeSelectDropdownProps` | - |
|
|
67
|
+
| `className` | 自定义类名 | `string` | - |
|
|
68
|
+
| `style` | 自定义样式 | `CSSProperties` | - |
|
|
69
|
+
|
|
70
|
+
### TreeSelectNode
|
|
71
|
+
|
|
72
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
73
|
+
|------|------|------|--------|
|
|
74
|
+
| `value` | 节点值,同一棵树内需唯一 | `string` | - |
|
|
75
|
+
| `title` | 节点标题,选中后同时作为触发器中的文本 | `ReactNode` | - |
|
|
76
|
+
| `children` | 子节点 | `TreeSelectNode[]` | - |
|
|
77
|
+
| `disabled` | 是否禁用 | `boolean` | `false` |
|
|
78
|
+
|
|
79
|
+
### TreeSelectDropdownProps
|
|
80
|
+
|
|
81
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
82
|
+
|------|------|------|--------|
|
|
83
|
+
| `maxHeight` | 面板最大高度(px),超出时滚动 | `number` | `346` |
|
|
84
|
+
| `width` | 面板宽度(px),`"auto"` 时按内容自适应 | `number \| "auto"` | 与触发器同宽 |
|
|
85
|
+
| `className` | 下拉浮层的自定义类名 | `string` | - |
|
|
86
|
+
| `container` | Portal 挂载容器,传 `null` 时就地渲染 | `HTMLElement \| null` | `document.body` |
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
文件上传组件,支持点击和拖拽上传。
|
|
4
4
|
|
|
5
5
|
- 导入:`import { Upload } from "lingee-ui";`
|
|
6
|
-
- 可用类型:`UploadProps`, `UploadFile`, `UploadFileStatus`, `CustomRequestOptions`, `CustomRequestReturn`, `RejectReason`, `FileItemActions`
|
|
6
|
+
- 可用类型:`UploadProps`, `UploadFile`, `UploadFileStatus`, `CustomRequestOptions`, `CustomRequestReturn`, `RejectReason`, `FileItemActions`, `UploadListType`
|
|
7
7
|
|
|
8
8
|
## 最小示例
|
|
9
9
|
|
|
@@ -33,6 +33,7 @@ export default function BasicDemo() {
|
|
|
33
33
|
| `maxSize` | 单文件最大大小(字节) | `number` | - |
|
|
34
34
|
| `fileList` | 文件列表(受控) | `UploadFile[]` | - |
|
|
35
35
|
| `showFileList` | 是否显示文件列表 | `boolean` | `true` |
|
|
36
|
+
| `listType` | 文件列表形态,`picture-card` 为图片缩略卡片 | `"text" \| "picture-card"` | `"text"` |
|
|
36
37
|
| `onChange` | 文件列表变化回调 | `(fileList: UploadFile[]) => void` | - |
|
|
37
38
|
| `onReject` | 校验未通过回调 | `(files: File[], reason: "size" \| "type" \| "count") => void` | - |
|
|
38
39
|
| `customRequest` | 自定义上传请求。与 `action` 同时传入时优先 | `(options: CustomRequestOptions) => { abort }` | - |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 接入指南
|
|
2
2
|
|
|
3
|
-
组件库 `0.0.
|
|
3
|
+
组件库 `0.0.25` | 图标库 `1.0.22`
|
|
4
4
|
|
|
5
5
|
## 安装
|
|
6
6
|
|
|
@@ -44,7 +44,7 @@ createRoot(document.getElementById("root")!).render(
|
|
|
44
44
|
|
|
45
45
|
未包 Provider 时 `toast.*` 不会显示,组件内置文案也无法本地化。
|
|
46
46
|
|
|
47
|
-
`locale` 接收**语言包对象**(不是 `"zh-CN"` 这样的字符串),默认中文,切换英文需显式传入 `enUS
|
|
47
|
+
`locale` 接收**语言包对象**(不是 `"zh-CN"` 这样的字符串),默认中文,切换英文需显式传入 `enUS`(另有 `zhTW` / `msMY` / `idID` / `thTH`):
|
|
48
48
|
|
|
49
49
|
```tsx
|
|
50
50
|
import { LingeeProvider, enUS } from "lingee-ui";
|
package/dist/chunk-4VICYRWD.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {j}from'./chunk-S5TTZBPX.mjs';import {a}from'./chunk-DN2VKVCV.mjs';import J,{useState,useRef,useCallback,useEffect}from'react';import {XCircleFill}from'lingee-icon';import {jsxs,jsx}from'react/jsx-runtime';var Y=J.forwardRef(({className:p,style:o,size:a$1="md",shape:T="default",prefix:d,suffix:g,allowClear:C=false,error:L=false,disabled:r=false,collapsed:t=false,autoFocusOnExpand:s=true,value:c,defaultValue:H,onChange:_,onFocus:f,onBlur:v,onPressEnter:b,onKeyDown:h,onClick:m,...S},N)=>{let x=j("Input"),[D,y]=useState(false),[F,w]=useState(H?.toString()??""),e=useRef(null),P=Z(N,e),u=c!==void 0,k=u?c?.toString()??"":F,V=useCallback(n=>{u||w(n.target.value),_?.(n);},[u,_]),j$1=useCallback(()=>{if(r)return;u||w("");let n=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value")?.set;if(e.current&&n){n.call(e.current,"");let G=new Event("input",{bubbles:true});e.current.dispatchEvent(G);}e.current?.focus();},[r,u]),B=useCallback(n=>{y(true),f?.(n);},[f]),K=useCallback(n=>{y(false),v?.(n);},[v]),O=useCallback(n=>{n.key==="Enter"&&b?.(n),h?.(n);},[b,h]),W=C&&k.length>0&&!r&&!t,X=!!g&&!(t&&d),I=useRef(t);useEffect(()=>{let n=I.current;I.current=t,n!==t&&(t?e.current===document.activeElement&&e.current?.blur():!r&&s&&e.current?.focus());},[t,r,s]);let $=useCallback(n=>{t||e.current?.focus(),m?.(n);},[t,m]),q=a("lg-input",`lg-input--${a$1}`,T==="round"&&"lg-input--round",D&&!t&&"lg-input--focused",L&&"lg-input--error",r&&"lg-input--disabled",t&&"lg-input--collapsed",p),A=t?{...o,width:void 0,minWidth:void 0,maxWidth:void 0}:o;return jsxs("div",{className:q,style:A,onClick:$,role:t?"button":void 0,tabIndex:t&&!r?0:void 0,"aria-expanded":t?false:void 0,"aria-label":t?x.expand:void 0,children:[d&&jsx("span",{className:"lg-input__prefix",children:d}),jsx("input",{ref:P,className:"lg-input__inner",disabled:r,value:k,onChange:V,onFocus:B,onBlur:K,onKeyDown:O,tabIndex:t?-1:void 0,"aria-hidden":t||void 0,...S}),W&&jsx("span",{className:"lg-input__clear",onMouseDown:n=>n.preventDefault(),onClick:j$1,role:"button","aria-label":x.clear,children:jsx(XCircleFill,{})}),X&&jsx("span",{className:"lg-input__suffix",children:g})]})});Y.displayName="Input";function Z(...p){return useCallback(o=>{p.forEach(a=>{a&&(typeof a=="function"?a(o):a.current=o);});},p)}export{Y as a};
|
package/dist/chunk-B3BNV2BA.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkLS4LPBJT_js=require('./chunk-LS4LPBJT.js'),chunkDCDWEVW4_js=require('./chunk-DCDWEVW4.js'),L=require('react'),classVarianceAuthority=require('class-variance-authority'),lingeeIcon=require('lingee-icon'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var L__default=/*#__PURE__*/_interopDefault(L);var C=classVarianceAuthority.cva("lg-button",{variants:{variant:{primary:"lg-button--primary",filled:"lg-button--filled",default:"lg-button--default",text:"lg-button--text","link-plain":"lg-button--link-plain",link:"lg-button--link"},size:{sm:"lg-button--sm",md:"lg-button--md",std:"lg-button--std",lg:"lg-button--lg"},shape:{default:"",round:"lg-button--round",circle:"lg-button--circle"}},defaultVariants:{variant:"default",size:"md",shape:"default"}}),M=L__default.default.forwardRef(({className:c,variant:s="default",size:p="md",shape:v="default",danger:f=false,ghost:m=false,icon:r,iconPosition:a="start",disabled:k=false,loading:o=false,tooltip:n,htmlType:h="button",children:g,onClick:y,"aria-label":_,...x},w)=>{let l=k||o,z=d=>{if(l){d.preventDefault();return}y?.(d);},B=!!(r||o)&&!g,N=chunkDCDWEVW4_js.a(C({variant:s,size:p,shape:v}),f&&"lg-button--danger",m&&"lg-button--ghost",l&&"lg-button--disabled",o&&"lg-button--loading",B&&"lg-button--icon-only",c),e=o?jsxRuntime.jsx("span",{className:"lg-button__icon",children:jsxRuntime.jsx(lingeeIcon.LoaderCircle,{spin:true})}):r?jsxRuntime.jsx("span",{className:"lg-button__icon",children:r}):null,b=jsxRuntime.jsxs("button",{ref:w,type:h,className:N,disabled:l,"aria-disabled":l||void 0,"aria-busy":o||void 0,"aria-label":_||n||void 0,onClick:z,...x,children:[a==="start"&&e,g!=null&&jsxRuntime.jsx("span",{className:"lg-button__label",children:g}),a==="end"&&e]});return n?jsxRuntime.jsx(chunkLS4LPBJT_js.d,{content:n,children:b}):b});M.displayName="Button";exports.a=C;exports.b=M;
|
package/dist/chunk-CHYJKCAM.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-PEXFBRR4.mjs';import {a}from'./chunk-DN2VKVCV.mjs';import L from'react';import {cva}from'class-variance-authority';import {LoaderCircle}from'lingee-icon';import {jsx,jsxs}from'react/jsx-runtime';var C=cva("lg-button",{variants:{variant:{primary:"lg-button--primary",filled:"lg-button--filled",default:"lg-button--default",text:"lg-button--text","link-plain":"lg-button--link-plain",link:"lg-button--link"},size:{sm:"lg-button--sm",md:"lg-button--md",std:"lg-button--std",lg:"lg-button--lg"},shape:{default:"",round:"lg-button--round",circle:"lg-button--circle"}},defaultVariants:{variant:"default",size:"md",shape:"default"}}),M=L.forwardRef(({className:c,variant:s="default",size:p="md",shape:v="default",danger:f=false,ghost:m=false,icon:r,iconPosition:a$1="start",disabled:k=false,loading:o=false,tooltip:n,htmlType:h="button",children:g,onClick:y,"aria-label":_,...x},w)=>{let l=k||o,z=d=>{if(l){d.preventDefault();return}y?.(d);},B=!!(r||o)&&!g,N=a(C({variant:s,size:p,shape:v}),f&&"lg-button--danger",m&&"lg-button--ghost",l&&"lg-button--disabled",o&&"lg-button--loading",B&&"lg-button--icon-only",c),e=o?jsx("span",{className:"lg-button__icon",children:jsx(LoaderCircle,{spin:true})}):r?jsx("span",{className:"lg-button__icon",children:r}):null,b=jsxs("button",{ref:w,type:h,className:N,disabled:l,"aria-disabled":l||void 0,"aria-busy":o||void 0,"aria-label":_||n||void 0,onClick:z,...x,children:[a$1==="start"&&e,g!=null&&jsx("span",{className:"lg-button__label",children:g}),a$1==="end"&&e]});return n?jsx(d,{content:n,children:b}):b});M.displayName="Button";export{C as a,M as b};
|
package/dist/chunk-FDENIWMP.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {j}from'./chunk-S5TTZBPX.mjs';import {b}from'./chunk-CHYJKCAM.mjs';import {a}from'./chunk-DN2VKVCV.mjs';import $e,{useEffect,useMemo,useCallback}from'react';import pt from'@rc-component/tree';import {DocumentLibrary,XLg,ChevronDown,Inbox,ExclamationCircle,LoaderCircle}from'lingee-icon';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {cva}from'class-variance-authority';var F=$e.forwardRef(({className:e,size:t="md",spinning:l=true,children:a$1,tip:g,...s},u)=>{let p=j("Spin"),m=a$1!=null,n=jsx("div",{className:"lg-spin__indicator"});return m?jsxs("div",{ref:u,className:a("lg-spin","lg-spin--nested",e),...s,children:[jsx("div",{className:a("lg-spin__content",l&&"lg-spin__content--loading"),children:a$1}),l&&jsxs("div",{className:"lg-spin__overlay",role:"status","aria-label":g||p.loading,children:[jsx("div",{className:a("lg-spin",`lg-spin--${t}`),children:n}),g&&jsx("span",{className:"lg-spin__tip",children:g})]})]}):jsx("div",{ref:u,className:a("lg-spin",`lg-spin--${t}`,!l&&"lg-spin--paused",e),role:"status","aria-label":g||p.loading,...s,children:n})});F.displayName="Spin";var de="lg-empty-gradient",ce=`url(#${de})`,se=0,O=null;function je(){if(se++>0||typeof document>"u")return;let e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttribute("width","0"),e.setAttribute("height","0"),e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.overflow="hidden",e.innerHTML=`<defs><linearGradient id="${de}" x1="12" y1="2" x2="12" y2="22" gradientUnits="userSpaceOnUse"><stop style="stop-color: var(--__lg-empty-gradient-from)"/><stop offset="1" style="stop-color: var(--__lg-empty-gradient-to)"/></linearGradient></defs>`,document.body.appendChild(e),O=e;}function Ze(){--se>0||O&&(O.remove(),O=null);}var U={lg:56,md:24,sm:16};function Fe(e){return typeof e=="function"||typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var D=$e.forwardRef(({size:e="md",icon:t,description:l,children:a$1,className:g,style:s,...u},p)=>{useEffect(()=>(je(),Ze),[]);let m=U[e],n;return t?Fe(t)?n=jsx(t,{size:m,fill:ce}):n=t:n=jsx(DocumentLibrary,{size:m,fill:ce}),jsxs("div",{ref:p,className:a("lg-empty",`lg-empty--${e}`,g),style:s,...u,children:[jsx("span",{className:"lg-empty__icon",children:n}),jsx("span",{className:"lg-empty__text",children:l}),a$1&&jsx("div",{className:"lg-empty__extra",children:a$1})]})});D.displayName="Empty";function Je(e,t){switch(e){case "loading":return jsx(LoaderCircle,{size:t,spin:true});case "error":return jsx(ExclamationCircle,{size:t});default:return jsx(Inbox,{size:t})}}var Y=$e.forwardRef(({status:e,description:t,icon:l,size:a$1="sm",variant:g="block",spacing:s="normal",align:u="center",onRetry:p,className:m,style:n,...v},h)=>{let N=j("Empty"),w=l===null?null:l??Je(e,U[a$1]),b=e==="error"&&typeof p=="function",d=a("lg-empty-card",`lg-empty-card--${a$1}`,`lg-empty-card--${g}`,`lg-empty-card--${e}`,`lg-empty-card--spacing-${s}`,u==="start"&&"lg-empty-card--align-start",b&&"lg-empty-card--retryable",m),k=b?jsxs(Fragment,{children:[t,jsx("span",{className:"lg-empty-card__retry",children:N.retry})]}):t,i=jsx(D,{size:a$1,icon:w??jsx(Fragment,{}),description:k,className:"lg-empty-card__body"});return b?jsx("button",{ref:h,type:"button",className:d,style:n,onClick:p,...v,children:i}):jsx("div",{ref:h,className:d,style:n,role:e==="empty"?void 0:"status","aria-live":e==="empty"?void 0:"polite",...v,children:i})});Y.displayName="Empty.Card";var fe=Object.assign(D,{Card:Y});var et={diamond:[{w:76.7412,h:29.5746,x:-11.303,y:-8.104,rotate:3.61,blur:4,path:"M15.1953 8L68.7412 13.2684L55.6642 21.5746H8L15.1953 8Z"},{w:49.895,h:21.0268,x:18.294,y:-7.912,rotate:-15.73,blur:3,path:"M10.489 6L43.895 9.50337L35.7366 15.0268H6L10.489 6Z"}],metal:[{w:76.7412,h:28.579,x:-15.3845,y:-7.1025,rotate:3.61,blur:4,path:"M15.1953 8L68.7412 12.882L55.6642 20.579H8L15.1953 8Z"},{w:43.4758,h:20.4645,x:14.807,y:-5.685,rotate:-20.81,blur:3,path:"M9.72859 6L37.4758 9.28514L30.6993 14.4645H6L9.72859 6Z"}]},ue=["primary","secondary"],me=({shape:e})=>jsx(Fragment,{children:et[e].map((t,l)=>jsx("svg",{className:`lg-tag__glow lg-tag__glow--${ue[l]}`,width:t.w,height:t.h,viewBox:`0 0 ${t.w} ${t.h}`,xmlns:"http://www.w3.org/2000/svg","aria-hidden":true,style:{left:t.x,top:t.y,transform:`rotate(${t.rotate}deg)`,filter:`blur(${t.blur}px)`},children:jsx("path",{d:t.path})},ue[l]))});var ot=["primary","info","success","warning","danger","amber","yellow","cyan","purple"],gt={purple:"diamond",yellow:"metal",cyan:"metal"},nt=["text","filled","line"],it=["primary","info","success","warning","danger","amber","cyan","purple"],ct=cva("lg-tag",{variants:{variant:{text:"lg-tag--text",tint:"",filled:"lg-tag--filled",line:"lg-tag--line",gradient:"lg-tag--gradient",glow:"lg-tag--glow"},size:{sm:"lg-tag--sm",md:"lg-tag--md",lg:"lg-tag--lg"}},defaultVariants:{variant:"tint",size:"md"}}),X=$e.forwardRef(({className:e,color:t="info",variant:l="tint",size:a$1="md",shape:g="pill",icon:s,background:u,closable:p=false,onClose:m,children:n,style:v,...h},N)=>{let w=j("Tag"),b=ot.includes(t),d=b&&nt.includes(l)&&!it.includes(t)?"tint":l,k=b?`lg-tag--${t}`:"",i={...v};b||(d==="filled"?i["--_tag-bg"]=t:(i["--_tag-color"]=t,i["--_tag-bg"]=`color-mix(in srgb, ${t} 8%, transparent)`),d==="gradient"?(i["--_tag-gradient-from"]=`color-mix(in srgb, ${t} 12%, transparent)`,i["--_tag-gradient-to"]=`color-mix(in srgb, ${t} 3%, transparent)`):d==="glow"&&(i["--_tag-gradient-from"]=`color-mix(in srgb, ${t} 12%, transparent)`,i["--_tag-gradient-to"]=`color-mix(in srgb, ${t} 28%, transparent)`)),u&&(i.background=u);let I=d==="gradient"||d==="glow"?"":`lg-tag--${g}`,A=d==="glow"?gt[t]:void 0,M=H=>{H.stopPropagation(),m?.(H);};return jsxs("span",{ref:N,className:a(ct({variant:d,size:a$1}),I,k,p&&"lg-tag--closable",e),style:i,...h,children:[A&&jsx(me,{shape:A}),s&&jsx("span",{className:"lg-tag__icon",children:s}),jsx("span",{className:"lg-tag__content",children:n}),p&&jsx("span",{className:"lg-tag__close",onClick:M,role:"button",tabIndex:0,"aria-label":w.close,children:jsx(XLg,{})})]})});X.displayName="Tag";var ut={sm:30,md:34,lg:38},q=()=>({height:0,opacity:0}),ye=e=>{let t=Array.from(e.children);return t.length===0?0:t.reduce((l,a)=>{let g=parseFloat(getComputedStyle(a).marginTop)||0;return l+a.getBoundingClientRect().height+g},0)},be=e=>({height:ye(e),opacity:1}),mt={motionName:"lg-tree-motion",motionDeadline:300,onAppearStart:q,onAppearActive:be,onEnterStart:q,onEnterActive:be,onLeaveStart:e=>({height:ye(e),opacity:1}),onLeaveActive:q},bt="---",vt=e=>e!=null&&(e.tag!=null||e.action!=null||e.extra!=null),_t=e=>e!=null&&typeof e!="boolean",J=e=>{e.stopPropagation();},yt=e=>{e.preventDefault(),e.stopPropagation();},xt=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","Enter"," "]),ht=e=>{xt.has(e.key)&&e.stopPropagation();},ve={onClick:J,onDoubleClick:J,onContextMenu:J,onKeyDown:ht,onDragStart:yt},wt=$e.forwardRef((e,t)=>{let{treeData:l,fieldNames:a$1,size:g="md",expandedKeys:s,defaultExpandedKeys:u,defaultExpandAll:p,autoExpandParent:m,expandAction:n="click",onExpand:v,selectable:h=true,multiple:N=false,selectedKeys:w,defaultSelectedKeys:b$1,onSelect:d,checkable:k=false,checkStrictly:i=false,checkedKeys:I,defaultCheckedKeys:A,onCheck:M,showIcon:H=false,icon:C,switcherIcon:S,indentGuide:xe="line",titleRender:V,loadData:he,loadedKeys:Q,draggable:T=false,allowDrop:j$1,onDrop:ee,height:we,itemHeight:ke,virtual:Te,disabled:G=false,loading:te=false,empty:Ee,onRightClick:Ne,animated:Ce=true,className:Se,style:Re}=e,Le=j("Tree"),De=useMemo(()=>{if(C)return typeof C!="function"?C:r=>C(r.data,{expanded:!!r.expanded,isLeaf:!!r.isLeaf})},[C]),ze=useMemo(()=>S!==void 0?typeof S!="function"?S:r=>S({expanded:!!r.expanded,isLeaf:!!r.isLeaf}):r=>r.isLeaf?null:jsx(ChevronDown,{className:"lg-tree__switcher-icon",size:16,"aria-hidden":true}),[S]),Pe=useMemo(()=>{if(T)return {icon:false,nodeDraggable:typeof T=="function"?r=>T(r):void 0}},[T]),Ie=useCallback((r,o)=>{v?.(r,{node:o.node,expanded:o.expanded});},[v]),Ae=useCallback((r,o)=>{d?.(r,{node:o.node,selected:o.selected,selectedNodes:o.selectedNodes});},[d]),Me=useCallback((r,o)=>{M?.(r,{node:o.node,checked:o.checked,checkedNodes:o.checkedNodes,halfCheckedKeys:o.halfCheckedKeys});},[M]),He=useCallback(r=>{ee?.({dragNode:r.dragNode,node:r.node,dropPosition:r.dropPosition,dropToGap:r.dropToGap});},[ee]),re=useMemo(()=>{if(j$1)return r=>j$1({dragNode:r.dragNode,dropNode:r.dropNode,dropPosition:r.dropPosition})},[j$1]),Ge=useCallback(r=>{let o;if(V)o=V(r);else {let $=r[a$1?.title||"title"];o=$===void 0?bt:$;}let{treeItem:le}=r;if(!vt(le))return o;let{tag:K,action:x,extra:Z}=le,ae=G||!!r.disabled,oe=typeof Z=="function"?Z({node:r,disabled:ae}):Z,ge=T?true:void 0;return jsxs("span",{className:"lg-tree__node-content",children:[jsx("span",{className:a("lg-tree__node-label",K&&"lg-tree__node-label--with-tag"),children:o}),K&&jsx("span",{className:"lg-tree__node-tag",children:jsx(X,{color:K.color??"primary",size:"sm",shape:"pill",children:K.content})}),_t(oe)&&jsx("span",{className:"lg-tree__node-extra",draggable:ge,...ve,children:oe}),x&&jsx("span",{className:"lg-tree__node-action",draggable:ge,...ve,children:jsx(b,{variant:"text",size:"sm",shape:"circle",icon:x.icon,"aria-label":x.ariaLabel,tooltip:x.tooltip??x.ariaLabel,disabled:ae||!!x.disabled,onClick:$=>x.onClick?.(r,$)})})]})},[G,T,a$1?.title,V]),Ke=!l||l.length===0,E={};return s!==void 0&&(E.expandedKeys=s),w!==void 0&&(E.selectedKeys=w),I!==void 0&&(E.checkedKeys=I),Q!==void 0&&(E.loadedKeys=Q),re!==void 0&&(E.allowDrop=re),jsxs("div",{ref:t,className:a("lg-tree",`lg-tree--${g}`,`lg-tree--guide-${xe}`,k&&"lg-tree--checkable",G&&"lg-tree--disabled",te&&"lg-tree--loading",Se),style:Re,children:[te&&jsx("div",{className:"lg-tree__loading-mask",children:jsx(F,{size:"md"})}),Ke?jsx("div",{className:"lg-tree__empty",children:Ee??jsx(fe,{size:"sm",description:Le.empty})}):jsx(pt,{prefixCls:"lg-tree",treeData:l,fieldNames:a$1,defaultExpandedKeys:u,defaultExpandAll:p,autoExpandParent:m,expandAction:n,onExpand:Ie,selectable:h,multiple:N,defaultSelectedKeys:b$1,onSelect:Ae,checkable:k,checkStrictly:i,defaultCheckedKeys:A,onCheck:Me,showIcon:H,icon:De,switcherIcon:ze,titleRender:Ge,loadData:he,draggable:Pe,onDrop:He,height:we,itemHeight:ke??ut[g],virtual:Te,disabled:G,onRightClick:Ne,motion:Ce?mt:void 0,...E})]})});wt.displayName="Tree";
|
|
2
|
-
export{Y as a,fe as b,X as c,F as d,wt as e};
|
package/dist/chunk-LS4LPBJT.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkDCDWEVW4_js=require('./chunk-DCDWEVW4.js'),react=require('react'),l=require('@radix-ui/react-tooltip'),r=require('@radix-ui/react-scroll-area'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var l__namespace=/*#__PURE__*/_interopNamespace(l);var r__namespace=/*#__PURE__*/_interopNamespace(r);var T=react.forwardRef(({children:t,className:o,style:i,type:a="scroll",scrollHideDelay:n=600,scrollbars:s="vertical",scrollbarSize:h=4,scrollbarHoverSize:m=6,onScroll:f,viewportRef:x,fill:_=false},u)=>{let b={"--_scrollbar-size":`${h}px`,"--_scrollbar-hover-size":`${m}px`,...i};return jsxRuntime.jsxs(r__namespace.Root,{ref:u,className:chunkDCDWEVW4_js.a("lg-scroll-area",_&&"lg-scroll-area--fill",o),style:b,type:a,scrollHideDelay:n,children:[jsxRuntime.jsx(r__namespace.Viewport,{className:"lg-scroll-area__viewport",ref:x,onScroll:f,children:t}),(s==="vertical"||s==="both")&&jsxRuntime.jsx(v,{orientation:"vertical"}),(s==="horizontal"||s==="both")&&jsxRuntime.jsx(v,{orientation:"horizontal"}),s==="both"&&jsxRuntime.jsx(r__namespace.Corner,{className:"lg-scroll-area__corner"})]})});T.displayName="ScrollArea";var v=react.forwardRef(({orientation:t="vertical",className:o},i)=>jsxRuntime.jsx(r__namespace.Scrollbar,{ref:i,className:chunkDCDWEVW4_js.a("lg-scroll-area__scrollbar",o),orientation:t,children:jsxRuntime.jsx(r__namespace.Thumb,{className:"lg-scroll-area__thumb"})}));v.displayName="ScrollBar";var R=200,V=150,K=true,H=react.createContext(false);function W(){return react.useContext(H)}function y({children:t}){return jsxRuntime.jsx(H.Provider,{value:true,children:jsxRuntime.jsx(l__namespace.Provider,{delayDuration:R,skipDelayDuration:V,disableHoverableContent:K,children:t})})}y.displayName="TooltipProvider";var S={single:{maxWidth:240,maxHeight:32,fontSize:14,lineHeight:20,paddingX:10,paddingY:6,lines:1},multi:{maxWidth:240,maxHeight:100,fontSize:14,lineHeight:20,paddingX:12,paddingY:10,lines:4},rich:{maxWidth:320,maxHeight:208,fontSize:13,lineHeight:18,paddingX:16,paddingY:14,lines:10},"rich-large":{maxWidth:500,maxHeight:316,fontSize:13,lineHeight:18,paddingX:16,paddingY:14,lines:16}},$=["single","multi","rich","rich-large"],G=.95;function Z(t){return t>=11904&&t<=40959||t>=44032&&t<=55203||t>=12288&&t<=12351||t>=65280&&t<=65376||t>=63744&&t<=64255?1:.5}function q(t){let o=0;for(let i=0;i<t.length;i+=1)o+=Z(t.charCodeAt(i));return o}function J(t){return (t.maxWidth-t.paddingX*2)/t.fontSize*G}function Q(t,o){let i=J(o),a=0;for(let n of t.split(`
|
|
2
|
-
`))a+=Math.max(1,Math.ceil(q(n)/i));return a}function D(t){for(let o of $){let i=S[o];if(Q(t,i)<=i.lines)return o}return "rich-large"}var L="rich";var tt=10,ot=5,it=4;function rt(t){let o=t.split("-"),i=o[0],a={start:"start",end:"end"},n=o[1]?a[o[1]]??"center":"center";return {side:i,align:n}}function lt({disabled:t=false,content:o,children:i,placement:a="top",open:n,defaultOpen:s,onOpenChange:h,delayDuration:m=R,sideOffset:f=it,arrow:x=true,className:_,style:u,maxWidth:b,scrollable:I=true,container:A}){let Y=W(),d=react.useMemo(()=>typeof o=="string"?D(o):L,[o]);if(t||o==null||o==="")return jsxRuntime.jsx(jsxRuntime.Fragment,{children:i});let{side:O,align:B}=rt(a),X=b??S[d].maxWidth,P=I&&d!=="single",g;P?g=jsxRuntime.jsx(T,{className:"lg-tooltip__scroll",children:o}):d==="single"?g=jsxRuntime.jsx("span",{className:"lg-tooltip__single",children:o}):g=o;let w=jsxRuntime.jsxs(l__namespace.Content,{className:chunkDCDWEVW4_js.a("lg-tooltip",`lg-tooltip--${d}`,P&&"lg-tooltip--scrollable",_),side:O,align:B,sideOffset:f,style:{maxWidth:X,...u},children:[g,x&&jsxRuntime.jsx(l__namespace.Arrow,{className:"lg-tooltip__arrow",asChild:true,width:tt,height:ot,children:jsxRuntime.jsx("svg",{viewBox:"0 0 10 5",preserveAspectRatio:"none",children:jsxRuntime.jsx("path",{d:"M3.58579 3.58579C4.36684 4.36684 5.63317 4.36683 6.41421 3.58579L10 0H0L3.58579 3.58579Z"})})})]}),z=jsxRuntime.jsxs(l__namespace.Root,{open:n,defaultOpen:s,onOpenChange:h,delayDuration:m,children:[jsxRuntime.jsx(l__namespace.Trigger,{asChild:true,children:i}),A===null?w:jsxRuntime.jsx(l__namespace.Portal,{container:A,children:w})]});return Y?z:jsxRuntime.jsx(y,{children:z})}lt.displayName="Tooltip";exports.a=T;exports.b=v;exports.c=y;exports.d=lt;
|
package/dist/chunk-PEXFBRR4.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {a}from'./chunk-DN2VKVCV.mjs';import {forwardRef,createContext,useMemo,useContext}from'react';import*as l from'@radix-ui/react-tooltip';import*as r from'@radix-ui/react-scroll-area';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var T=forwardRef(({children:t,className:o,style:i,type:a$1="scroll",scrollHideDelay:n=600,scrollbars:s="vertical",scrollbarSize:h=4,scrollbarHoverSize:m=6,onScroll:f,viewportRef:x,fill:_=false},u)=>{let b={"--_scrollbar-size":`${h}px`,"--_scrollbar-hover-size":`${m}px`,...i};return jsxs(r.Root,{ref:u,className:a("lg-scroll-area",_&&"lg-scroll-area--fill",o),style:b,type:a$1,scrollHideDelay:n,children:[jsx(r.Viewport,{className:"lg-scroll-area__viewport",ref:x,onScroll:f,children:t}),(s==="vertical"||s==="both")&&jsx(v,{orientation:"vertical"}),(s==="horizontal"||s==="both")&&jsx(v,{orientation:"horizontal"}),s==="both"&&jsx(r.Corner,{className:"lg-scroll-area__corner"})]})});T.displayName="ScrollArea";var v=forwardRef(({orientation:t="vertical",className:o},i)=>jsx(r.Scrollbar,{ref:i,className:a("lg-scroll-area__scrollbar",o),orientation:t,children:jsx(r.Thumb,{className:"lg-scroll-area__thumb"})}));v.displayName="ScrollBar";var R=200,V=150,K=true,H=createContext(false);function W(){return useContext(H)}function y({children:t}){return jsx(H.Provider,{value:true,children:jsx(l.Provider,{delayDuration:R,skipDelayDuration:V,disableHoverableContent:K,children:t})})}y.displayName="TooltipProvider";var S={single:{maxWidth:240,maxHeight:32,fontSize:14,lineHeight:20,paddingX:10,paddingY:6,lines:1},multi:{maxWidth:240,maxHeight:100,fontSize:14,lineHeight:20,paddingX:12,paddingY:10,lines:4},rich:{maxWidth:320,maxHeight:208,fontSize:13,lineHeight:18,paddingX:16,paddingY:14,lines:10},"rich-large":{maxWidth:500,maxHeight:316,fontSize:13,lineHeight:18,paddingX:16,paddingY:14,lines:16}},$=["single","multi","rich","rich-large"],G=.95;function Z(t){return t>=11904&&t<=40959||t>=44032&&t<=55203||t>=12288&&t<=12351||t>=65280&&t<=65376||t>=63744&&t<=64255?1:.5}function q(t){let o=0;for(let i=0;i<t.length;i+=1)o+=Z(t.charCodeAt(i));return o}function J(t){return (t.maxWidth-t.paddingX*2)/t.fontSize*G}function Q(t,o){let i=J(o),a=0;for(let n of t.split(`
|
|
2
|
-
`))a+=Math.max(1,Math.ceil(q(n)/i));return a}function D(t){for(let o of $){let i=S[o];if(Q(t,i)<=i.lines)return o}return "rich-large"}var L="rich";var tt=10,ot=5,it=4;function rt(t){let o=t.split("-"),i=o[0],a={start:"start",end:"end"},n=o[1]?a[o[1]]??"center":"center";return {side:i,align:n}}function lt({disabled:t=false,content:o,children:i,placement:a$1="top",open:n,defaultOpen:s,onOpenChange:h,delayDuration:m=R,sideOffset:f=it,arrow:x=true,className:_,style:u,maxWidth:b,scrollable:I=true,container:A}){let Y=W(),d=useMemo(()=>typeof o=="string"?D(o):L,[o]);if(t||o==null||o==="")return jsx(Fragment,{children:i});let{side:O,align:B}=rt(a$1),X=b??S[d].maxWidth,P=I&&d!=="single",g;P?g=jsx(T,{className:"lg-tooltip__scroll",children:o}):d==="single"?g=jsx("span",{className:"lg-tooltip__single",children:o}):g=o;let w=jsxs(l.Content,{className:a("lg-tooltip",`lg-tooltip--${d}`,P&&"lg-tooltip--scrollable",_),side:O,align:B,sideOffset:f,style:{maxWidth:X,...u},children:[g,x&&jsx(l.Arrow,{className:"lg-tooltip__arrow",asChild:true,width:tt,height:ot,children:jsx("svg",{viewBox:"0 0 10 5",preserveAspectRatio:"none",children:jsx("path",{d:"M3.58579 3.58579C4.36684 4.36684 5.63317 4.36683 6.41421 3.58579L10 0H0L3.58579 3.58579Z"})})})]}),z=jsxs(l.Root,{open:n,defaultOpen:s,onOpenChange:h,delayDuration:m,children:[jsx(l.Trigger,{asChild:true,children:i}),A===null?w:jsx(l.Portal,{container:A,children:w})]});return Y?z:jsx(y,{children:z})}lt.displayName="Tooltip";export{T as a,v as b,y as c,lt as d};
|