lingee-ui 0.0.17 → 0.0.18

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.
@@ -94,6 +94,21 @@ interface PopoverContentProps extends React.HTMLAttributes<HTMLDivElement> {
94
94
  * 用于防止浮层贴边
95
95
  */
96
96
  collisionPadding?: number;
97
+ /**
98
+ * 锚点不可见时自动隐藏浮层,默认 true。
99
+ *
100
+ * 浮层 portal 到 body,与锚点不在同一棵 DOM 子树,因此锚点被隐藏时浮层不会
101
+ * 跟着消失:祖先一旦 `display: none`,锚点的 `getBoundingClientRect()` 退化为
102
+ * 全 0,定位重算后浮层会跑到视口左上角。keep-alive 路由(切走只隐藏不卸载)
103
+ * 是典型场景。
104
+ *
105
+ * 命中时浮层拿到 `visibility: hidden` + `pointer-events: none`,开合状态不变,
106
+ * 锚点恢复可见后原样显示。判据是 `Element.checkVisibility()`,在不提供该 API
107
+ * 的环境(jsdom、Chrome < 105)下跳过检测,不影响交互。
108
+ *
109
+ * 仅在锚点确实允许不可见、且浮层需要留在原位时才关闭它。
110
+ */
111
+ hideWhenDetached?: boolean;
97
112
  }
98
113
  /** Popover Arrow Props */
99
114
  interface PopoverArrowProps extends React.SVGAttributes<SVGSVGElement> {
@@ -94,6 +94,21 @@ interface PopoverContentProps extends React.HTMLAttributes<HTMLDivElement> {
94
94
  * 用于防止浮层贴边
95
95
  */
96
96
  collisionPadding?: number;
97
+ /**
98
+ * 锚点不可见时自动隐藏浮层,默认 true。
99
+ *
100
+ * 浮层 portal 到 body,与锚点不在同一棵 DOM 子树,因此锚点被隐藏时浮层不会
101
+ * 跟着消失:祖先一旦 `display: none`,锚点的 `getBoundingClientRect()` 退化为
102
+ * 全 0,定位重算后浮层会跑到视口左上角。keep-alive 路由(切走只隐藏不卸载)
103
+ * 是典型场景。
104
+ *
105
+ * 命中时浮层拿到 `visibility: hidden` + `pointer-events: none`,开合状态不变,
106
+ * 锚点恢复可见后原样显示。判据是 `Element.checkVisibility()`,在不提供该 API
107
+ * 的环境(jsdom、Chrome < 105)下跳过检测,不影响交互。
108
+ *
109
+ * 仅在锚点确实允许不可见、且浮层需要留在原位时才关闭它。
110
+ */
111
+ hideWhenDetached?: boolean;
97
112
  }
98
113
  /** Popover Arrow Props */
99
114
  interface PopoverArrowProps extends React.SVGAttributes<SVGSVGElement> {
@@ -1 +1 @@
1
- 'use strict';var chunkURZBMGD4_js=require('../chunk-URZBMGD4.js');require('../chunk-DCDWEVW4.js');Object.defineProperty(exports,"Popover",{enumerable:true,get:function(){return chunkURZBMGD4_js.c}});Object.defineProperty(exports,"PopoverAnchor",{enumerable:true,get:function(){return chunkURZBMGD4_js.e}});Object.defineProperty(exports,"PopoverArrow",{enumerable:true,get:function(){return chunkURZBMGD4_js.g}});Object.defineProperty(exports,"PopoverClose",{enumerable:true,get:function(){return chunkURZBMGD4_js.h}});Object.defineProperty(exports,"PopoverContent",{enumerable:true,get:function(){return chunkURZBMGD4_js.f}});Object.defineProperty(exports,"PopoverTrigger",{enumerable:true,get:function(){return chunkURZBMGD4_js.d}});
1
+ 'use strict';var chunkA2VQ5WK4_js=require('../chunk-A2VQ5WK4.js');require('../chunk-DCDWEVW4.js');Object.defineProperty(exports,"Popover",{enumerable:true,get:function(){return chunkA2VQ5WK4_js.c}});Object.defineProperty(exports,"PopoverAnchor",{enumerable:true,get:function(){return chunkA2VQ5WK4_js.e}});Object.defineProperty(exports,"PopoverArrow",{enumerable:true,get:function(){return chunkA2VQ5WK4_js.g}});Object.defineProperty(exports,"PopoverClose",{enumerable:true,get:function(){return chunkA2VQ5WK4_js.h}});Object.defineProperty(exports,"PopoverContent",{enumerable:true,get:function(){return chunkA2VQ5WK4_js.f}});Object.defineProperty(exports,"PopoverTrigger",{enumerable:true,get:function(){return chunkA2VQ5WK4_js.d}});
@@ -1 +1 @@
1
- export{c as Popover,e as PopoverAnchor,g as PopoverArrow,h as PopoverClose,f as PopoverContent,d as PopoverTrigger}from'../chunk-VDUTBGPN.mjs';import'../chunk-DN2VKVCV.mjs';
1
+ export{c as Popover,e as PopoverAnchor,g as PopoverArrow,h as PopoverClose,f as PopoverContent,d as PopoverTrigger}from'../chunk-6OF5LIF4.mjs';import'../chunk-DN2VKVCV.mjs';
@@ -84,7 +84,7 @@ interface TabsProps<T extends string = string> extends Omit<HTMLAttributes<HTMLD
84
84
  }
85
85
 
86
86
  declare const tabsVariants: (props?: ({
87
- variant?: "segmented" | "rounded" | "solid" | "outline" | "underline" | null | undefined;
87
+ variant?: "solid" | "underline" | "outline" | "segmented" | "rounded" | null | undefined;
88
88
  size?: "sm" | "md" | null | undefined;
89
89
  } & class_variance_authority_types.ClassProp) | undefined) => string;
90
90
  declare const Tabs: <T extends string = string>(props: TabsProps<T> & {
@@ -84,7 +84,7 @@ interface TabsProps<T extends string = string> extends Omit<HTMLAttributes<HTMLD
84
84
  }
85
85
 
86
86
  declare const tabsVariants: (props?: ({
87
- variant?: "segmented" | "rounded" | "solid" | "outline" | "underline" | null | undefined;
87
+ variant?: "solid" | "underline" | "outline" | "segmented" | "rounded" | null | undefined;
88
88
  size?: "sm" | "md" | null | undefined;
89
89
  } & class_variance_authority_types.ClassProp) | undefined) => string;
90
90
  declare const Tabs: <T extends string = string>(props: TabsProps<T> & {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lingee-ui",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "description": "Kingdee Lingee UI 基础组件库 — React 18+ 轻量级企业 UI 组件",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -131,6 +131,7 @@
131
131
  "jsdom": "^24.0.0",
132
132
  "less": "^4.2.0",
133
133
  "lingee-icon": "workspace:*",
134
+ "lingee-web-bridge-sdk": "workspace:*",
134
135
  "prettier": "^3.3.0",
135
136
  "react": "^18.2.0",
136
137
  "react-dom": "^18.2.0",
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **本文件由 `packages/lingee-ui/scripts/gen-skill.mjs` 自动生成,禁止手工编辑。**
4
4
  > 供根 `AGENTS.md` 引用,避免手写清单随组件库迭代脱节。
5
- > 组件库 `0.0.17` | 图标库 `1.0.21`
5
+ > 组件库 `0.0.18` | 图标库 `1.0.21`
6
6
 
7
7
  ## 可用组件(40)
8
8
 
package/skill/SKILL.md CHANGED
@@ -2,7 +2,7 @@
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.17"
5
+ lingeeUi: "0.0.18"
6
6
  lingeeIcon: "1.0.21"
7
7
  generatedBy: "gen-skill.mjs"
8
8
  ---
@@ -12,7 +12,7 @@ metadata:
12
12
  Kingdee Lingee 设计体系的 React 组件库(40 个组件)与图标库(990 个图标)。
13
13
  本技能面向**消费方项目**,只覆盖「如何用」,不含组件库内部开发约定。
14
14
 
15
- - 组件库版本 `0.0.17` | 图标库版本 `1.0.21`
15
+ - 组件库版本 `0.0.18` | 图标库版本 `1.0.21`
16
16
  - 组件在线预览:https://kingdee.github.io/lingee-ui/
17
17
  - 图标在线预览:https://kingdee.github.io/lingee-icon/
18
18
 
@@ -1,7 +1,7 @@
1
1
  {
2
- "lingeeUi": "0.0.17",
2
+ "lingeeUi": "0.0.18",
3
3
  "lingeeIcon": "1.0.21",
4
4
  "componentCount": 40,
5
5
  "iconCount": 990,
6
- "sourceHash": "d873601ae4b08c21"
6
+ "sourceHash": "61b359526b652ada"
7
7
  }
@@ -82,6 +82,7 @@ export default function BasicDemo() {
82
82
  | `alignOffset` | 对齐方向偏移(px) | `number` | `0` |
83
83
  | `collisionPadding` | 碰撞边界内边距(px),防止浮层贴边 | `number` | `8` |
84
84
  | `container` | 挂载容器;传 `null` 则不使用 Portal | `HTMLElement \| null` | `document.body` |
85
+ | `hideWhenDetached` | 锚点不可见时自动隐藏面板 | `boolean` | `true` |
85
86
  | `style.maxHeight` | 覆盖面板高度上限 | `number \| string` | `346` |
86
87
  | `footer` | 固定底部内容(不随列表滚动) | `ReactNode` | - |
87
88
  | `children` | 子菜单内容 | `ReactNode` | - |
@@ -113,6 +114,7 @@ export default function BasicDemo() {
113
114
  | `alignOffset` | 对齐方向偏移(px) | `number` | `0` |
114
115
  | `collisionPadding` | 碰撞边界内边距(px),防止浮层贴边 | `number` | `8` |
115
116
  | `container` | 挂载容器;传 `null` 则不使用 Portal | `HTMLElement \| null` | `document.body` |
117
+ | `hideWhenDetached` | 锚点不可见时自动隐藏面板,见下方说明 | `boolean` | `true` |
116
118
  | `onEscapeKeyDown` | Escape 按下回调,可 `preventDefault` 阻止关闭 | `(event: KeyboardEvent) => void` | - |
117
119
  | `onPointerDownOutside` | 点击外部回调,可 `preventDefault` 阻止关闭 | `(event: CustomEvent) => void` | - |
118
120
  | `onInteractOutside` | 外部交互回调(pointerDown + focus 的合集) | `(event: CustomEvent) => void` | - |
@@ -120,6 +122,8 @@ export default function BasicDemo() {
120
122
 
121
123
  打开面板时的焦点落点默认按最近一次输入方式自动判断:键盘(Enter / Space / Tab / 方向键)打开聚焦第一项,鼠标点击打开则把焦点留在菜单容器上。这样鼠标用户不会看到第一项自带 hover 态,键盘用户仍能看到焦点位置。仅在需要强制某一种行为时才传 `autoFocusFirstItem`。
122
124
 
125
+ 面板 portal 到 `document.body`,与触发器不在同一棵 DOM 子树,因此触发器被隐藏时面板不会跟着消失。触发器祖先一旦 `display: none`(keep-alive 路由切走只隐藏不卸载就属于这种),它的 `getBoundingClientRect()` 退化为全 0,定位重算后面板会跑到视口左上角。`hideWhenDetached` 默认 `true` 会在触发器不可见时给面板加 `visibility: hidden` + `pointer-events: none`,开合状态不变。子菜单的锚点是父面板里的 `DropdownSubTrigger`,父面板错位时子菜单一并跟随,因此这条对多级菜单同样有效。
126
+
123
127
  ### DropdownItem
124
128
 
125
129
  | 属性 | 说明 | 类型 | 默认值 |
@@ -49,6 +49,7 @@ export default function BasicDemo() {
49
49
  | `sideOffset` | 弹出层与触发器的间距(px) | `number` | `4` |
50
50
  | `alignOffset` | 沿对齐轴的偏移(px) | `number` | `0` |
51
51
  | `collisionPadding` | 与碰撞边界的最小距离(px) | `number` | `8` |
52
+ | `hideWhenDetached` | 锚点不可见时自动隐藏浮层,见下方说明 | `boolean` | `true` |
52
53
  | `container` | Portal 挂载容器;传 `null` 时就地渲染 | `HTMLElement \| null` | `document.body` |
53
54
  | `className` | 自定义类名;使用 `lg-popover--card` 启用标准卡片外观 | `string` | - |
54
55
  | `onEscapeKeyDown` | Escape 按下回调,可 `preventDefault` 阻止关闭 | `(event: KeyboardEvent) => void` | - |
@@ -1,6 +1,6 @@
1
1
  # 接入指南
2
2
 
3
- 组件库 `0.0.17` | 图标库 `1.0.21`
3
+ 组件库 `0.0.18` | 图标库 `1.0.21`
4
4
 
5
5
  ## 安装
6
6
 
@@ -1,6 +1,6 @@
1
1
  # 语义 Token 全表
2
2
 
3
- 组件库 `0.0.17`。仅列语义层(`--lg-g-*`)。
3
+ 组件库 `0.0.18`。仅列语义层(`--lg-g-*`)。
4
4
 
5
5
  亮色与暗色**变量名完全相同**,给 `<html>` 加 `data-theme="dark"` 即自动切换,业务代码只写一次。
6
6
 
@@ -1 +0,0 @@
1
- 'use strict';var chunkDCDWEVW4_js=require('./chunk-DCDWEVW4.js'),o=require('react'),a=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 o__default=/*#__PURE__*/_interopDefault(o);var a__namespace=/*#__PURE__*/_interopNamespace(a);var A="data-lg-modality",H=false;function w(r){document.documentElement.setAttribute(A,r);}function F(){return typeof document>"u"?false:document.documentElement.getAttribute(A)==="keyboard"}function L(){H||typeof document>"u"||(H=true,document.documentElement.hasAttribute(A)||w("keyboard"),document.addEventListener("pointerdown",()=>w("pointer"),true),document.addEventListener("keydown",r=>{(r.key==="Enter"||r.key===" "||r.key==="Tab"||r.key.startsWith("Arrow"))&&w("keyboard");},true));}var E=o__default.default.createContext(null);function M(r,t,n,i,s){let d=o__default.default.useRef(),u=o__default.default.useRef(i);u.current=i;let f=o__default.default.useRef(s);f.current=s;let p=o__default.default.useCallback(()=>{clearTimeout(d.current),d.current=void 0;},[]);return o__default.default.useEffect(()=>p,[r,t,n,p]),o__default.default.useMemo(()=>{if(!r)return null;let l=(e,P)=>{p(),d.current=setTimeout(()=>{d.current=void 0,u.current(e);},P);};return {onPointerEnter:()=>l(true,t),onPointerLeave:()=>l(false,n),onTriggerClick:e=>{p(),f.current(e);}}},[r,t,n,p])}function B({children:r,open:t,defaultOpen:n,onOpenChange:i,modal:s=false,trigger:d="click",mouseEnterDelay:u=100,mouseLeaveDelay:f=100}){o__default.default.useEffect(()=>{L();},[]);let[p,l]=o__default.default.useState(n??false),e=t!==void 0,P=e?t:p,b=o__default.default.useRef(false),y=o__default.default.useRef(false),h=o__default.default.useCallback(c=>{if(b.current){b.current=false;return}e||l(c),i?.(c);},[e,i]),x=o__default.default.useCallback(c=>{y.current=c,h(c);},[h]),k=o__default.default.useCallback(c=>{b.current=c==="mouse",c==="fallback"&&(y.current=false);},[]),C=M(d==="hover",u,f,x,k),R=o__default.default.useMemo(()=>C?{...C,shouldPreventAutoFocus:()=>y.current}:null,[C]),g=jsxRuntime.jsx(a__namespace.Root,{open:P,onOpenChange:h,modal:s,children:r});return jsxRuntime.jsx(E.Provider,{value:R,children:g})}B.displayName="Popover";var O=o__default.default.forwardRef(({children:r,asChild:t=true,onPointerEnter:n,onPointerLeave:i,onPointerDown:s,onClick:d,...u},f)=>{let p=o__default.default.useContext(E),l=o__default.default.useRef(null);return jsxRuntime.jsx(a__namespace.Trigger,{ref:f,asChild:t,onPointerEnter:e=>{n?.(e),(!e.pointerType||e.pointerType==="mouse")&&p?.onPointerEnter();},onPointerLeave:e=>{i?.(e),(!e.pointerType||e.pointerType==="mouse")&&p?.onPointerLeave();},onPointerDown:e=>{l.current=e.pointerType,s?.(e);},onClick:e=>{if(d?.(e),e.defaultPrevented){l.current=null;return}let P=e.detail>0&&l.current==="mouse"?"mouse":"fallback";p?.onTriggerClick(P),l.current=null;},...u,children:r})});O.displayName="PopoverTrigger";var _=o__default.default.forwardRef(({children:r,asChild:t=true,...n},i)=>jsxRuntime.jsx(a__namespace.Anchor,{ref:i,asChild:t,...n,children:r}));_.displayName="PopoverAnchor";var N=o__default.default.forwardRef(({children:r,className:t,side:n="bottom",align:i="center",sideOffset:s=4,alignOffset:d=0,container:u,collisionPadding:f=8,onEscapeKeyDown:p,onPointerDownOutside:l,onFocusOutside:e,onInteractOutside:P,onOpenAutoFocus:b,onCloseAutoFocus:y,onPointerEnter:h,onPointerLeave:x,style:k,...C},R)=>{let g=o__default.default.useContext(E),c=jsxRuntime.jsx(a__namespace.Content,{ref:R,className:chunkDCDWEVW4_js.a("lg-popover",g&&"lg-popover--hover-bridge",t),style:g?{"--_popover-bridge-size":`${s+2}px`,...k}:k,onPointerEnter:v=>{h?.(v),(!v.pointerType||v.pointerType==="mouse")&&g?.onPointerEnter();},onPointerLeave:v=>{x?.(v),(!v.pointerType||v.pointerType==="mouse")&&g?.onPointerLeave();},side:n,align:i,sideOffset:s,alignOffset:d,collisionPadding:f,onEscapeKeyDown:p,onPointerDownOutside:l,onFocusOutside:e,onInteractOutside:P,onOpenAutoFocus:b??(g?v=>{g.shouldPreventAutoFocus()&&v.preventDefault();}:void 0),onCloseAutoFocus:y,...C,children:r});return u===null?c:jsxRuntime.jsx(a__namespace.Portal,{container:u,children:c})});N.displayName="PopoverContent";var S=o__default.default.forwardRef(({className:r,width:t=10,height:n=5,...i},s)=>jsxRuntime.jsx(a__namespace.Arrow,{ref:s,className:chunkDCDWEVW4_js.a("lg-popover__arrow",r),width:t,height:n,...i}));S.displayName="PopoverArrow";var z=o__default.default.forwardRef(({children:r,asChild:t=true,...n},i)=>jsxRuntime.jsx(a__namespace.Close,{ref:i,asChild:t,...n,children:r}));z.displayName="PopoverClose";exports.a=F;exports.b=L;exports.c=B;exports.d=O;exports.e=_;exports.f=N;exports.g=S;exports.h=z;
@@ -1 +0,0 @@
1
- import {a as a$1}from'./chunk-DN2VKVCV.mjs';import o from'react';import*as a from'@radix-ui/react-popover';import {jsx}from'react/jsx-runtime';var A="data-lg-modality",H=false;function w(r){document.documentElement.setAttribute(A,r);}function F(){return typeof document>"u"?false:document.documentElement.getAttribute(A)==="keyboard"}function L(){H||typeof document>"u"||(H=true,document.documentElement.hasAttribute(A)||w("keyboard"),document.addEventListener("pointerdown",()=>w("pointer"),true),document.addEventListener("keydown",r=>{(r.key==="Enter"||r.key===" "||r.key==="Tab"||r.key.startsWith("Arrow"))&&w("keyboard");},true));}var E=o.createContext(null);function M(r,t,n,i,s){let d=o.useRef(),u=o.useRef(i);u.current=i;let f=o.useRef(s);f.current=s;let p=o.useCallback(()=>{clearTimeout(d.current),d.current=void 0;},[]);return o.useEffect(()=>p,[r,t,n,p]),o.useMemo(()=>{if(!r)return null;let l=(e,P)=>{p(),d.current=setTimeout(()=>{d.current=void 0,u.current(e);},P);};return {onPointerEnter:()=>l(true,t),onPointerLeave:()=>l(false,n),onTriggerClick:e=>{p(),f.current(e);}}},[r,t,n,p])}function B({children:r,open:t,defaultOpen:n,onOpenChange:i,modal:s=false,trigger:d="click",mouseEnterDelay:u=100,mouseLeaveDelay:f=100}){o.useEffect(()=>{L();},[]);let[p,l]=o.useState(n??false),e=t!==void 0,P=e?t:p,b=o.useRef(false),y=o.useRef(false),h=o.useCallback(c=>{if(b.current){b.current=false;return}e||l(c),i?.(c);},[e,i]),x=o.useCallback(c=>{y.current=c,h(c);},[h]),k=o.useCallback(c=>{b.current=c==="mouse",c==="fallback"&&(y.current=false);},[]),C=M(d==="hover",u,f,x,k),R=o.useMemo(()=>C?{...C,shouldPreventAutoFocus:()=>y.current}:null,[C]),g=jsx(a.Root,{open:P,onOpenChange:h,modal:s,children:r});return jsx(E.Provider,{value:R,children:g})}B.displayName="Popover";var O=o.forwardRef(({children:r,asChild:t=true,onPointerEnter:n,onPointerLeave:i,onPointerDown:s,onClick:d,...u},f)=>{let p=o.useContext(E),l=o.useRef(null);return jsx(a.Trigger,{ref:f,asChild:t,onPointerEnter:e=>{n?.(e),(!e.pointerType||e.pointerType==="mouse")&&p?.onPointerEnter();},onPointerLeave:e=>{i?.(e),(!e.pointerType||e.pointerType==="mouse")&&p?.onPointerLeave();},onPointerDown:e=>{l.current=e.pointerType,s?.(e);},onClick:e=>{if(d?.(e),e.defaultPrevented){l.current=null;return}let P=e.detail>0&&l.current==="mouse"?"mouse":"fallback";p?.onTriggerClick(P),l.current=null;},...u,children:r})});O.displayName="PopoverTrigger";var _=o.forwardRef(({children:r,asChild:t=true,...n},i)=>jsx(a.Anchor,{ref:i,asChild:t,...n,children:r}));_.displayName="PopoverAnchor";var N=o.forwardRef(({children:r,className:t,side:n="bottom",align:i="center",sideOffset:s=4,alignOffset:d=0,container:u,collisionPadding:f=8,onEscapeKeyDown:p,onPointerDownOutside:l,onFocusOutside:e,onInteractOutside:P,onOpenAutoFocus:b,onCloseAutoFocus:y,onPointerEnter:h,onPointerLeave:x,style:k,...C},R)=>{let g=o.useContext(E),c=jsx(a.Content,{ref:R,className:a$1("lg-popover",g&&"lg-popover--hover-bridge",t),style:g?{"--_popover-bridge-size":`${s+2}px`,...k}:k,onPointerEnter:v=>{h?.(v),(!v.pointerType||v.pointerType==="mouse")&&g?.onPointerEnter();},onPointerLeave:v=>{x?.(v),(!v.pointerType||v.pointerType==="mouse")&&g?.onPointerLeave();},side:n,align:i,sideOffset:s,alignOffset:d,collisionPadding:f,onEscapeKeyDown:p,onPointerDownOutside:l,onFocusOutside:e,onInteractOutside:P,onOpenAutoFocus:b??(g?v=>{g.shouldPreventAutoFocus()&&v.preventDefault();}:void 0),onCloseAutoFocus:y,...C,children:r});return u===null?c:jsx(a.Portal,{container:u,children:c})});N.displayName="PopoverContent";var S=o.forwardRef(({className:r,width:t=10,height:n=5,...i},s)=>jsx(a.Arrow,{ref:s,className:a$1("lg-popover__arrow",r),width:t,height:n,...i}));S.displayName="PopoverArrow";var z=o.forwardRef(({children:r,asChild:t=true,...n},i)=>jsx(a.Close,{ref:i,asChild:t,...n,children:r}));z.displayName="PopoverClose";export{F as a,L as b,B as c,O as d,_ as e,N as f,S as g,z as h};