import { DetailedHTMLProps, HTMLAttributes } from 'react'; import { WebUiElementMap } from '../components'; import { ExtractProps, OmitLitBase, ReactCustomEventListeners } from './utils'; /** * Lit Web Component 的 React 包装类型。 * * - 标准 DOM 事件(input/change/focus/blur)使用 React 惯用 camelCase handler, * `currentTarget` 收窄为组件实例(`target` 遵循 React SyntheticEvent 语义,不承诺)。 * - kebab-case 自定义事件(open-change/toast-close)生成精确的 `on` 绑定。 * - 与 `HTMLAttributes` 全量交叉:组件自身属性与通用 HTML 属性(含原生事件)共存, * 重叠键类型相容(如 `placeholder`),组件类型在交叉中自然生效;`ref` 保持具体元素类型。 */ export type LitReactWrapper = DetailedHTMLProps> & ReactCustomEventListeners & HTMLAttributes, T>; export type WebUiComponents = { [K in keyof WebUiElementMap]: LitReactWrapper; }; declare module 'react' { namespace JSX { interface IntrinsicElements extends WebUiComponents { } } }