lingee-ui 0.0.9 → 0.0.11

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 (79) 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-2EQT33RE.mjs +2 -0
  7. package/dist/chunk-D25GF6TL.mjs +1 -0
  8. package/dist/{chunk-SXHF5CXB.js → chunk-GN64U4A6.js} +1 -1
  9. package/dist/chunk-HBUCDYU4.mjs +2 -0
  10. package/dist/chunk-KY6SDUK5.mjs +1 -0
  11. package/dist/chunk-LBNA6G3N.js +1 -0
  12. package/dist/{chunk-QIMQMSJB.js → chunk-LSQ4CC7K.js} +1 -1
  13. package/dist/chunk-N524EGAL.mjs +1 -0
  14. package/dist/chunk-NK4H3KPJ.js +1 -0
  15. package/dist/chunk-OKHDREZ4.js +1 -0
  16. package/dist/{chunk-6M7ESUQX.mjs → chunk-Q4CF2U5W.mjs} +1 -1
  17. package/dist/chunk-SV5ZR6K5.js +2 -0
  18. package/dist/{chunk-7F53VFM6.mjs → chunk-U7SNZQQT.mjs} +1 -1
  19. package/dist/chunk-VV2IBN64.mjs +1 -0
  20. package/dist/chunk-Y3P3LG3L.js +2 -0
  21. package/dist/chunk-YSWFM6ML.js +1 -0
  22. package/dist/{index-7pb5YOcq.d.mts → index-89atTLPD.d.mts} +2 -2
  23. package/dist/{index-7pb5YOcq.d.ts → index-89atTLPD.d.ts} +2 -2
  24. package/dist/index.css +1 -1
  25. package/dist/index.d.mts +463 -25
  26. package/dist/index.d.ts +463 -25
  27. package/dist/index.js +2 -2
  28. package/dist/index.mjs +2 -2
  29. package/dist/input/index.css +1 -1
  30. package/dist/input/index.js +1 -1
  31. package/dist/input/index.mjs +1 -1
  32. package/dist/popover/index.css +1 -1
  33. package/dist/popover/index.js +1 -1
  34. package/dist/popover/index.mjs +1 -1
  35. package/dist/tabs/index.css +1 -1
  36. package/dist/tabs/index.d.mts +29 -3
  37. package/dist/tabs/index.d.ts +29 -3
  38. package/dist/tabs/index.js +1 -1
  39. package/dist/tabs/index.mjs +1 -1
  40. package/dist/textarea/index.css +1 -1
  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 +7 -5
  47. package/dist/tooltip/index.d.ts +7 -5
  48. package/dist/tooltip/index.js +1 -1
  49. package/dist/tooltip/index.mjs +1 -1
  50. package/dist/tree/index.css +1 -1
  51. package/dist/tree/index.js +1 -1
  52. package/dist/tree/index.mjs +1 -1
  53. package/package.json +4 -1
  54. package/skill/AGENTS-SNIPPET.md +44 -8
  55. package/skill/SKILL.md +22 -14
  56. package/skill/VERSION.json +5 -5
  57. package/skill/references/components/carousel.md +93 -0
  58. package/skill/references/components/dialog.md +2 -2
  59. package/skill/references/components/dropdown.md +51 -1
  60. package/skill/references/components/empty.md +3 -2
  61. package/skill/references/components/scroll-area.md +29 -0
  62. package/skill/references/components/select.md +1 -0
  63. package/skill/references/components/sidebar.md +1 -1
  64. package/skill/references/components/tabs.md +16 -1
  65. package/skill/references/components/tooltip.md +7 -2
  66. package/skill/references/components/upload.md +53 -1
  67. package/skill/references/icons.md +7 -5
  68. package/skill/references/setup.md +14 -2
  69. package/skill/references/tokens.md +41 -6
  70. package/dist/chunk-C5BDJQIO.js +0 -2
  71. package/dist/chunk-DIXO53WK.mjs +0 -1
  72. package/dist/chunk-H7GT6UT4.mjs +0 -1
  73. package/dist/chunk-IE7TAOTL.mjs +0 -2
  74. package/dist/chunk-JKY43GCS.mjs +0 -1
  75. package/dist/chunk-M2SC5LED.js +0 -1
  76. package/dist/chunk-P56ABRDC.js +0 -1
  77. package/dist/chunk-WAYZVZQB.js +0 -1
  78. package/dist/chunk-XG3DE76O.mjs +0 -1
  79. package/dist/chunk-ZXUYGVWB.js +0 -1
@@ -0,0 +1,93 @@
1
+ # Carousel 轮播容器
2
+
3
+ 水平轮播容器,用于在一屏内循环展示一组内容,支持自动播放、拖拽切换与圆点指示器。
4
+
5
+ - 导入:`import { Carousel, CarouselItem } from "lingee-ui";`
6
+ - 可用类型:`CarouselProps`, `CarouselItemProps`, `CarouselApi`, `CarouselDotsPlacement`
7
+
8
+ ## 最小示例
9
+
10
+ ```tsx
11
+ import { Carousel } from "lingee-ui";
12
+
13
+ const slides = ["Slide 1", "Slide 2", "Slide 3"];
14
+
15
+ export default function BasicDemo() {
16
+ return (
17
+ <Carousel autoplay loop style={{ borderRadius: 24, overflow: "hidden" }}>
18
+ {slides.map((label) => (
19
+ <Carousel.Item key={label}>
20
+ <div
21
+ style={{
22
+ display: "flex",
23
+ alignItems: "center",
24
+ justifyContent: "center",
25
+ height: 200,
26
+ background: "var(--lg-g-bg-color-primary-translucent-soft)",
27
+ color: "var(--lg-g-fg-color-primary-default)",
28
+ fontSize: 32,
29
+ fontWeight: 600,
30
+ }}
31
+ >
32
+ {label}
33
+ </div>
34
+ </Carousel.Item>
35
+ ))}
36
+ </Carousel>
37
+ );
38
+ }
39
+ ```
40
+
41
+ ## API
42
+
43
+ ### Carousel
44
+
45
+ | 属性 | 说明 | 类型 | 默认值 |
46
+ |------|------|------|--------|
47
+ | `children` | 轮播项,需为 `Carousel.Item` | `ReactNode` | - |
48
+ | `loop` | 是否循环轮播 | `boolean` | `true` |
49
+ | `autoplay` | 是否开启自动轮播 | `boolean` | `false` |
50
+ | `autoplayDelay` | 自动轮播间隔(ms),建议 3000 ~ 6000 | `number` | `4000` |
51
+ | `stopOnMouseEnter` | 鼠标移入时暂停,移出恢复 | `boolean` | `true` |
52
+ | `stopOnInteraction` | 手动交互后彻底停止自动轮播 | `boolean` | `false` |
53
+ | `draggable` | 是否允许拖拽 / 滑动切换 | `boolean` | `true` |
54
+ | `slidesPerView` | 每屏展示的轮播项数量 | `number` | `1` |
55
+ | `gap` | 轮播项之间的间距(px) | `number` | `0` |
56
+ | `defaultIndex` | 初始选中序号(0 开始) | `number` | `0` |
57
+ | `dots` | 是否展示圆点指示器 | `boolean` | `true` |
58
+ | `dotsPlacement` | 指示器位置 | `"inside" \| "outside"` | `"inside"` |
59
+ | `dotsGlassy` | 指示器是否使用半透明毛玻璃胶囊底 | `boolean` | `false` |
60
+ | `arrows` | 是否展示左右箭头 | `boolean` | `false` |
61
+ | `onChange` | 选中项变化回调 | `(index: number) => void` | - |
62
+ | `apiRef` | 获取轮播实例 | `Ref<CarouselApi>` | - |
63
+ | `className` | 自定义类名 | `string` | - |
64
+ | `style` | 自定义样式 | `CSSProperties` | - |
65
+
66
+ ### Carousel.Item
67
+
68
+ | 属性 | 说明 | 类型 | 默认值 |
69
+ |------|------|------|--------|
70
+ | `children` | 轮播项内容 | `ReactNode` | - |
71
+ | `className` | 自定义类名 | `string` | - |
72
+ | `style` | 自定义样式 | `CSSProperties` | - |
73
+
74
+ ### CarouselApi
75
+
76
+ | 方法 | 说明 | 类型 |
77
+ |------|------|------|
78
+ | `scrollTo` | 跳转到指定序号,`jump` 为 `true` 时不播放过渡 | `(index: number, jump?: boolean) => void` |
79
+ | `scrollPrev` | 上一张 | `() => void` |
80
+ | `scrollNext` | 下一张 | `() => void` |
81
+ | `canScrollPrev` | 是否可向前翻页(`loop` 下恒为 `true`) | `() => boolean` |
82
+ | `canScrollNext` | 是否可向后翻页(`loop` 下恒为 `true`) | `() => boolean` |
83
+ | `selectedIndex` | 当前选中序号 | `() => number` |
84
+ | `count` | 总页数 | `() => number` |
85
+ | `play` | 启动自动轮播 | `() => void` |
86
+ | `stop` | 暂停自动轮播 | `() => void` |
87
+ | `reInit` | 重新初始化 | `() => void` |
88
+
89
+ ## 注意事项
90
+
91
+ - 圆角需设置在 `Carousel` 根节点上,内部 viewport 通过 `border-radius: inherit` 继承裁剪
92
+ - `autoplayDelay` 变化不会自动应用到已挂载的实例,如需动态切换请配合 `key` 强制重挂载
93
+ - 内容色彩复杂导致圆点对比度不足时,开启 `dotsGlassy` 增加胶囊底
@@ -2,8 +2,8 @@
2
2
 
3
3
  模态对话框,用于需要用户确认或填写信息的场景。支持声明式和命令式两种调用方式。
4
4
 
5
- - 导入:`import { Dialog } from "lingee-ui";`
6
- - 可用类型:`DialogProps`, `DialogConfirmOptions`
5
+ - 导入:`import { Dialog, HostModalPage, isInHostModal, getHostModalParams, notifyHostModalReady, closeHostModal } from "lingee-ui";`
6
+ - 可用类型:`DialogProps`, `DialogConfirmOptions`, `DialogHostModal`, `HostModalPageProps`
7
7
 
8
8
  ## 最小示例
9
9
 
@@ -3,7 +3,7 @@
3
3
  向下弹出的操作菜单列表,支持图标、分组、危险操作、子菜单等。
4
4
 
5
5
  - 导入:`import { Dropdown, DropdownTrigger, DropdownContent, DropdownItem, DropdownCheckboxItem, DropdownRadioGroup, DropdownRadioItem, DropdownLabel, DropdownSeparator, DropdownGroup, DropdownStatus, DropdownSub, DropdownSubTrigger, DropdownSubContent, DropdownButton } from "lingee-ui";`
6
- - 可用类型:`DropdownProps`, `DropdownTriggerProps`, `DropdownContentProps`, `DropdownItemProps`, `DropdownCheckboxItemProps`, `DropdownRadioGroupProps`, `DropdownRadioItemProps`, `DropdownLabelProps`, `DropdownSeparatorProps`, `DropdownGroupProps`, `DropdownStatusProps`, `DropdownStatusType`, `DropdownStatusText`, `DropdownSubProps`, `DropdownSubTriggerProps`, `DropdownSubContentProps`, `DropdownItemData`, `DropdownMenuItemData`, `DropdownSeparatorData`, `DropdownLabelData`, `DropdownButtonProps`
6
+ - 可用类型:`DropdownEllipsisTooltip`, `DropdownProps`, `DropdownTriggerProps`, `DropdownContentProps`, `DropdownItemProps`, `DropdownCheckboxItemProps`, `DropdownRadioGroupProps`, `DropdownRadioItemProps`, `DropdownLabelProps`, `DropdownSeparatorProps`, `DropdownGroupProps`, `DropdownStatusProps`, `DropdownStatusType`, `DropdownStatusText`, `DropdownSubProps`, `DropdownSubTriggerProps`, `DropdownSubContentProps`, `DropdownItemData`, `DropdownMenuItemData`, `DropdownSeparatorData`, `DropdownLabelData`, `DropdownButtonProps`
7
7
 
8
8
  ## 最小示例
9
9
 
@@ -68,8 +68,33 @@ export default function BasicDemo() {
68
68
  | `icon` | 前缀图标 | `ReactNode` | - |
69
69
  | `disabled` | 是否禁用 | `boolean` | `false` |
70
70
  | `onMouseEnter` | 鼠标进入回调,在内部展开子菜单后执行,可用于懒加载数据 | `MouseEventHandler` | - |
71
+ | `ellipsisTooltip` | 文本溢出时悬浮显示完整内容,见 [长文本溢出提示](#长文本溢出提示) | `boolean \| ReactNode` | - |
71
72
  | `children` | 触发项内容 | `ReactNode` | - |
72
73
 
74
+ ### DropdownSubContent
75
+
76
+ | 属性 | 说明 | 类型 | 默认值 |
77
+ |------|------|------|--------|
78
+ | `side` | 弹出方向 | `"top" \| "bottom" \| "left" \| "right"` | `"right"` |
79
+ | `align` | 对齐方式 | `"start" \| "center" \| "end"` | `"start"` |
80
+ | `sideOffset` | 侧向偏移 | `number` | `8` |
81
+ | `style.maxHeight` | 覆盖面板高度上限 | `number \| string` | `346` |
82
+ | `footer` | 固定底部内容(不随列表滚动) | `ReactNode` | - |
83
+ | `children` | 子菜单内容 | `ReactNode` | - |
84
+
85
+ 子菜单与主面板同口径限高:默认上限 346px(10 个菜单项),并始终与视口可用空间取较小值,超出部分由内置 ScrollArea 滚动。选项数量不受控的场景(如租户列表)无需额外处理。
86
+
87
+ 承载设计高度更大的自定义面板时才需抬高上限,传 `style={{ maxHeight: ... }}` 或在类名上改 `--lg-dropdown-sub-max-height`:
88
+
89
+ ```less
90
+ .myCustomSubPanel {
91
+ // 写面板实际需要的高度,不要写 100vh
92
+ --lg-dropdown-sub-max-height: 420px;
93
+ }
94
+ ```
95
+
96
+ 给一个具体像素值而非 `100vh`:视口兜底依赖 Radix 注入的 `--radix-popover-content-available-height`,该变量在未测量完或降级路径下为空,此时若上限也是 `100vh`,`min()` 两边同值,兜底就失效了。
97
+
73
98
  ### DropdownContent
74
99
 
75
100
  | 属性 | 说明 | 类型 | 默认值 |
@@ -93,8 +118,33 @@ export default function BasicDemo() {
93
118
  | `icon` | 前缀图标 | `ReactNode` | - |
94
119
  | `description` | 副标题描述(显示在主文本下方) | `ReactNode` | - |
95
120
  | `selected` | 是否选中(显示勾选) | `boolean` | `false` |
121
+ | `ellipsisTooltip` | 文本溢出时悬浮显示完整内容,详见下方章节 | `boolean \| ReactNode` | - |
96
122
  | `children` | 菜单项内容 | `ReactNode` | - |
97
123
 
124
+ ### 长文本溢出提示
125
+
126
+ 面板宽度默认随内容撑开,长文案会把浮层顶出屏幕。给菜单项传 `ellipsisTooltip` 后文本带最大宽度(240px)并单行截断,**仅在真正被截断时**悬浮显示完整内容 —— 未截断不弹,不会出现重复可见文字的干扰提示。
127
+
128
+ ```tsx
129
+ {/* true:取 children 作为提示内容 */}
130
+ <DropdownItem ellipsisTooltip>{tenantName}</DropdownItem>
131
+
132
+ {/* children 是 JSX 时显式传纯文本,否则整块 JSX 会被塞进浮层 */}
133
+ <DropdownItem ellipsisTooltip={file.name}>
134
+ <span>{file.name}</span><Tag>new</Tag>
135
+ </DropdownItem>
136
+ ```
137
+
138
+ `DropdownItem` / `DropdownRadioItem` / `DropdownCheckboxItem` / `DropdownSubTrigger` 均支持,`items` 快捷模式在数据项上同名传入即可。
139
+
140
+ 不传该属性时行为与此前完全一致(不限宽、不打点、不弹提示),故存量菜单无需改动。限宽可通过 `--lg-dropdown-label-max-width` 调整:
141
+
142
+ ```less
143
+ .my-menu {
144
+ --lg-dropdown-label-max-width: 320px;
145
+ }
146
+ ```
147
+
98
148
  ## DropdownButton 触发器按钮
99
149
 
100
150
  统一的下拉触发器按钮组件,提供两种视觉态:
@@ -34,9 +34,10 @@ export default function BasicDemo() {
34
34
  | `status` | 状态,决定默认图标与无障碍语义 | `"loading" \| "empty" \| "error"` | - |
35
35
  | `description` | 描述文案 | `ReactNode` | - |
36
36
  | `icon` | 覆盖默认图标;传 `null` 不渲染图标 | `ReactNode \| null` | 按 `status` 取 |
37
- | `variant` | 布局:`block` 区块级 / `inline` 行内轻量 | `"block" \| "inline"` | `"block"` |
37
+ | `size` | 尺寸,语义同 `Empty`,透传给内部 `Empty` | `"sm" \| "md" \| "lg"` | `"sm"` |
38
+ | `variant` | 留白密度:`block` 区块级 / `inline` 行内轻量 | `"block" \| "inline"` | `"block"` |
38
39
  | `spacing` | 留白档位。`loose` 为顶部大留白(列表级空态) | `"none" \| "normal" \| "loose"` | `"normal"` |
39
- | `onRetry` | 重试回调。仅 `status="error"` 生效,传入后整体可点击 | `() => void` | - |
40
+ | `onRetry` | 重试回调。仅 `status="error"` 生效,传入后整体可点击,并自动追加主题色「重试」 | `() => void` | - |
40
41
  | `className` | 自定义类名 | `string` | - |
41
42
  | `style` | 自定义内联样式 | `CSSProperties` | - |
42
43
 
@@ -40,11 +40,40 @@ export default function BasicDemo() {
40
40
 
41
41
  | 属性 | 说明 | 类型 | 默认值 |
42
42
  |------|------|------|--------|
43
+ | `fill` | 撑满 flex / grid 容器分配到的高度,头尾固定布局必传 | `boolean` | `false` |
43
44
  | `type` | 滚动条显示策略 | `"scroll" \| "hover" \| "auto" \| "always"` | `"scroll"` |
44
45
  | `scrollbars` | 滚动条方向 | `"vertical" \| "horizontal" \| "both"` | `"vertical"` |
45
46
  | `scrollbarSize` | 滚动条默认宽度(px) | `number` | `4` |
46
47
  | `scrollbarHoverSize` | 滚动条悬浮时宽度(px) | `number` | `6` |
47
48
  | `scrollHideDelay` | 滚动条隐藏延迟(ms) | `number` | `1000` |
49
+ | `onScroll` | viewport 滚动回调(触底加载等场景) | `UIEventHandler` | - |
50
+ | `viewportRef` | viewport(实际滚动元素)的 ref,用于外部控制滚动位置 | `Ref<HTMLDivElement>` | - |
48
51
  | `className` | 自定义类名 | `string` | - |
49
52
  | `style` | 自定义样式 | `CSSProperties` | - |
50
53
  | `children` | 子内容 | `ReactNode` | - |
54
+
55
+ ### fill:在 flex / grid 容器中撑满高度
56
+
57
+ 上下有固定区块、中间滚动时,三件事都要写,缺一不可:
58
+
59
+ ```tsx
60
+ <div style={{ display: "flex", flexDirection: "column", maxHeight: 300 }}>
61
+ <div>固定头部</div>
62
+ <ScrollArea fill style={{ flex: 1, minHeight: 0 }}>
63
+ <LongList />
64
+ </ScrollArea>
65
+ <div>固定底部</div>
66
+ </div>
67
+ ```
68
+
69
+ | 写法 | 作用 | 漏掉的后果 |
70
+ |------|------|-----------|
71
+ | `fill` | viewport 按 flex 分配结果取高,而非继承外层尺寸 | 列表末尾滚不到,差的正是头尾高度 |
72
+ | `flex: 1` | 占满头尾之外的剩余空间 | 高度由内容决定,不参与空间分配 |
73
+ | `minHeight: 0` | 抵消 flex item 默认的 `min-height: auto` | 内容顶穿外层限高,滚动条不出现 |
74
+
75
+ `fill` 的必要性在于 `inherit` 取的是父级**样式值**而不是布局结果。组件内部默认让 viewport 走 `height: inherit`,当 ScrollArea 作为 flex item 被头尾压缩时,继承到的仍是「含头尾的整高」,viewport 因此比 ScrollArea 自身高出头尾的量。多出的部分被 `overflow: hidden` 裁掉且不在滚动范围内,列表最后一项永远露不全。
76
+
77
+ 开启后组件会占用根节点的 `display`(转为 flex 容器),因此**不要再通过 `className` / `style` 设 `display`**,需要额外布局请在外面包一层。这也是它不做默认值的原因 —— 默认路径下根节点的 `display` 仍归消费方所有。
78
+
79
+ 不在 flex / grid 容器里(自己传 `height` / `maxHeight`,或父级高度确定)时不需要 `fill`,保持默认即可。
@@ -46,6 +46,7 @@ export default function BasicDemo() {
46
46
  | `allowClear` | 是否可清空 | `boolean` | `false` |
47
47
  | `loading` | 是否加载中 | `boolean` | `false` |
48
48
  | `loadError` | 是否加载失败 | `boolean` | `false` |
49
+ | `onRetry` | 加载失败后的重试回调。传入后失败缺省态可点击并追加「重试」 | `() => void` | - |
49
50
  | `size` | 尺寸 | `"sm" \| "md" \| "lg"` | `"md"` |
50
51
  | `suffixIcon` | 后缀图标 | `ReactNode` | - |
51
52
  | `maxTagCount` | 多选模式最多显示 Tag 数 | `number` | - |
@@ -122,7 +122,7 @@ export default function BasicDemo() {
122
122
  | `onToggle` | 切换回调 | `() => void` | - |
123
123
  | `actions` | 右侧操作区插槽 | `ReactNode` | - |
124
124
 
125
- 折叠箭头与操作区悬停显现,展开态箭头常显。
125
+ 折叠箭头与操作区均仅悬停显现,展开态也不常显。
126
126
 
127
127
  ### Sidebar.ListItem
128
128
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  - 导入:`import { Tabs } from "lingee-ui";`
6
6
  - 按需导入:`import { Tabs } from "lingee-ui/tabs";`
7
- - 可用类型:`TabsProps`, `TabItem`, `TabsVariant`, `TabsSize`
7
+ - 可用类型:`TabsProps`, `TabItem`, `TabsVariant`, `TabsSize`, `TabsOverflow`, `TabsScrollOptions`
8
8
 
9
9
  ## 最小示例
10
10
 
@@ -32,10 +32,25 @@ export default function BasicDemo() {
32
32
  | `onChange` | 切换回调 | `(key: string) => void` | - |
33
33
  | `variant` | 风格变体 | `"segmented" \| "rounded" \| "solid" \| "outline" \| "underline"` | `"segmented"` |
34
34
  | `size` | 尺寸 | `"sm" \| "md"` | `"md"` |
35
+ | `overflow` | 溢出策略 | `"none" \| "scroll" \| "wrap"` | `"none"` |
36
+ | `scrollOptions` | 滚动细节配置,仅 `overflow="scroll"` 生效 | `TabsScrollOptions` | - |
35
37
  | `glassy` | 滑块玻璃高光效果 | `boolean` | `false` |
36
38
  | `transparent` | 容器背景透明(去掉灰底) | `boolean` | `false` |
37
39
  | `animated` | 是否开启内容切换动画 | `boolean` | `true` |
38
40
  | `destroyInactivePanel` | 切走时是否销毁非活跃面板 | `boolean` | `false` |
41
+ | `wrap` | 已废弃,改用 `overflow="wrap"` | `boolean` | `false` |
42
+ | `scrollable` | 已废弃,改用 `overflow="scroll"` | `boolean` | `false` |
43
+
44
+ ### TabsScrollOptions
45
+
46
+ | 属性 | 说明 | 类型 | 默认值 |
47
+ |------|------|------|--------|
48
+ | `arrows` | 箭头显示策略:`true` 溢出即显示、`"hover"` 悬浮或聚焦时显示、`false` 不显示 | `boolean \| "hover"` | `true` |
49
+ | `step` | 点击箭头单次滚动距离(px) | `number` | `200` |
50
+ | `fade` | 是否显示边缘渐隐遮罩 | `boolean` | `true` |
51
+ | `scrollIntoView` | 选中项变化时是否自动滚入可视区 | `boolean` | `true` |
52
+
53
+ 传入字面量对象时建议用 `useMemo` 包裹或提到模块级,避免引用每次变化。
39
54
 
40
55
  ### TabItem
41
56
 
@@ -28,6 +28,11 @@ export default function BasicDemo() {
28
28
  | `placement` | 弹出方向 | `"top" \| "bottom" \| "left" \| "right" \| "top-start" \| "top-end" \| ...` | `"top"` |
29
29
  | `delayDuration` | hover 延迟展示时间(ms) | `number` | `200` |
30
30
  | `arrow` | 是否显示箭头 | `boolean` | `true` |
31
- | `maxWidth` | 浮层最大宽度(px) | `number` | `280` |
32
- | `scrollable` | 内容超出视口可用高度时限高并滚动 | `boolean` | `true` |
31
+ | `sideOffset` | 箭头尖端与触发元素的间距(px) | `number` | `4` |
32
+ | `maxWidth` | 浮层最大宽度(px),覆盖档位默认宽度 | `number` | 按档位取 240 / 240 / 320 / 500 |
33
+ | `scrollable` | 内容超出限高时滚动(单行档不生效) | `boolean` | `true` |
33
34
  | `children` | 触发元素 | `ReactNode` | - |
35
+
36
+ :::tip
37
+ 在应用顶层包裹 `LingeeProvider` 后,多个 Tooltip 共享同一个浮层上下文:连续 hover 相邻触发元素时会跳过重复的延迟等待。未包裹时 Tooltip 会各自兜底,功能正常但无此优化。
38
+ :::
@@ -35,7 +35,59 @@ export default function BasicDemo() {
35
35
  | `showFileList` | 是否显示文件列表 | `boolean` | `true` |
36
36
  | `onChange` | 文件列表变化回调 | `(fileList: UploadFile[]) => void` | - |
37
37
  | `onReject` | 校验未通过回调 | `(files: File[], reason: "size" \| "type" \| "count") => void` | - |
38
- | `customRequest` | 自定义上传请求。省略则为仅收集模式 | `(options: CustomRequestOptions) => { abort }` | - |
38
+ | `customRequest` | 自定义上传请求。与 `action` 同时传入时优先 | `(options: CustomRequestOptions) => { abort }` | - |
39
+ | `action` | 上传地址,传入即启用内置 XHR(含真实进度) | `string \| (file) => string \| Promise<string>` | - |
40
+ | `method` | 请求方法。仅 `action` 模式生效 | `"POST" \| "PUT" \| "PATCH"` | `POST` |
41
+ | `headers` | 附加请求头。仅 `action` 模式生效 | `Record<string, string>` | - |
42
+ | `data` | 附加表单字段。仅 `action` 模式生效 | `Record<string, unknown> \| (file) => Record<string, unknown>` | - |
43
+ | `name` | 表单中文件字段名。仅 `action` 模式生效 | `string` | `file` |
44
+ | `withCredentials` | 跨域是否带 cookie。仅 `action` 模式生效 | `boolean` | `false` |
45
+ | `directory` | 是否选择文件夹(拖拽时递归遍历子目录) | `boolean` | `false` |
46
+ | `beforeUpload` | 上传前钩子,返回 `false` 阻止、返回 `File`/`Blob` 替换待传文件 | `(file, fileList) => boolean \| File \| Blob \| Promise<...>` | - |
39
47
  | `pasteable` | 是否支持粘贴文件(如截图) | `boolean` | `false` |
40
48
  | `validateAccept` | 是否按 `accept` 校验类型,拦住拖拽与粘贴 | `boolean` | `false` |
41
49
  | `children` | 触发区域 | `ReactNode` | - |
50
+
51
+ ## 内置 XHR 上传
52
+
53
+ 传入 `action` 即启用内置请求,无需自行实现 `customRequest`,进度来自真实的 XHR `progress` 事件:
54
+
55
+ ```tsx
56
+ <Upload
57
+ action="/api/upload"
58
+ name="file"
59
+ headers={{ Authorization: `Bearer ${token}` }}
60
+ data={(file) => ({ filename: file.name })}
61
+ onChange={setFileList}
62
+ >
63
+ <Button>上传</Button>
64
+ </Upload>
65
+ ```
66
+
67
+ ## 上传前处理文件
68
+
69
+ `beforeUpload` 在内置校验(类型/数量/大小)通过之后执行。返回 `File` 或 `Blob` 可替换实际上传的文件,用于压缩、转格式等场景;原始文件仍保留在 `originFile` 上:
70
+
71
+ ```tsx
72
+ <Upload
73
+ action="/api/upload"
74
+ beforeUpload={async (file) => {
75
+ if (!file.type.startsWith("image/")) return true;
76
+ return await compressImage(file);
77
+ }}
78
+ >
79
+ <Button>上传图片</Button>
80
+ </Upload>
81
+ ```
82
+
83
+ 返回 `false` 或 reject 则阻止该文件上传。
84
+
85
+ ## 文件夹上传
86
+
87
+ `directory` 开启后点击选择整个目录,拖拽时递归遍历子目录。目录内的文件不经过选择器,组件会强制按 `accept` 过滤:
88
+
89
+ ```tsx
90
+ <Upload directory accept=".png,.jpg" onChange={setFileList}>
91
+ <Button>选择文件夹</Button>
92
+ </Upload>
93
+ ```
@@ -1,6 +1,6 @@
1
1
  # 图标索引
2
2
 
3
- 图标库 `1.0.16`。图标名为 PascalCase,直接作为 React 组件名从 `lingee-icon` 导入。
3
+ 图标库 `1.0.17`。图标名为 PascalCase,直接作为 React 组件名从 `lingee-icon` 导入。
4
4
 
5
5
  ```tsx
6
6
  import { Search } from "lingee-icon";
@@ -12,7 +12,7 @@ import { Search } from "lingee-icon";
12
12
 
13
13
  ---
14
14
 
15
- 共 967 个图标,27 个分类。图标名为 PascalCase,可直接作为 React 组件名或 SVG Sprite `<use href="#IconName">` 的引用 ID。
15
+ 共 969 个图标,27 个分类。图标名为 PascalCase,可直接作为 React 组件名或 SVG Sprite `<use href="#IconName">` 的引用 ID。
16
16
 
17
17
  ## 通用类(49)
18
18
 
@@ -68,7 +68,7 @@ import { Search } from "lingee-icon";
68
68
  | ZoomIn | 放大 |
69
69
  | ZoomOut | 缩小 |
70
70
 
71
- ## 符号标识(43)
71
+ ## 符号标识(44)
72
72
 
73
73
  | 图标名 | 语义/用途 |
74
74
  |--------|----------|
@@ -79,6 +79,7 @@ import { Search } from "lingee-icon";
79
79
  | Check2Circle1 | 圆形勾选(缺口) |
80
80
  | Check2Square | 方形勾选(缺口) |
81
81
  | CheckCircleFill | 圆形勾选(选中) — 成功 |
82
+ | CheckSmall | 小号勾/确认(细) |
82
83
  | CheckSquare | 方形勾选 |
83
84
  | CheckSquareFill | 方形勾选(选中) |
84
85
  | CheckboxUnselected | 复选未选中 |
@@ -116,7 +117,7 @@ import { Search } from "lingee-icon";
116
117
  | XSquare | 方形关闭 |
117
118
  | XSquareFill | 方形关闭(实心) |
118
119
 
119
- ## 箭头&方向(134)
120
+ ## 箭头&方向(135)
120
121
 
121
122
  | 图标名 | 语义/用途 |
122
123
  |--------|----------|
@@ -162,6 +163,7 @@ import { Search } from "lingee-icon";
162
163
  | ArrowUpLeft | 左上箭头 |
163
164
  | ArrowUpNarrowWide | 窄到宽升序 |
164
165
  | ArrowUpRight | 右上箭头 |
166
+ | ArrowUpRight1 | 右上箭头 2 |
165
167
  | ArrowUpToLine | 内容置顶 2 |
166
168
  | ArrowUpWideNarrow | 宽到窄升序 |
167
169
  | ArrowUpZA | 字母升序Z-A |
@@ -289,7 +291,7 @@ import { Search } from "lingee-icon";
289
291
  | 图标名 | 语义/用途 |
290
292
  |--------|----------|
291
293
  | Agent | 智能体 |
292
- | Agent1 | 智能体-闭眼 |
294
+ | Agent1 | 智能体-休眠(闭眼+z) |
293
295
  | AiEditor | AI编辑器 |
294
296
  | AiLogo | AI标识 |
295
297
  | Analyze | 分析 |
@@ -1,6 +1,6 @@
1
1
  # 接入指南
2
2
 
3
- 组件库 `0.0.9` | 图标库 `1.0.16`
3
+ 组件库 `0.0.11` | 图标库 `1.0.17`
4
4
 
5
5
  ## 安装
6
6
 
@@ -36,7 +36,7 @@ import "lingee-ui/styles.css";
36
36
  import { LingeeProvider } from "lingee-ui";
37
37
 
38
38
  createRoot(document.getElementById("root")!).render(
39
- <LingeeProvider locale="zh-CN">
39
+ <LingeeProvider>
40
40
  <App />
41
41
  </LingeeProvider>,
42
42
  );
@@ -44,6 +44,18 @@ createRoot(document.getElementById("root")!).render(
44
44
 
45
45
  未包 Provider 时 `toast.*` 不会显示,组件内置文案也无法本地化。
46
46
 
47
+ `locale` 接收**语言包对象**(不是 `"zh-CN"` 这样的字符串),默认中文,切换英文需显式传入 `enUS`:
48
+
49
+ ```tsx
50
+ import { LingeeProvider, enUS } from "lingee-ui";
51
+
52
+ <LingeeProvider locale={enUS}>
53
+ <App />
54
+ </LingeeProvider>;
55
+ ```
56
+
57
+ 需要在业务代码里复用组件库文案时,用 `useLocale()` 取完整语言包,或 `useComponentLocale("Pagination")` 取单个组件的片段。
58
+
47
59
  ## 暗色模式
48
60
 
49
61
  给 `<html>` 加 `data-theme="dark"`,全部语义 Token 自动切换:
@@ -1,6 +1,6 @@
1
1
  # 语义 Token 全表
2
2
 
3
- 组件库 `0.0.9`。仅列语义层(`--lg-g-*`)。
3
+ 组件库 `0.0.11`。仅列语义层(`--lg-g-*`)。
4
4
 
5
5
  亮色与暗色**变量名完全相同**,给 `<html>` 加 `data-theme="dark"` 即自动切换,业务代码只写一次。
6
6
 
@@ -24,7 +24,7 @@
24
24
  | `var(--lg-g-fg-color-violet-default)` | ~~`--lg-g-fg-color-violet-defauit`~~ |
25
25
  | `var(--lg-g-bg-color-emerald-translucent-soft)` | ~~`--lg-g-bg-color-emeraid-translucent-soft`~~ |
26
26
 
27
- ## 前景色 fg(color / fill / stroke)(34)
27
+ ## 前景色 fg(color / fill / stroke)(47)
28
28
 
29
29
  | Token | 亮色 | 暗色 |
30
30
  |-------|------|------|
@@ -62,8 +62,21 @@
62
62
  | `var(--lg-g-fg-color-emerald-default)` | `#009D72` | `#009D72` |
63
63
  | `var(--lg-g-fg-color-lime-default)` | `#5FBA04` | `#5FBA04` |
64
64
  | `var(--lg-g-fg-color-violet-default)` | `#572FF7` | `#572FF7` |
65
-
66
- ## 背景色 bg(background)(92)
65
+ | `var(--lg-g-fg-color-warning-low)` | `#FF8D42` | `#FF8D42` |
66
+ | `var(--lg-g-fg-color-success-low)` | `#08CC50` | `#08CC50` |
67
+ | `var(--lg-g-fg-color-amber-low)` | `#FFB200` | `#FFB200` |
68
+ | `var(--lg-g-fg-color-teal-low)` | `#00E5E5` | `#00E5E5` |
69
+ | `var(--lg-g-fg-color-purple-low)` | `#8F40FF` | `#8F40FF` |
70
+ | `var(--lg-g-fg-color-indigo-low)` | `#5155F6` | `#5155F6` |
71
+ | `var(--lg-g-fg-color-yellow-low)` | `#FFE500` | `#FFE500` |
72
+ | `var(--lg-g-fg-color-cyan-low)` | `#00A3F4` | `#00A3F4` |
73
+ | `var(--lg-g-fg-color-pink-low)` | `#FF246D` | `#FF246D` |
74
+ | `var(--lg-g-fg-color-fuchsia-low)` | `#F858D0` | `#F858D0` |
75
+ | `var(--lg-g-fg-color-emerald-low)` | `#08C787` | `#08C787` |
76
+ | `var(--lg-g-fg-color-lime-low)` | `#74D70B` | `#74D70B` |
77
+ | `var(--lg-g-fg-color-violet-low)` | `#7858F9` | `#7858F9` |
78
+
79
+ ## 背景色 bg(background)(99)
67
80
 
68
81
  | Token | 亮色 | 暗色 |
69
82
  |-------|------|------|
@@ -158,9 +171,16 @@
158
171
  | `var(--lg-g-bg-color-violet-default)` | `#572FF7` | `#572FF7` |
159
172
  | `var(--lg-g-bg-color-fuchsia-translucent-soft)` | `rgba(248, 88, 208, 0.08)` | `rgba(248, 88, 208, 0.08)` |
160
173
  | `var(--lg-g-bg-color-fuchsia-default)` | `#ED1DB9` | `#ED1DB9` |
161
- | `var(--lg-g-bg-color-page-default)` | `#F7F7FA` | `#1A1A1A` |
174
+ | `var(--lg-g-bg-color-page-default)` | `#F7F7FA` | `#191A1B` |
175
+ | `var(--lg-g-bg-color-white)` | `#FAFAFA` | `#191A1B` |
176
+ | `var(--lg-g-bg-color-navigation)` | `#F1F1F6` | `#191A1B` |
177
+ | `var(--lg-g-bg-color-white-tabs)` | `#FFFFFF` | `rgba(255, 255, 255, 0.28)` |
178
+ | `var(--lg-g-bg-color-white-default)` | `rgba(255, 255, 255, 0.46)` | `rgba(0, 0, 0, 0.46)` |
179
+ | `var(--lg-g-bg-color-success-translucent-subtle)` | `rgba(8, 204, 80, 0.06)` | `rgba(8, 204, 80, 0.06)` |
180
+ | `var(--lg-g-bg-color-blue-translucent-subtle)` | `rgba(77, 137, 255, 0.06)` | `rgba(77, 137, 255, 0.06)` |
181
+ | `var(--lg-g-bg-color-blue-translucent-muted)` | `rgba(77, 137, 255, 0.12)` | `rgba(77, 137, 255, 0.28)` |
162
182
 
163
- ## 边框色 border(border-color / outline)(27)
183
+ ## 边框色 border(border-color / outline)(42)
164
184
 
165
185
  | Token | 亮色 | 暗色 |
166
186
  |-------|------|------|
@@ -191,6 +211,21 @@
191
211
  | `var(--lg-g-border-color-blue-translucent-soft)` | `rgba(77, 137, 255, 0.08)` | `rgba(77, 137, 255, 0.08)` |
192
212
  | `var(--lg-g-border-color-blue-subtle)` | `#E4EEFF` | `#183F96` |
193
213
  | `var(--lg-g-border-color-blue-default)` | `#2970FF` | `#2970FF` |
214
+ | `var(--lg-g-border-color-black-default)` | `rgba(0, 0, 0, 0.46)` | `rgba(255, 255, 255, 0.46)` |
215
+ | `var(--lg-g-border-color-warning-translucent-muted)` | `rgba(255, 119, 0, 0.12)` | `rgba(255, 119, 0, 0.12)` |
216
+ | `var(--lg-g-border-color-danger-translucent-muted)` | `rgba(255, 41, 59, 0.12)` | `rgba(255, 41, 59, 0.12)` |
217
+ | `var(--lg-g-border-color-success-translucent-muted)` | `rgba(8, 204, 80, 0.12)` | `rgba(8, 204, 80, 0.12)` |
218
+ | `var(--lg-g-border-color-blue-translucent-default)` | `rgba(77, 137, 255, 0.12)` | `rgba(77, 137, 255, 0.12)` |
219
+ | `var(--lg-g-border-color-amber-default)` | `#E28800` | `#E28800` |
220
+ | `var(--lg-g-border-color-teal-default)` | `#00BFB8` | `#00BFB8` |
221
+ | `var(--lg-g-border-color-emerald-default)` | `#009D72` | `#009D72` |
222
+ | `var(--lg-g-border-color-lime-default)` | `#5FBA04` | `#5FBA04` |
223
+ | `var(--lg-g-border-color-cyan-default)` | `#0083D4` | `#0083D4` |
224
+ | `var(--lg-g-border-color-purple-default)` | `#7F2AF3` | `#7F2AF3` |
225
+ | `var(--lg-g-border-color-indigo-default)` | `#4343F5` | `#4343F5` |
226
+ | `var(--lg-g-border-color-violet-default)` | `#572FF7` | `#572FF7` |
227
+ | `var(--lg-g-border-color-fuchsia-default)` | `#ED1DB9` | `#ED1DB9` |
228
+ | `var(--lg-g-border-color-pink-default)` | `#ED1165` | `#ED1165` |
194
229
 
195
230
  ## 其他(3)
196
231
 
@@ -1,2 +0,0 @@
1
- 'use strict';var chunkWAYZVZQB_js=require('./chunk-WAYZVZQB.js'),chunkDCDWEVW4_js=require('./chunk-DCDWEVW4.js'),_e=require('react'),Pe=require('@rc-component/tree'),lingeeIcon=require('lingee-icon'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var _e__default=/*#__PURE__*/_interopDefault(_e);var Pe__default=/*#__PURE__*/_interopDefault(Pe);var I=_e__default.default.forwardRef(({className:e,size:r="md",spinning:o=true,children:n,tip:a,...c},s)=>{let p=chunkWAYZVZQB_js.g("Spin"),i=n!=null,g=jsxRuntime.jsx("div",{className:"lg-spin__indicator"});return i?jsxRuntime.jsxs("div",{ref:s,className:chunkDCDWEVW4_js.a("lg-spin","lg-spin--nested",e),...c,children:[jsxRuntime.jsx("div",{className:chunkDCDWEVW4_js.a("lg-spin__content",o&&"lg-spin__content--loading"),children:n}),o&&jsxRuntime.jsxs("div",{className:"lg-spin__overlay",role:"status","aria-label":a||p.loading,children:[jsxRuntime.jsx("div",{className:chunkDCDWEVW4_js.a("lg-spin",`lg-spin--${r}`),children:g}),a&&jsxRuntime.jsx("span",{className:"lg-spin__tip",children:a})]})]}):jsxRuntime.jsx("div",{ref:s,className:chunkDCDWEVW4_js.a("lg-spin",`lg-spin--${r}`,!o&&"lg-spin--paused",e),role:"status","aria-label":a||p.loading,...c,children:g})});I.displayName="Spin";var Ne={block:16,inline:14};function Te(e,r){switch(e){case "loading":return jsxRuntime.jsx(lingeeIcon.LoaderCircle,{size:r,spin:true});case "error":return jsxRuntime.jsx(lingeeIcon.ExclamationCircle,{size:r});default:return jsxRuntime.jsx(lingeeIcon.Inbox,{size:r})}}var R=_e__default.default.forwardRef(({status:e,description:r,icon:o,variant:n="block",spacing:a="normal",onRetry:c,className:s,style:p,...i},g)=>{let _=Ne[n],v=o===null?null:o??Te(e,_),k=e==="error"&&typeof c=="function",h=chunkDCDWEVW4_js.a("lg-empty-card",`lg-empty-card--${n}`,`lg-empty-card--${e}`,`lg-empty-card--spacing-${a}`,k&&"lg-empty-card--retryable",s),w=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[v&&jsxRuntime.jsx("span",{className:"lg-empty-card__icon","aria-hidden":"true",children:v}),jsxRuntime.jsx("span",{className:"lg-empty-card__text",children:r})]});return k?jsxRuntime.jsx("button",{ref:g,type:"button",className:h,style:p,onClick:c,...i,children:w}):jsxRuntime.jsx("div",{ref:g,className:h,style:p,role:e==="empty"?void 0:"status","aria-live":e==="empty"?void 0:"polite",...i,children:w})});R.displayName="Empty.Card";var F="lg-empty-gradient",V=`url(#${F})`,U=0,C=null;function Re(){if(U++>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="${F}" x1="12" y1="2" x2="12" y2="22" gradientUnits="userSpaceOnUse"><stop stop-color="rgba(0,0,0,0.28)"/><stop offset="1" stop-color="rgba(0,0,0,0.12)"/></linearGradient></defs>`,document.body.appendChild(e),C=e;}function Le(){--U>0||C&&(C.remove(),C=null);}var Ae={lg:56,md:24,sm:16};function Ke(e){return typeof e=="function"||typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var Z=_e__default.default.forwardRef(({size:e="md",icon:r,description:o,className:n,style:a,...c},s)=>{_e.useEffect(()=>(Re(),Le),[]);let p=Ae[e],i;return r?Ke(r)?i=jsxRuntime.jsx(r,{size:p,fill:V}):i=r:i=jsxRuntime.jsx(lingeeIcon.DocumentLibrary,{size:p,fill:V}),jsxRuntime.jsxs("div",{ref:s,className:chunkDCDWEVW4_js.a("lg-empty",`lg-empty--${e}`,n),style:a,...c,children:[jsxRuntime.jsx("span",{className:"lg-empty__icon",children:i}),jsxRuntime.jsx("span",{className:"lg-empty__text",children:o})]})});Z.displayName="Empty";var X=Object.assign(Z,{Card:R});var $e={sm:30,md:34,lg:38},L=()=>({height:0,opacity:0}),J=e=>{let r=Array.from(e.children);return r.length===0?0:r.reduce((o,n)=>{let a=parseFloat(getComputedStyle(n).marginTop)||0;return o+n.getBoundingClientRect().height+a},0)},q=e=>({height:J(e),opacity:1}),je={motionName:"lg-tree-motion",motionDeadline:300,onAppearStart:L,onAppearActive:q,onEnterStart:L,onEnterActive:q,onLeaveStart:e=>({height:J(e),opacity:1}),onLeaveActive:L},Be=_e__default.default.forwardRef((e,r)=>{let{treeData:o,fieldNames:n,size:a="md",expandedKeys:c,defaultExpandedKeys:s,defaultExpandAll:p,autoExpandParent:i,expandAction:g="click",onExpand:_,selectable:v=true,multiple:k=false,selectedKeys:h,defaultSelectedKeys:w,onSelect:A,checkable:K=false,checkStrictly:Q=false,checkedKeys:M,defaultCheckedKeys:W,onCheck:H,showIcon:Y=false,icon:u,switcherIcon:b,indentGuide:ee="line",titleRender:te,loadData:re,loadedKeys:P,draggable:E=false,allowDrop:S,onDrop:G,height:oe,itemHeight:ne,virtual:ae,disabled:$=false,loading:j=false,empty:ie,onRightClick:le,animated:de=true,className:ce,style:pe}=e,se=chunkWAYZVZQB_js.g("Tree"),ge=_e.useMemo(()=>{if(u)return typeof u!="function"?u:t=>u(t.data,{expanded:!!t.expanded,isLeaf:!!t.isLeaf})},[u]),me=_e.useMemo(()=>b!==void 0?typeof b!="function"?b:t=>b({expanded:!!t.expanded,isLeaf:!!t.isLeaf}):t=>t.isLeaf?null:jsxRuntime.jsx(lingeeIcon.ChevronDown,{className:"lg-tree__switcher-icon",size:16,"aria-hidden":true}),[b]),ye=_e.useMemo(()=>{if(E)return {icon:false,nodeDraggable:typeof E=="function"?t=>E(t):void 0}},[E]),fe=_e.useCallback((t,l)=>{_?.(t,{node:l.node,expanded:l.expanded});},[_]),he=_e.useCallback((t,l)=>{A?.(t,{node:l.node,selected:l.selected,selectedNodes:l.selectedNodes});},[A]),ue=_e.useCallback((t,l)=>{H?.(t,{node:l.node,checked:l.checked,checkedNodes:l.checkedNodes,halfCheckedKeys:l.halfCheckedKeys});},[H]),be=_e.useCallback(t=>{G?.({dragNode:t.dragNode,node:t.node,dropPosition:t.dropPosition,dropToGap:t.dropToGap});},[G]),B=_e.useMemo(()=>{if(S)return t=>S({dragNode:t.dragNode,dropNode:t.dropNode,dropPosition:t.dropPosition})},[S]),xe=!o||o.length===0,y={};return c!==void 0&&(y.expandedKeys=c),h!==void 0&&(y.selectedKeys=h),M!==void 0&&(y.checkedKeys=M),P!==void 0&&(y.loadedKeys=P),B!==void 0&&(y.allowDrop=B),jsxRuntime.jsxs("div",{ref:r,className:chunkDCDWEVW4_js.a("lg-tree",`lg-tree--${a}`,`lg-tree--guide-${ee}`,K&&"lg-tree--checkable",$&&"lg-tree--disabled",j&&"lg-tree--loading",ce),style:pe,children:[j&&jsxRuntime.jsx("div",{className:"lg-tree__loading-mask",children:jsxRuntime.jsx(I,{size:"md"})}),xe?jsxRuntime.jsx("div",{className:"lg-tree__empty",children:ie??jsxRuntime.jsx(X,{size:"sm",description:se.empty})}):jsxRuntime.jsx(Pe__default.default,{prefixCls:"lg-tree",treeData:o,fieldNames:n,defaultExpandedKeys:s,defaultExpandAll:p,autoExpandParent:i,expandAction:g,onExpand:fe,selectable:v,multiple:k,defaultSelectedKeys:w,onSelect:he,checkable:K,checkStrictly:Q,defaultCheckedKeys:W,onCheck:ue,showIcon:Y,icon:ge,switcherIcon:me,titleRender:te,loadData:re,draggable:ye,onDrop:be,height:oe,itemHeight:ne??$e[a],virtual:ae,disabled:$,onRightClick:le,motion:de?je:void 0,...y})]})});Be.displayName="Tree";
2
- exports.a=R;exports.b=X;exports.c=I;exports.d=Be;
@@ -1 +0,0 @@
1
- import {a}from'./chunk-DN2VKVCV.mjs';import i from'react';import*as o from'@radix-ui/react-popover';import {jsx}from'react/jsx-runtime';function R({children:r,open:e,defaultOpen:a,onOpenChange:t,modal:n=false}){return jsx(o.Root,{open:e,defaultOpen:a,onOpenChange:t,modal:n,children:r})}R.displayName="Popover";var w=i.forwardRef(({children:r,asChild:e=true,...a},t)=>jsx(o.Trigger,{ref:t,asChild:e,...a,children:r}));w.displayName="PopoverTrigger";var C=i.forwardRef(({children:r,asChild:e=true,...a},t)=>jsx(o.Anchor,{ref:t,asChild:e,...a,children:r}));C.displayName="PopoverAnchor";var A=i.forwardRef(({children:r,className:e,side:a$1="bottom",align:t="center",sideOffset:n=4,alignOffset:d=0,container:l,collisionPadding:P=8,onEscapeKeyDown:m,onPointerDownOutside:f,onFocusOutside:g,onInteractOutside:c,onOpenAutoFocus:u,onCloseAutoFocus:x,...y},h)=>{let v=jsx(o.Content,{ref:h,className:a("lg-popover",e),side:a$1,align:t,sideOffset:n,alignOffset:d,collisionPadding:P,onEscapeKeyDown:m,onPointerDownOutside:f,onFocusOutside:g,onInteractOutside:c,onOpenAutoFocus:u,onCloseAutoFocus:x,...y,children:r});return l===null?v:jsx(o.Portal,{container:l,children:v})});A.displayName="PopoverContent";var b=i.forwardRef(({className:r,width:e=10,height:a$1=5,...t},n)=>jsx(o.Arrow,{ref:n,className:a("lg-popover__arrow",r),width:e,height:a$1,...t}));b.displayName="PopoverArrow";var T=i.forwardRef(({children:r,asChild:e=true,...a},t)=>jsx(o.Close,{ref:t,asChild:e,...a,children:r}));T.displayName="PopoverClose";export{R as a,w as b,C as c,A as d,b as e,T as f};
@@ -1 +0,0 @@
1
- import {a as a$1}from'./chunk-DN2VKVCV.mjs';import E,{createContext,useContext}from'react';import {Toaster,toast}from'sonner';import {ExclamationTriangle,ExclamationCircle,Check2Circle,Information1,XLg}from'lingee-icon';import {jsx,jsxs}from'react/jsx-runtime';var v={locale:"zh-CN",Button:{},Breadcrumb:{more:"\u66F4\u591A",back:"\u8FD4\u56DE"},Select:{loading:"\u52A0\u8F7D\u4E2D",loadError:"\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",notFound:"\u641C\u7D22\u65E0\u7ED3\u679C",clear:"\u6E05\u7A7A"},Dropdown:{clear:"\u6E05\u9664",loading:"\u52A0\u8F7D\u4E2D",loadError:"\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",empty:"\u6682\u65E0\u6570\u636E"},Tabs:{scrollLeft:"\u5411\u5DE6\u6EDA\u52A8",scrollRight:"\u5411\u53F3\u6EDA\u52A8"},Form:{required:"{label}\u4E0D\u80FD\u4E3A\u7A7A",requiredNoLabel:"\u6B64\u9879\u4E0D\u80FD\u4E3A\u7A7A"},Tag:{close:"\u5173\u95ED"},Upload:{retry:"\u91CD\u65B0\u4E0A\u4F20",remove:"\u79FB\u9664\u6587\u4EF6",removeShort:"\u79FB\u9664",dragText:"\u62D6\u62FD\u6587\u4EF6\u5230\u6B64\u5904\uFF0C\u6216",clickUpload:"\u70B9\u51FB\u4E0A\u4F20"},ColorPicker:{placeholder:"\u8BF7\u9009\u62E9\u989C\u8272"},DatePicker:{placeholder:"\u5E74/\u6708/\u65E5",today:"\u4ECA\u5929",prevYear:"\u4E0A\u4E00\u5E74",nextYear:"\u4E0B\u4E00\u5E74",prevMonth:"\u4E0A\u4E00\u6708",nextMonth:"\u4E0B\u4E00\u6708",prevDecade:"\u4E0A\u4E00\u7EC4\u5E74\u4EFD",nextDecade:"\u4E0B\u4E00\u7EC4\u5E74\u4EFD",months:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],yearFormat:"{year}\u5E74",monthFormat:"{month}\u6708"},RangePicker:{startPlaceholder:"\u5E74/\u6708/\u65E5",endPlaceholder:"\u5E74/\u6708/\u65E5"},TimePicker:{now:"\u73B0\u5728",confirm:"\u786E\u5B9A",placeholder:"\u65F6:\u5206",placeholderFull:"\u65F6:\u5206:\u79D2"},Table:{empty:"\u6682\u65E0\u6570\u636E"},Tree:{empty:"\u6682\u65E0\u6570\u636E"},Pagination:{total:"\u5171 {total} \u6761",prevPage:"\u4E0A\u4E00\u9875",nextPage:"\u4E0B\u4E00\u9875",itemsPerPage:"{size}\u6761/\u9875",jumpTo:"\u8DF3\u81F3",page:"\u9875"},Dialog:{close:"\u5173\u95ED"},Drawer:{close:"\u5173\u95ED"},Input:{clear:"\u6E05\u7A7A",expand:"\u5C55\u5F00\u8F93\u5165\u6846"},Alert:{close:"\u5173\u95ED"},Toast:{close:"\u5173\u95ED\u6D88\u606F"},Spin:{loading:"\u52A0\u8F7D\u4E2D"}},l=v;var T={locale:"en-US",Button:{},Breadcrumb:{more:"More",back:"Back"},Select:{loading:"Loading",loadError:"Failed to load, please retry",notFound:"No results found",clear:"Clear"},Dropdown:{clear:"Clear",loading:"Loading",loadError:"Failed to load, please retry",empty:"No data"},Tabs:{scrollLeft:"Scroll left",scrollRight:"Scroll right"},Form:{required:"{label} is required",requiredNoLabel:"This field is required"},Tag:{close:"Close"},Upload:{retry:"Retry upload",remove:"Remove file",removeShort:"Remove",dragText:"Drag files here, or ",clickUpload:"click to upload"},ColorPicker:{placeholder:"Select a color"},DatePicker:{placeholder:"YYYY/MM/DD",today:"Today",prevYear:"Previous year",nextYear:"Next year",prevMonth:"Previous month",nextMonth:"Next month",prevDecade:"Previous decade",nextDecade:"Next decade",months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],yearFormat:"{year}",monthFormat:"{month}"},RangePicker:{startPlaceholder:"Start date",endPlaceholder:"End date"},TimePicker:{now:"Now",confirm:"OK",placeholder:"HH:mm",placeholderFull:"HH:mm:ss"},Table:{empty:"No data"},Tree:{empty:"No data"},Pagination:{total:"{total} items",prevPage:"Previous page",nextPage:"Next page",itemsPerPage:"{size} / page",jumpTo:"Go to",page:""},Dialog:{close:"Close"},Drawer:{close:"Close"},Input:{clear:"Clear",expand:"Expand input"},Alert:{close:"Close"},Toast:{close:"Close message"},Spin:{loading:"Loading"}},C=T;var m=createContext(l);function w({locale:o=l,children:e}){return jsxs(m.Provider,{value:o,children:[e,jsx(g,{})]})}w.displayName="LingeeProvider";function N(){return useContext(m)}function u(o){return N()[o]}var I={info:jsx(Information1,{size:20}),success:jsx(Check2Circle,{size:20}),warning:jsx(ExclamationCircle,{size:20}),error:jsx(ExclamationTriangle,{size:20})};function f({type:o,content:e,icon:t,closable:i,className:c,onClose:d}){let h=u("Toast"),y=()=>{if(t===null)return null;let b=t!==void 0?t:I[o];return jsx("span",{className:"lg-toast__icon",children:b})};return jsxs("div",{className:a$1("lg-toast",`lg-toast--${o}`,c),children:[y(),jsx("span",{className:"lg-toast__content",children:e}),i&&jsx("button",{className:"lg-toast__close",onClick:d,"aria-label":h.close,type:"button",children:jsx(XLg,{size:16})})]})}var a={};function g(){let o=a.top??16;return jsx(Toaster,{position:"top-center",offset:o,gap:8,closeButton:false,toastOptions:{unstyled:true,className:"lg-toast-wrapper"},style:{"--width":"560px"}})}function A(o){let e=o[0];return typeof e=="object"&&e!==null&&!E.isValidElement(e)?e:{content:e,duration:o[1],onClose:o[2]}}function U(o,e){let t=e.duration!==void 0?e.duration<0?a.duration??3e3:e.duration:a.duration??3e3,i=t===0?1/0:t,c=toast.custom(d=>jsx(f,{type:o,content:e.content,icon:e.icon,closable:e.closable,className:e.className,onClose:()=>toast.dismiss(d)}),{...e.key!==void 0&&{id:e.key},duration:i,onAutoClose:()=>e.onClose?.(),onDismiss:()=>e.onClose?.()});return ()=>toast.dismiss(c)}function n(o){return (...e)=>{let t=A(e);return U(o,t)}}var se={info:n("info"),success:n("success"),warning:n("warning"),error:n("error"),destroy:()=>toast.dismiss(),config:o=>{a={...a,...o};}};export{g as a,se as b,l as c,C as d,w as e,N as f,u as g};
@@ -1,2 +0,0 @@
1
- import {g}from'./chunk-H7GT6UT4.mjs';import {a}from'./chunk-DN2VKVCV.mjs';import _e,{useEffect,useMemo,useCallback}from'react';import Pe from'@rc-component/tree';import {DocumentLibrary,ChevronDown,Inbox,ExclamationCircle,LoaderCircle}from'lingee-icon';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var I=_e.forwardRef(({className:e,size:r="md",spinning:o=true,children:n,tip:a$1,...c},s)=>{let p=g("Spin"),i=n!=null,g$1=jsx("div",{className:"lg-spin__indicator"});return i?jsxs("div",{ref:s,className:a("lg-spin","lg-spin--nested",e),...c,children:[jsx("div",{className:a("lg-spin__content",o&&"lg-spin__content--loading"),children:n}),o&&jsxs("div",{className:"lg-spin__overlay",role:"status","aria-label":a$1||p.loading,children:[jsx("div",{className:a("lg-spin",`lg-spin--${r}`),children:g$1}),a$1&&jsx("span",{className:"lg-spin__tip",children:a$1})]})]}):jsx("div",{ref:s,className:a("lg-spin",`lg-spin--${r}`,!o&&"lg-spin--paused",e),role:"status","aria-label":a$1||p.loading,...c,children:g$1})});I.displayName="Spin";var Ne={block:16,inline:14};function Te(e,r){switch(e){case "loading":return jsx(LoaderCircle,{size:r,spin:true});case "error":return jsx(ExclamationCircle,{size:r});default:return jsx(Inbox,{size:r})}}var R=_e.forwardRef(({status:e,description:r,icon:o,variant:n="block",spacing:a$1="normal",onRetry:c,className:s,style:p,...i},g)=>{let _=Ne[n],v=o===null?null:o??Te(e,_),k=e==="error"&&typeof c=="function",h=a("lg-empty-card",`lg-empty-card--${n}`,`lg-empty-card--${e}`,`lg-empty-card--spacing-${a$1}`,k&&"lg-empty-card--retryable",s),w=jsxs(Fragment,{children:[v&&jsx("span",{className:"lg-empty-card__icon","aria-hidden":"true",children:v}),jsx("span",{className:"lg-empty-card__text",children:r})]});return k?jsx("button",{ref:g,type:"button",className:h,style:p,onClick:c,...i,children:w}):jsx("div",{ref:g,className:h,style:p,role:e==="empty"?void 0:"status","aria-live":e==="empty"?void 0:"polite",...i,children:w})});R.displayName="Empty.Card";var F="lg-empty-gradient",V=`url(#${F})`,U=0,C=null;function Re(){if(U++>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="${F}" x1="12" y1="2" x2="12" y2="22" gradientUnits="userSpaceOnUse"><stop stop-color="rgba(0,0,0,0.28)"/><stop offset="1" stop-color="rgba(0,0,0,0.12)"/></linearGradient></defs>`,document.body.appendChild(e),C=e;}function Le(){--U>0||C&&(C.remove(),C=null);}var Ae={lg:56,md:24,sm:16};function Ke(e){return typeof e=="function"||typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var Z=_e.forwardRef(({size:e="md",icon:r,description:o,className:n,style:a$1,...c},s)=>{useEffect(()=>(Re(),Le),[]);let p=Ae[e],i;return r?Ke(r)?i=jsx(r,{size:p,fill:V}):i=r:i=jsx(DocumentLibrary,{size:p,fill:V}),jsxs("div",{ref:s,className:a("lg-empty",`lg-empty--${e}`,n),style:a$1,...c,children:[jsx("span",{className:"lg-empty__icon",children:i}),jsx("span",{className:"lg-empty__text",children:o})]})});Z.displayName="Empty";var X=Object.assign(Z,{Card:R});var $e={sm:30,md:34,lg:38},L=()=>({height:0,opacity:0}),J=e=>{let r=Array.from(e.children);return r.length===0?0:r.reduce((o,n)=>{let a=parseFloat(getComputedStyle(n).marginTop)||0;return o+n.getBoundingClientRect().height+a},0)},q=e=>({height:J(e),opacity:1}),je={motionName:"lg-tree-motion",motionDeadline:300,onAppearStart:L,onAppearActive:q,onEnterStart:L,onEnterActive:q,onLeaveStart:e=>({height:J(e),opacity:1}),onLeaveActive:L},Be=_e.forwardRef((e,r)=>{let{treeData:o,fieldNames:n,size:a$1="md",expandedKeys:c,defaultExpandedKeys:s,defaultExpandAll:p,autoExpandParent:i,expandAction:g$1="click",onExpand:_,selectable:v=true,multiple:k=false,selectedKeys:h,defaultSelectedKeys:w,onSelect:A,checkable:K=false,checkStrictly:Q=false,checkedKeys:M,defaultCheckedKeys:W,onCheck:H,showIcon:Y=false,icon:u,switcherIcon:b,indentGuide:ee="line",titleRender:te,loadData:re,loadedKeys:P,draggable:E=false,allowDrop:S,onDrop:G,height:oe,itemHeight:ne,virtual:ae,disabled:$=false,loading:j=false,empty:ie,onRightClick:le,animated:de=true,className:ce,style:pe}=e,se=g("Tree"),ge=useMemo(()=>{if(u)return typeof u!="function"?u:t=>u(t.data,{expanded:!!t.expanded,isLeaf:!!t.isLeaf})},[u]),me=useMemo(()=>b!==void 0?typeof b!="function"?b:t=>b({expanded:!!t.expanded,isLeaf:!!t.isLeaf}):t=>t.isLeaf?null:jsx(ChevronDown,{className:"lg-tree__switcher-icon",size:16,"aria-hidden":true}),[b]),ye=useMemo(()=>{if(E)return {icon:false,nodeDraggable:typeof E=="function"?t=>E(t):void 0}},[E]),fe=useCallback((t,l)=>{_?.(t,{node:l.node,expanded:l.expanded});},[_]),he=useCallback((t,l)=>{A?.(t,{node:l.node,selected:l.selected,selectedNodes:l.selectedNodes});},[A]),ue=useCallback((t,l)=>{H?.(t,{node:l.node,checked:l.checked,checkedNodes:l.checkedNodes,halfCheckedKeys:l.halfCheckedKeys});},[H]),be=useCallback(t=>{G?.({dragNode:t.dragNode,node:t.node,dropPosition:t.dropPosition,dropToGap:t.dropToGap});},[G]),B=useMemo(()=>{if(S)return t=>S({dragNode:t.dragNode,dropNode:t.dropNode,dropPosition:t.dropPosition})},[S]),xe=!o||o.length===0,y={};return c!==void 0&&(y.expandedKeys=c),h!==void 0&&(y.selectedKeys=h),M!==void 0&&(y.checkedKeys=M),P!==void 0&&(y.loadedKeys=P),B!==void 0&&(y.allowDrop=B),jsxs("div",{ref:r,className:a("lg-tree",`lg-tree--${a$1}`,`lg-tree--guide-${ee}`,K&&"lg-tree--checkable",$&&"lg-tree--disabled",j&&"lg-tree--loading",ce),style:pe,children:[j&&jsx("div",{className:"lg-tree__loading-mask",children:jsx(I,{size:"md"})}),xe?jsx("div",{className:"lg-tree__empty",children:ie??jsx(X,{size:"sm",description:se.empty})}):jsx(Pe,{prefixCls:"lg-tree",treeData:o,fieldNames:n,defaultExpandedKeys:s,defaultExpandAll:p,autoExpandParent:i,expandAction:g$1,onExpand:fe,selectable:v,multiple:k,defaultSelectedKeys:w,onSelect:he,checkable:K,checkStrictly:Q,defaultCheckedKeys:W,onCheck:ue,showIcon:Y,icon:ge,switcherIcon:me,titleRender:te,loadData:re,draggable:ye,onDrop:be,height:oe,itemHeight:ne??$e[a$1],virtual:ae,disabled:$,onRightClick:le,motion:de?je:void 0,...y})]})});Be.displayName="Tree";
2
- export{R as a,X as b,I as c,Be as d};
@@ -1 +0,0 @@
1
- import {a as a$1}from'./chunk-DN2VKVCV.mjs';import*as t from'@radix-ui/react-tooltip';import {forwardRef}from'react';import*as a from'@radix-ui/react-scroll-area';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var x=forwardRef(({children:l,className:o,style:r,type:n="scroll",scrollHideDelay:p=600,scrollbars:i="vertical",scrollbarSize:d=4,scrollbarHoverSize:g=6,onScroll:m,viewportRef:h},b)=>{let f={"--_scrollbar-size":`${d}px`,"--_scrollbar-hover-size":`${g}px`,...r};return jsxs(a.Root,{ref:b,className:a$1("lg-scroll-area",o),style:f,type:n,scrollHideDelay:p,children:[jsx(a.Viewport,{className:"lg-scroll-area__viewport",ref:h,onScroll:m,children:l}),(i==="vertical"||i==="both")&&jsx(_,{orientation:"vertical"}),(i==="horizontal"||i==="both")&&jsx(_,{orientation:"horizontal"}),i==="both"&&jsx(a.Corner,{className:"lg-scroll-area__corner"})]})});x.displayName="ScrollArea";var _=forwardRef(({orientation:l="vertical",className:o},r)=>jsx(a.Scrollbar,{ref:r,className:a$1("lg-scroll-area__scrollbar",o),orientation:l,children:jsx(a.Thumb,{className:"lg-scroll-area__thumb"})}));_.displayName="ScrollBar";function N(l){let o=l.split("-"),r=o[0],n={start:"start",end:"end"},p=o[1]?n[o[1]]??"center":"center";return {side:r,align:p}}function B({disabled:l=false,content:o,children:r,placement:n="top",open:p,defaultOpen:i,onOpenChange:d,delayDuration:g=200,skipDelayDuration:m=150,sideOffset:h=6,arrow:b=true,className:f,style:S,maxWidth:T=280,scrollable:v=true,container:y}){if(l||o==null||o==="")return jsx(Fragment,{children:r});let{side:P,align:A}=N(n),z=v?jsx(x,{className:"lg-tooltip__scroll",children:o}):o,u=jsxs(t.Content,{className:a$1("lg-tooltip",v&&"lg-tooltip--scrollable",f),side:P,align:A,sideOffset:h,style:{maxWidth:T,...S},children:[z,b&&jsx(t.Arrow,{className:"lg-tooltip__arrow"})]});return jsx(t.Provider,{delayDuration:g,skipDelayDuration:m,children:jsxs(t.Root,{open:p,defaultOpen:i,onOpenChange:d,children:[jsx(t.Trigger,{asChild:true,children:r}),y===null?u:jsx(t.Portal,{container:y,children:u})]})})}B.displayName="Tooltip";export{x as a,_ as b,B as c};
@@ -1 +0,0 @@
1
- 'use strict';var chunkDCDWEVW4_js=require('./chunk-DCDWEVW4.js'),i=require('react'),o=require('@radix-ui/react-popover'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}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 i__default=/*#__PURE__*/_interopDefault(i);var o__namespace=/*#__PURE__*/_interopNamespace(o);function R({children:r,open:e,defaultOpen:a,onOpenChange:t,modal:n=false}){return jsxRuntime.jsx(o__namespace.Root,{open:e,defaultOpen:a,onOpenChange:t,modal:n,children:r})}R.displayName="Popover";var w=i__default.default.forwardRef(({children:r,asChild:e=true,...a},t)=>jsxRuntime.jsx(o__namespace.Trigger,{ref:t,asChild:e,...a,children:r}));w.displayName="PopoverTrigger";var C=i__default.default.forwardRef(({children:r,asChild:e=true,...a},t)=>jsxRuntime.jsx(o__namespace.Anchor,{ref:t,asChild:e,...a,children:r}));C.displayName="PopoverAnchor";var A=i__default.default.forwardRef(({children:r,className:e,side:a="bottom",align:t="center",sideOffset:n=4,alignOffset:d=0,container:l,collisionPadding:P=8,onEscapeKeyDown:m,onPointerDownOutside:f,onFocusOutside:g,onInteractOutside:c,onOpenAutoFocus:u,onCloseAutoFocus:x,...y},h)=>{let v=jsxRuntime.jsx(o__namespace.Content,{ref:h,className:chunkDCDWEVW4_js.a("lg-popover",e),side:a,align:t,sideOffset:n,alignOffset:d,collisionPadding:P,onEscapeKeyDown:m,onPointerDownOutside:f,onFocusOutside:g,onInteractOutside:c,onOpenAutoFocus:u,onCloseAutoFocus:x,...y,children:r});return l===null?v:jsxRuntime.jsx(o__namespace.Portal,{container:l,children:v})});A.displayName="PopoverContent";var b=i__default.default.forwardRef(({className:r,width:e=10,height:a=5,...t},n)=>jsxRuntime.jsx(o__namespace.Arrow,{ref:n,className:chunkDCDWEVW4_js.a("lg-popover__arrow",r),width:e,height:a,...t}));b.displayName="PopoverArrow";var T=i__default.default.forwardRef(({children:r,asChild:e=true,...a},t)=>jsxRuntime.jsx(o__namespace.Close,{ref:t,asChild:e,...a,children:r}));T.displayName="PopoverClose";exports.a=R;exports.b=w;exports.c=C;exports.d=A;exports.e=b;exports.f=T;
@@ -1 +0,0 @@
1
- 'use strict';var chunkDCDWEVW4_js=require('./chunk-DCDWEVW4.js'),t=require('@radix-ui/react-tooltip'),react=require('react'),a=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 t__namespace=/*#__PURE__*/_interopNamespace(t);var a__namespace=/*#__PURE__*/_interopNamespace(a);var x=react.forwardRef(({children:l,className:o,style:r,type:n="scroll",scrollHideDelay:p=600,scrollbars:i="vertical",scrollbarSize:d=4,scrollbarHoverSize:g=6,onScroll:m,viewportRef:h},b)=>{let f={"--_scrollbar-size":`${d}px`,"--_scrollbar-hover-size":`${g}px`,...r};return jsxRuntime.jsxs(a__namespace.Root,{ref:b,className:chunkDCDWEVW4_js.a("lg-scroll-area",o),style:f,type:n,scrollHideDelay:p,children:[jsxRuntime.jsx(a__namespace.Viewport,{className:"lg-scroll-area__viewport",ref:h,onScroll:m,children:l}),(i==="vertical"||i==="both")&&jsxRuntime.jsx(_,{orientation:"vertical"}),(i==="horizontal"||i==="both")&&jsxRuntime.jsx(_,{orientation:"horizontal"}),i==="both"&&jsxRuntime.jsx(a__namespace.Corner,{className:"lg-scroll-area__corner"})]})});x.displayName="ScrollArea";var _=react.forwardRef(({orientation:l="vertical",className:o},r)=>jsxRuntime.jsx(a__namespace.Scrollbar,{ref:r,className:chunkDCDWEVW4_js.a("lg-scroll-area__scrollbar",o),orientation:l,children:jsxRuntime.jsx(a__namespace.Thumb,{className:"lg-scroll-area__thumb"})}));_.displayName="ScrollBar";function N(l){let o=l.split("-"),r=o[0],n={start:"start",end:"end"},p=o[1]?n[o[1]]??"center":"center";return {side:r,align:p}}function B({disabled:l=false,content:o,children:r,placement:n="top",open:p,defaultOpen:i,onOpenChange:d,delayDuration:g=200,skipDelayDuration:m=150,sideOffset:h=6,arrow:b=true,className:f,style:S,maxWidth:T=280,scrollable:v=true,container:y}){if(l||o==null||o==="")return jsxRuntime.jsx(jsxRuntime.Fragment,{children:r});let{side:P,align:A}=N(n),z=v?jsxRuntime.jsx(x,{className:"lg-tooltip__scroll",children:o}):o,u=jsxRuntime.jsxs(t__namespace.Content,{className:chunkDCDWEVW4_js.a("lg-tooltip",v&&"lg-tooltip--scrollable",f),side:P,align:A,sideOffset:h,style:{maxWidth:T,...S},children:[z,b&&jsxRuntime.jsx(t__namespace.Arrow,{className:"lg-tooltip__arrow"})]});return jsxRuntime.jsx(t__namespace.Provider,{delayDuration:g,skipDelayDuration:m,children:jsxRuntime.jsxs(t__namespace.Root,{open:p,defaultOpen:i,onOpenChange:d,children:[jsxRuntime.jsx(t__namespace.Trigger,{asChild:true,children:r}),y===null?u:jsxRuntime.jsx(t__namespace.Portal,{container:y,children:u})]})})}B.displayName="Tooltip";exports.a=x;exports.b=_;exports.c=B;