@lobehub/ui 4.35.2 → 4.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/es/Accordion/Accordion.d.mts +2 -2
  2. package/es/Accordion/AccordionItem.d.mts +2 -2
  3. package/es/ActionIcon/ActionIcon.d.mts +2 -2
  4. package/es/Alert/Alert.d.mts +2 -2
  5. package/es/Alert/type.d.mts +1 -1
  6. package/es/AutoComplete/Select.d.mts +2 -2
  7. package/es/Avatar/Avatar.mjs +1 -1
  8. package/es/Avatar/AvatarGroup/index.d.mts +2 -2
  9. package/es/Burger/Burger.d.mts +2 -2
  10. package/es/CodeDiff/CodeDiff.d.mts +2 -2
  11. package/es/CodeDiff/PatchDiff.d.mts +2 -2
  12. package/es/CodeEditor/CodeEditor.d.mts +2 -2
  13. package/es/Collapse/Collapse.d.mts +2 -2
  14. package/es/ColorSwatches/ColorSwatches.mjs +1 -1
  15. package/es/ConfigProvider/index.d.mts +2 -2
  16. package/es/ContextMenu/ContextMenuHost.d.mts +2 -2
  17. package/es/ContextMenu/ContextMenuHost.mjs +4 -9
  18. package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
  19. package/es/CopyButton/CopyButton.d.mts +2 -2
  20. package/es/DatePicker/DatePicker.d.mts +2 -2
  21. package/es/DraggablePanel/components/DraggablePanelBody.d.mts +2 -2
  22. package/es/DraggablePanel/components/DraggablePanelContainer.d.mts +2 -2
  23. package/es/DraggablePanel/components/DraggablePanelFooter.d.mts +2 -2
  24. package/es/DraggablePanel/components/DraggablePanelHeader.d.mts +2 -2
  25. package/es/DraggableSideNav/DraggableSideNav.d.mts +2 -2
  26. package/es/Drawer/Drawer.d.mts +2 -2
  27. package/es/Dropdown/Dropdown.d.mts +2 -2
  28. package/es/DropdownMenu/DropdownMenu.d.mts +2 -2
  29. package/es/DropdownMenu/atoms.d.mts +18 -18
  30. package/es/DropdownMenu/atoms.mjs +4 -4
  31. package/es/DropdownMenu/atoms.mjs.map +1 -1
  32. package/es/EditableText/EditableText.d.mts +2 -2
  33. package/es/EditorSlashMenu/atoms.d.mts +13 -13
  34. package/es/EditorSlashMenu/atoms.mjs +3 -3
  35. package/es/EditorSlashMenu/atoms.mjs.map +1 -1
  36. package/es/EmojiPicker/EmojiPicker.d.mts +2 -2
  37. package/es/Flex/FlexBasic.d.mts +2 -2
  38. package/es/FontLoader/index.d.mts +2 -2
  39. package/es/Footer/Footer.d.mts +2 -2
  40. package/es/Form/components/FormGroup.d.mts +2 -2
  41. package/es/Form/components/FormItem.d.mts +2 -2
  42. package/es/Form/components/FormSubmitFooter.d.mts +2 -2
  43. package/es/FormModal/FormModal.d.mts +2 -2
  44. package/es/Freeze/Freeze.d.mts +2 -2
  45. package/es/GuideCard/GuideCard.d.mts +2 -2
  46. package/es/Header/Header.d.mts +2 -2
  47. package/es/Highlighter/Highlighter.d.mts +2 -2
  48. package/es/Highlighter/SyntaxHighlighter/index.d.mts +2 -2
  49. package/es/Hotkey/Hotkey.d.mts +2 -2
  50. package/es/HotkeyInput/HotkeyInput.d.mts +2 -2
  51. package/es/Icon/Icon.d.mts +2 -2
  52. package/es/Icon/components/IconProvider.d.mts +3 -3
  53. package/es/Image/PreviewGroup.d.mts +2 -2
  54. package/es/ImageSelect/ImageSelect.d.mts +2 -2
  55. package/es/Input/Input.d.mts +2 -2
  56. package/es/Input/InputPassword.d.mts +2 -2
  57. package/es/Input/TextArea.d.mts +2 -2
  58. package/es/Layout/components/LayoutFooter.d.mts +2 -2
  59. package/es/Layout/components/LayoutHeader.d.mts +2 -2
  60. package/es/Layout/components/LayoutMain.d.mts +2 -2
  61. package/es/Layout/components/LayoutSidebar.d.mts +2 -2
  62. package/es/Layout/components/LayoutSidebarInner.d.mts +2 -2
  63. package/es/Layout/components/LayoutToc.d.mts +2 -2
  64. package/es/List/ListItem/index.d.mts +2 -2
  65. package/es/LobeSelect/LobeSelect.d.mts +2 -2
  66. package/es/LobeSelect/LobeSelect.mjs +45 -51
  67. package/es/LobeSelect/LobeSelect.mjs.map +1 -1
  68. package/es/LobeSelect/atoms.d.mts +19 -19
  69. package/es/LobeSelect/atoms.mjs +4 -4
  70. package/es/LobeSelect/atoms.mjs.map +1 -1
  71. package/es/LobeSwitch/LobeSwitch.d.mts +2 -2
  72. package/es/LobeSwitch/atoms.d.mts +4 -4
  73. package/es/Markdown/Markdown.d.mts +2 -2
  74. package/es/Markdown/Typography.d.mts +2 -2
  75. package/es/Markdown/components/SearchResultCards/index.d.mts +2 -2
  76. package/es/Menu/Menu.d.mts +2 -2
  77. package/es/Mermaid/Mermaid.d.mts +2 -2
  78. package/es/Mermaid/SyntaxMermaid/index.d.mts +2 -2
  79. package/es/Modal/imperative.d.mts +2 -2
  80. package/es/MotionProvider/index.d.mts +2 -2
  81. package/es/Popover/ArrowIcon.d.mts +2 -2
  82. package/es/Popover/PopoverPortal.mjs +8 -12
  83. package/es/Popover/PopoverPortal.mjs.map +1 -1
  84. package/es/Popover/atoms.d.mts +9 -9
  85. package/es/Popover/context.d.mts +2 -2
  86. package/es/ScrollArea/atoms.d.mts +7 -7
  87. package/es/SearchBar/SearchBar.d.mts +2 -2
  88. package/es/Segmented/Segmented.d.mts +2 -2
  89. package/es/Select/Select.d.mts +2 -2
  90. package/es/SideNav/SideNav.d.mts +2 -2
  91. package/es/SliderWithInput/SliderWithInput.d.mts +2 -2
  92. package/es/SortableList/components/DragHandle.d.mts +2 -2
  93. package/es/SortableList/components/SortableItem.d.mts +2 -2
  94. package/es/ThemeProvider/AppElementContext.d.mts +7 -0
  95. package/es/ThemeProvider/AppElementContext.mjs +14 -0
  96. package/es/ThemeProvider/AppElementContext.mjs.map +1 -0
  97. package/es/ThemeProvider/GlobalStyle/global.mjs +10 -17
  98. package/es/ThemeProvider/GlobalStyle/global.mjs.map +1 -1
  99. package/es/ThemeProvider/ThemeProvider.d.mts +2 -2
  100. package/es/ThemeProvider/ThemeProvider.mjs +9 -2
  101. package/es/ThemeProvider/ThemeProvider.mjs.map +1 -1
  102. package/es/ThemeProvider/index.d.mts +2 -1
  103. package/es/ThemeProvider/index.mjs +2 -1
  104. package/es/Toast/imperative.d.mts +3 -3
  105. package/es/Toast/imperative.mjs +7 -44
  106. package/es/Toast/imperative.mjs.map +1 -1
  107. package/es/Toc/Toc.d.mts +2 -2
  108. package/es/Tooltip/TooltipGroup.mjs +3 -3
  109. package/es/Tooltip/TooltipGroup.mjs.map +1 -1
  110. package/es/Tooltip/TooltipStandalone.mjs +3 -3
  111. package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
  112. package/es/Video/index.d.mts +2 -2
  113. package/es/awesome/AuroraBackground/AuroraBackground.d.mts +2 -2
  114. package/es/awesome/BottomGradientButton/BottomGradientButton.d.mts +2 -2
  115. package/es/awesome/Features/Features.d.mts +2 -2
  116. package/es/awesome/Giscus/Giscus.d.mts +2 -2
  117. package/es/awesome/GradientButton/GradientButton.d.mts +2 -2
  118. package/es/awesome/GridBackground/GridBackground.d.mts +2 -2
  119. package/es/awesome/GridBackground/GridShowcase.d.mts +2 -2
  120. package/es/awesome/Hero/Hero.d.mts +2 -2
  121. package/es/awesome/Spline/Spine.d.mts +2 -2
  122. package/es/awesome/Spotlight/Spotlight.d.mts +2 -2
  123. package/es/awesome/SpotlightCard/SpotlightCard.d.mts +2 -2
  124. package/es/awesome/TypewriterEffect/TypewriterEffect.d.mts +2 -2
  125. package/es/brand/LobeChat/index.d.mts +2 -2
  126. package/es/brand/LobeHub/index.d.mts +2 -2
  127. package/es/brand/LogoThree/LogoSpline.d.mts +2 -2
  128. package/es/brand/LogoThree/index.d.mts +2 -2
  129. package/es/chat/BackBottom/BackBottom.d.mts +2 -2
  130. package/es/chat/ChatInputArea/components/ChatInputAreaInner.d.mts +2 -2
  131. package/es/chat/ChatItem/ChatItem.d.mts +2 -2
  132. package/es/chat/ChatList/ChatList.d.mts +2 -2
  133. package/es/chat/EditableMessage/EditableMessage.d.mts +2 -2
  134. package/es/chat/EditableMessageList/EditableMessageList.d.mts +2 -2
  135. package/es/chat/MessageInput/MessageInput.d.mts +2 -2
  136. package/es/chat/MessageModal/MessageModal.d.mts +2 -2
  137. package/es/color/ColorScales/index.d.mts +2 -2
  138. package/es/color/CssVar/index.d.mts +2 -2
  139. package/es/i18n/context.d.mts +2 -2
  140. package/es/icons/lucideExtra/BotPromptIcon.d.mts +2 -2
  141. package/es/icons/lucideExtra/CreateBotIcon.d.mts +3 -3
  142. package/es/icons/lucideExtra/DiscordIcon.d.mts +3 -3
  143. package/es/icons/lucideExtra/GlobeOffIcon.d.mts +2 -2
  144. package/es/icons/lucideExtra/GroupBotIcon.d.mts +2 -2
  145. package/es/icons/lucideExtra/GroupBotSquareIcon.d.mts +3 -3
  146. package/es/icons/lucideExtra/LeftClickIcon.d.mts +3 -3
  147. package/es/icons/lucideExtra/LeftDoubleClickIcon.d.mts +3 -3
  148. package/es/icons/lucideExtra/McpIcon.d.mts +3 -3
  149. package/es/icons/lucideExtra/ProviderIcon.d.mts +3 -3
  150. package/es/icons/lucideExtra/RightClickIcon.d.mts +3 -3
  151. package/es/icons/lucideExtra/RightDoubleClickIcon.d.mts +3 -3
  152. package/es/icons/lucideExtra/ShapesUploadIcon.d.mts +3 -3
  153. package/es/icons/lucideExtra/TreeDownRightIcon.d.mts +3 -3
  154. package/es/icons/lucideExtra/TreeUpDownRightIcon.d.mts +2 -2
  155. package/es/index.d.mts +2 -1
  156. package/es/index.mjs +7 -6
  157. package/es/mdx/Mdx/index.d.mts +2 -2
  158. package/es/mobile/ChatHeader/ChatHeaderTitle.d.mts +2 -2
  159. package/es/mobile/ChatInputArea/components/ChatSendButton.d.mts +2 -2
  160. package/es/storybook/StoryBook/index.d.mts +2 -2
  161. package/package.json +1 -1
  162. package/es/Tooltip/TooltipPortal.mjs +0 -45
  163. package/es/Tooltip/TooltipPortal.mjs.map +0 -1
  164. package/es/hooks/usePortalContainer.mjs +0 -24
  165. package/es/hooks/usePortalContainer.mjs.map +0 -1
@@ -1,5 +1,6 @@
1
+ import { useAppElement } from "./AppElementContext.mjs";
1
2
  import { LOBE_THEME_APP_ID } from "./constants.mjs";
2
3
  import Meta_default from "./Meta.mjs";
3
4
  import ThemeProvider_default from "./ThemeProvider.mjs";
4
5
 
5
- export { LOBE_THEME_APP_ID, Meta_default as Meta, ThemeProvider_default as default };
6
+ export { LOBE_THEME_APP_ID, Meta_default as Meta, ThemeProvider_default as default, useAppElement };
@@ -1,5 +1,5 @@
1
1
  import { ToastAPI, ToastPosition } from "./type.mjs";
2
- import * as react15 from "react";
2
+ import * as react22 from "react";
3
3
 
4
4
  //#region src/Toast/imperative.d.ts
5
5
  declare const toast: ToastAPI;
@@ -31,14 +31,14 @@ interface ToastHostProps {
31
31
  */
32
32
  swipeDirection?: ('left' | 'right' | 'up' | 'down') | ('left' | 'right' | 'up' | 'down')[];
33
33
  }
34
- declare const ToastHost: react15.MemoExoticComponent<({
34
+ declare const ToastHost: react22.MemoExoticComponent<({
35
35
  root,
36
36
  className,
37
37
  duration,
38
38
  limit,
39
39
  position,
40
40
  swipeDirection
41
- }: ToastHostProps) => react15.ReactPortal | null>;
41
+ }: ToastHostProps) => react22.ReactPortal | null>;
42
42
  declare const useToast: () => ToastAPI;
43
43
  //#endregion
44
44
  export { TOAST_CONTAINER_ATTR, ToastHost, ToastHostProps, toast, useToast };
@@ -1,12 +1,10 @@
1
1
  'use client';
2
2
 
3
3
  import { useIsClient } from "../hooks/useIsClient.mjs";
4
- import { LOBE_THEME_APP_ID } from "../ThemeProvider/constants.mjs";
5
- import { registerDevSingleton } from "../utils/devSingleton.mjs";
6
4
  import { ToastContext } from "./context.mjs";
7
5
  import { viewportVariants } from "./style.mjs";
8
6
  import Toast_default from "./Toast.mjs";
9
- import { memo, useEffect, useState } from "react";
7
+ import { memo, useEffect } from "react";
10
8
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
11
9
  import { cx } from "antd-style";
12
10
  import { createPortal } from "react-dom";
@@ -164,35 +162,9 @@ const ToastList = memo(() => {
164
162
  return toasts.map((t) => /* @__PURE__ */ jsx(Toast_default, { toast: t }, t.id));
165
163
  });
166
164
  ToastList.displayName = "ToastList";
167
- const TOAST_PORTAL_ATTR = "data-lobe-ui-toast-portal";
168
165
  const TOAST_CONTAINER_ATTR = "data-lobe-ui-toast-container";
169
- const containerMap = /* @__PURE__ */ new WeakMap();
170
- const getOrCreateContainer = (root) => {
171
- const resolvedRoot = (() => {
172
- if (typeof document === "undefined") return root;
173
- if (typeof ShadowRoot !== "undefined" && root instanceof ShadowRoot) return root;
174
- if (!(root === document.body)) return root;
175
- const themeApp = document.querySelector(`#${LOBE_THEME_APP_ID}`);
176
- if (themeApp) return themeApp;
177
- const toastContainer = document.querySelector(`[${TOAST_CONTAINER_ATTR}="true"]`);
178
- if (toastContainer) return toastContainer;
179
- return root;
180
- })();
181
- const cached = containerMap.get(resolvedRoot);
182
- if (cached && cached.isConnected) return cached;
183
- const el = document.createElement("div");
184
- el.setAttribute(TOAST_PORTAL_ATTR, "true");
185
- resolvedRoot.append(el);
186
- containerMap.set(resolvedRoot, el);
187
- return el;
188
- };
189
- const resolveRoot = (root) => {
190
- if (root) return root;
191
- return document.body;
192
- };
193
166
  const ToastHost = memo(({ root, className, duration = 5e3, limit = 5, position = "bottom-right", swipeDirection = ["down", "right"] }) => {
194
167
  const isClient = useIsClient();
195
- const [container, setContainer] = useState(null);
196
168
  useEffect(() => {
197
169
  globalState = {
198
170
  duration,
@@ -206,13 +178,7 @@ const ToastHost = memo(({ root, className, duration = 5e3, limit = 5, position =
206
178
  position,
207
179
  swipeDirection
208
180
  ]);
209
- useEffect(() => {
210
- if (!isClient) return;
211
- const resolved = resolveRoot(root);
212
- if (resolved) setContainer(getOrCreateContainer(resolved));
213
- return registerDevSingleton("ToastHost", root ?? document.body);
214
- }, [isClient, root]);
215
- if (!isClient || !container) return null;
181
+ if (!isClient) return null;
216
182
  return createPortal(/* @__PURE__ */ jsx(Fragment$1, { children: ALL_POSITIONS.map((pos) => /* @__PURE__ */ jsx(ToastContext, {
217
183
  value: {
218
184
  position: pos,
@@ -222,15 +188,12 @@ const ToastHost = memo(({ root, className, duration = 5e3, limit = 5, position =
222
188
  limit,
223
189
  timeout: duration,
224
190
  toastManager: getManager(pos),
225
- children: /* @__PURE__ */ jsx(Toast.Portal, {
226
- container,
227
- children: /* @__PURE__ */ jsx(Toast.Viewport, {
228
- className: cx(viewportVariants({ position: pos }), className),
229
- children: /* @__PURE__ */ jsx(ToastList, {})
230
- })
231
- })
191
+ children: /* @__PURE__ */ jsx(Toast.Portal, { children: /* @__PURE__ */ jsx(Toast.Viewport, {
192
+ className: cx(viewportVariants({ position: pos }), className),
193
+ children: /* @__PURE__ */ jsx(ToastList, {})
194
+ }) })
232
195
  })
233
- }, pos)) }), container);
196
+ }, pos)) }), document.body);
234
197
  });
235
198
  ToastHost.displayName = "ToastHost";
236
199
  const useToast = () => toast;
@@ -1 +1 @@
1
- {"version":3,"file":"imperative.mjs","names":["ALL_POSITIONS: ToastPosition[]","globalState: ToastState","toastManagers: Record<ToastPosition, ReturnType<typeof BaseToast.createToastManager>>","BaseToast","activeToastIds: Record<ToastPosition, Set<string>>","toast: ToastAPI","ToastItem"],"sources":["../../src/Toast/imperative.tsx"],"sourcesContent":["'use client';\n\nimport { Toast as BaseToast } from '@base-ui/react/toast';\nimport { cx } from 'antd-style';\nimport { memo, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { LOBE_THEME_APP_ID } from '@/ThemeProvider';\nimport { registerDevSingleton } from '@/utils/devSingleton';\n\nimport { ToastContext } from './context';\nimport { viewportVariants } from './style';\nimport ToastItem from './Toast';\nimport {\n type ToastAPI,\n type ToastInstance,\n type ToastOptions,\n type ToastPosition,\n type ToastPromiseOptions,\n type ToastType,\n} from './type';\n\n// All possible positions\nconst ALL_POSITIONS: ToastPosition[] = [\n 'top',\n 'top-left',\n 'top-right',\n 'bottom',\n 'bottom-left',\n 'bottom-right',\n];\n\n// Global state management\ninterface ToastState {\n duration: number;\n limit: number;\n position: ToastPosition;\n swipeDirection: ('left' | 'right' | 'up' | 'down') | ('left' | 'right' | 'up' | 'down')[];\n}\n\nlet globalState: ToastState = {\n duration: 5000,\n limit: 5,\n position: 'bottom-right',\n swipeDirection: ['down', 'right'],\n};\n\n// Toast managers for each position\nconst toastManagers: Record<ToastPosition, ReturnType<typeof BaseToast.createToastManager>> = {\n 'bottom': BaseToast.createToastManager(),\n 'bottom-left': BaseToast.createToastManager(),\n 'bottom-right': BaseToast.createToastManager(),\n 'top': BaseToast.createToastManager(),\n 'top-left': BaseToast.createToastManager(),\n 'top-right': BaseToast.createToastManager(),\n};\n\nconst activeToastIds: Record<ToastPosition, Set<string>> = {\n 'bottom': new Set(),\n 'bottom-left': new Set(),\n 'bottom-right': new Set(),\n 'top': new Set(),\n 'top-left': new Set(),\n 'top-right': new Set(),\n};\n\nconst getManager = (position: ToastPosition) => toastManagers[position];\n\nconst normalizeOptions = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n type: ToastType,\n): ToastOptions => {\n if (typeof optionsOrMessage === 'string') {\n return {\n description: optionsOrMessage,\n type,\n };\n }\n return {\n ...optionsOrMessage,\n type,\n };\n};\n\nconst createToastInstance = (id: string, position: ToastPosition): ToastInstance => ({\n close: () => getManager(position).close(id),\n id,\n update: (options) => {\n getManager(position).update(id, {\n data: options,\n description: options.description,\n title: options.title,\n });\n },\n});\n\nconst addToast = (options: ToastOptions): ToastInstance => {\n const position = options.placement ?? globalState.position;\n const manager = getManager(position);\n const onRemove = options.onRemove;\n const id = manager.add({\n data: options,\n description: options.description,\n onClose: options.onClose,\n onRemove: () => {\n activeToastIds[position].delete(id);\n onRemove?.();\n },\n timeout: options.duration ?? globalState.duration,\n title: options.title,\n });\n activeToastIds[position].add(id);\n return createToastInstance(id, position);\n};\n\nconst dismissToast = (id?: string) => {\n if (id) {\n // Try to close from all managers since we don't know which position the toast is in\n for (const [position, manager] of Object.entries(toastManagers)) {\n activeToastIds[position as ToastPosition].delete(id);\n manager.close(id);\n }\n } else {\n // Clear all toasts\n for (const [position, manager] of Object.entries(toastManagers)) {\n const ids = Array.from(activeToastIds[position as ToastPosition]);\n for (const toastId of ids) {\n manager.close(toastId);\n }\n activeToastIds[position as ToastPosition].clear();\n }\n }\n};\n\nconst createSuccessToast = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'success'));\n};\n\nconst createErrorToast = (optionsOrMessage: Omit<ToastOptions, 'type'> | string): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'error'));\n};\n\nconst createInfoToast = (optionsOrMessage: Omit<ToastOptions, 'type'> | string): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'info'));\n};\n\nconst createWarningToast = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'warning'));\n};\n\nconst createLoadingToast = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n): ToastInstance => {\n const options = normalizeOptions(optionsOrMessage, 'loading');\n // Loading toasts don't auto-dismiss by default\n return addToast({ duration: 0, ...options });\n};\n\nasync function promiseToast<T>(promise: Promise<T>, options: ToastPromiseOptions<T>): Promise<T> {\n const loadingOptions =\n typeof options.loading === 'string'\n ? { description: options.loading }\n : (options.loading as ToastOptions);\n\n const loadingToast = addToast({\n closable: false,\n duration: 0,\n type: 'loading',\n ...loadingOptions,\n });\n\n try {\n const result = await promise;\n\n loadingToast.close();\n\n const successOptions = (() => {\n if (typeof options.success === 'string') {\n return { description: options.success };\n }\n if (typeof options.success === 'function') {\n return { description: options.success(result) };\n }\n return options.success as ToastOptions;\n })();\n\n addToast({ type: 'success', ...successOptions });\n\n return result;\n } catch (error) {\n loadingToast.close();\n\n const errorOptions = (() => {\n if (typeof options.error === 'string') {\n return { description: options.error };\n }\n if (typeof options.error === 'function') {\n return { description: options.error(error as Error) };\n }\n return options.error as ToastOptions;\n })();\n\n addToast({ type: 'error', ...errorOptions });\n\n throw error;\n }\n}\n\n// Base toast function\nconst baseToast = (options: ToastOptions): ToastInstance => {\n return addToast({ type: 'default', ...options });\n};\n\n// Toast API\nexport const toast: ToastAPI = Object.assign(baseToast, {\n dismiss: dismissToast,\n error: createErrorToast,\n info: createInfoToast,\n loading: createLoadingToast,\n promise: promiseToast,\n success: createSuccessToast,\n warning: createWarningToast,\n});\n\n// Toast List Component\nconst ToastList = memo(() => {\n const { toasts } = BaseToast.useToastManager();\n return toasts.map((t) => <ToastItem key={t.id} toast={t} />);\n});\n\nToastList.displayName = 'ToastList';\n\n// Toast Host Component\nconst TOAST_PORTAL_ATTR = 'data-lobe-ui-toast-portal';\nexport const TOAST_CONTAINER_ATTR = 'data-lobe-ui-toast-container';\n\nconst containerMap = new WeakMap<object, HTMLElement>();\n\nconst getOrCreateContainer = (root: HTMLElement | ShadowRoot): HTMLElement => {\n const resolvedRoot = (() => {\n if (typeof document === 'undefined') return root;\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) return root;\n\n const isBody = root === document.body;\n if (!isBody) return root;\n\n const themeApp = document.querySelector<HTMLElement>(`#${LOBE_THEME_APP_ID}`);\n if (themeApp) return themeApp;\n\n const toastContainer = document.querySelector<HTMLElement>(`[${TOAST_CONTAINER_ATTR}=\"true\"]`);\n if (toastContainer) return toastContainer;\n\n return root;\n })();\n\n const cached = containerMap.get(resolvedRoot);\n if (cached && cached.isConnected) return cached;\n\n const el = document.createElement('div');\n el.setAttribute(TOAST_PORTAL_ATTR, 'true');\n resolvedRoot.append(el);\n containerMap.set(resolvedRoot, el);\n return el;\n};\n\nconst resolveRoot = (root?: HTMLElement | ShadowRoot | null): HTMLElement | ShadowRoot | null => {\n if (root) return root;\n return document.body;\n};\n\nexport interface ToastHostProps {\n className?: string;\n /**\n * Default duration for toasts\n * @default 5000\n */\n duration?: number;\n /**\n * Maximum number of toasts\n * @default 5\n */\n limit?: number;\n /**\n * Toast position\n * @default 'bottom-right'\n */\n position?: ToastPosition;\n /**\n * Root element for portal\n */\n root?: HTMLElement | ShadowRoot | null;\n /**\n * Swipe direction to dismiss\n * @default ['down', 'right']\n */\n swipeDirection?: ('left' | 'right' | 'up' | 'down') | ('left' | 'right' | 'up' | 'down')[];\n}\n\nexport const ToastHost = memo(\n ({\n root,\n className,\n duration = 5000,\n limit = 5,\n position = 'bottom-right',\n swipeDirection = ['down', 'right'],\n }: ToastHostProps) => {\n const isClient = useIsClient();\n const [container, setContainer] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n globalState = {\n duration,\n limit,\n position,\n swipeDirection,\n };\n }, [duration, limit, position, swipeDirection]);\n\n useEffect(() => {\n if (!isClient) return;\n\n const resolved = resolveRoot(root);\n if (resolved) {\n setContainer(getOrCreateContainer(resolved));\n }\n\n const scope = root ?? document.body;\n return registerDevSingleton('ToastHost', scope);\n }, [isClient, root]);\n\n if (!isClient || !container) return null;\n\n return createPortal(\n <>\n {ALL_POSITIONS.map((pos) => (\n <ToastContext key={pos} value={{ position: pos, swipeDirection }}>\n <BaseToast.Provider limit={limit} timeout={duration} toastManager={getManager(pos)}>\n <BaseToast.Portal container={container}>\n <BaseToast.Viewport className={cx(viewportVariants({ position: pos }), className)}>\n <ToastList />\n </BaseToast.Viewport>\n </BaseToast.Portal>\n </BaseToast.Provider>\n </ToastContext>\n ))}\n </>,\n container,\n );\n },\n);\n\nToastHost.displayName = 'ToastHost';\n\n// Hook to use toast manager\nexport const useToast = () => toast;\n"],"mappings":";;;;;;;;;;;;;;;AAwBA,MAAMA,gBAAiC;CACrC;CACA;CACA;CACA;CACA;CACA;CACD;AAUD,IAAIC,cAA0B;CAC5B,UAAU;CACV,OAAO;CACP,UAAU;CACV,gBAAgB,CAAC,QAAQ,QAAQ;CAClC;AAGD,MAAMC,gBAAwF;CAC5F,UAAUC,MAAU,oBAAoB;CACxC,eAAeA,MAAU,oBAAoB;CAC7C,gBAAgBA,MAAU,oBAAoB;CAC9C,OAAOA,MAAU,oBAAoB;CACrC,YAAYA,MAAU,oBAAoB;CAC1C,aAAaA,MAAU,oBAAoB;CAC5C;AAED,MAAMC,iBAAqD;CACzD,0BAAU,IAAI,KAAK;CACnB,+BAAe,IAAI,KAAK;CACxB,gCAAgB,IAAI,KAAK;CACzB,uBAAO,IAAI,KAAK;CAChB,4BAAY,IAAI,KAAK;CACrB,6BAAa,IAAI,KAAK;CACvB;AAED,MAAM,cAAc,aAA4B,cAAc;AAE9D,MAAM,oBACJ,kBACA,SACiB;AACjB,KAAI,OAAO,qBAAqB,SAC9B,QAAO;EACL,aAAa;EACb;EACD;AAEH,QAAO;EACL,GAAG;EACH;EACD;;AAGH,MAAM,uBAAuB,IAAY,cAA4C;CACnF,aAAa,WAAW,SAAS,CAAC,MAAM,GAAG;CAC3C;CACA,SAAS,YAAY;AACnB,aAAW,SAAS,CAAC,OAAO,IAAI;GAC9B,MAAM;GACN,aAAa,QAAQ;GACrB,OAAO,QAAQ;GAChB,CAAC;;CAEL;AAED,MAAM,YAAY,YAAyC;CACzD,MAAM,WAAW,QAAQ,aAAa,YAAY;CAClD,MAAM,UAAU,WAAW,SAAS;CACpC,MAAM,WAAW,QAAQ;CACzB,MAAM,KAAK,QAAQ,IAAI;EACrB,MAAM;EACN,aAAa,QAAQ;EACrB,SAAS,QAAQ;EACjB,gBAAgB;AACd,kBAAe,UAAU,OAAO,GAAG;AACnC,eAAY;;EAEd,SAAS,QAAQ,YAAY,YAAY;EACzC,OAAO,QAAQ;EAChB,CAAC;AACF,gBAAe,UAAU,IAAI,GAAG;AAChC,QAAO,oBAAoB,IAAI,SAAS;;AAG1C,MAAM,gBAAgB,OAAgB;AACpC,KAAI,GAEF,MAAK,MAAM,CAAC,UAAU,YAAY,OAAO,QAAQ,cAAc,EAAE;AAC/D,iBAAe,UAA2B,OAAO,GAAG;AACpD,UAAQ,MAAM,GAAG;;KAInB,MAAK,MAAM,CAAC,UAAU,YAAY,OAAO,QAAQ,cAAc,EAAE;EAC/D,MAAM,MAAM,MAAM,KAAK,eAAe,UAA2B;AACjE,OAAK,MAAM,WAAW,IACpB,SAAQ,MAAM,QAAQ;AAExB,iBAAe,UAA2B,OAAO;;;AAKvD,MAAM,sBACJ,qBACkB;AAClB,QAAO,SAAS,iBAAiB,kBAAkB,UAAU,CAAC;;AAGhE,MAAM,oBAAoB,qBAAyE;AACjG,QAAO,SAAS,iBAAiB,kBAAkB,QAAQ,CAAC;;AAG9D,MAAM,mBAAmB,qBAAyE;AAChG,QAAO,SAAS,iBAAiB,kBAAkB,OAAO,CAAC;;AAG7D,MAAM,sBACJ,qBACkB;AAClB,QAAO,SAAS,iBAAiB,kBAAkB,UAAU,CAAC;;AAGhE,MAAM,sBACJ,qBACkB;AAGlB,QAAO,SAAS;EAAE,UAAU;EAAG,GAFf,iBAAiB,kBAAkB,UAAU;EAElB,CAAC;;AAG9C,eAAe,aAAgB,SAAqB,SAA6C;CAM/F,MAAM,eAAe,SAAS;EAC5B,UAAU;EACV,UAAU;EACV,MAAM;EACN,GARA,OAAO,QAAQ,YAAY,WACvB,EAAE,aAAa,QAAQ,SAAS,GAC/B,QAAQ;EAOd,CAAC;AAEF,KAAI;EACF,MAAM,SAAS,MAAM;AAErB,eAAa,OAAO;AAYpB,WAAS;GAAE,MAAM;GAAW,UAVE;AAC5B,QAAI,OAAO,QAAQ,YAAY,SAC7B,QAAO,EAAE,aAAa,QAAQ,SAAS;AAEzC,QAAI,OAAO,QAAQ,YAAY,WAC7B,QAAO,EAAE,aAAa,QAAQ,QAAQ,OAAO,EAAE;AAEjD,WAAO,QAAQ;OACb;GAE2C,CAAC;AAEhD,SAAO;UACA,OAAO;AACd,eAAa,OAAO;AAYpB,WAAS;GAAE,MAAM;GAAS,UAVE;AAC1B,QAAI,OAAO,QAAQ,UAAU,SAC3B,QAAO,EAAE,aAAa,QAAQ,OAAO;AAEvC,QAAI,OAAO,QAAQ,UAAU,WAC3B,QAAO,EAAE,aAAa,QAAQ,MAAM,MAAe,EAAE;AAEvD,WAAO,QAAQ;OACb;GAEuC,CAAC;AAE5C,QAAM;;;AAKV,MAAM,aAAa,YAAyC;AAC1D,QAAO,SAAS;EAAE,MAAM;EAAW,GAAG;EAAS,CAAC;;AAIlD,MAAaC,QAAkB,OAAO,OAAO,WAAW;CACtD,SAAS;CACT,OAAO;CACP,MAAM;CACN,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACV,CAAC;AAGF,MAAM,YAAY,WAAW;CAC3B,MAAM,EAAE,WAAWF,MAAU,iBAAiB;AAC9C,QAAO,OAAO,KAAK,MAAM,oBAACG,iBAAqB,OAAO,KAAb,EAAE,GAAgB,CAAC;EAC5D;AAEF,UAAU,cAAc;AAGxB,MAAM,oBAAoB;AAC1B,MAAa,uBAAuB;AAEpC,MAAM,+BAAe,IAAI,SAA8B;AAEvD,MAAM,wBAAwB,SAAgD;CAC5E,MAAM,sBAAsB;AAC1B,MAAI,OAAO,aAAa,YAAa,QAAO;AAC5C,MAAI,OAAO,eAAe,eAAe,gBAAgB,WAAY,QAAO;AAG5E,MAAI,EADW,SAAS,SAAS,MACpB,QAAO;EAEpB,MAAM,WAAW,SAAS,cAA2B,IAAI,oBAAoB;AAC7E,MAAI,SAAU,QAAO;EAErB,MAAM,iBAAiB,SAAS,cAA2B,IAAI,qBAAqB,UAAU;AAC9F,MAAI,eAAgB,QAAO;AAE3B,SAAO;KACL;CAEJ,MAAM,SAAS,aAAa,IAAI,aAAa;AAC7C,KAAI,UAAU,OAAO,YAAa,QAAO;CAEzC,MAAM,KAAK,SAAS,cAAc,MAAM;AACxC,IAAG,aAAa,mBAAmB,OAAO;AAC1C,cAAa,OAAO,GAAG;AACvB,cAAa,IAAI,cAAc,GAAG;AAClC,QAAO;;AAGT,MAAM,eAAe,SAA4E;AAC/F,KAAI,KAAM,QAAO;AACjB,QAAO,SAAS;;AA+BlB,MAAa,YAAY,MACtB,EACC,MACA,WACA,WAAW,KACX,QAAQ,GACR,WAAW,gBACX,iBAAiB,CAAC,QAAQ,QAAQ,OACd;CACpB,MAAM,WAAW,aAAa;CAC9B,MAAM,CAAC,WAAW,gBAAgB,SAA6B,KAAK;AAEpE,iBAAgB;AACd,gBAAc;GACZ;GACA;GACA;GACA;GACD;IACA;EAAC;EAAU;EAAO;EAAU;EAAe,CAAC;AAE/C,iBAAgB;AACd,MAAI,CAAC,SAAU;EAEf,MAAM,WAAW,YAAY,KAAK;AAClC,MAAI,SACF,cAAa,qBAAqB,SAAS,CAAC;AAI9C,SAAO,qBAAqB,aADd,QAAQ,SAAS,KACgB;IAC9C,CAAC,UAAU,KAAK,CAAC;AAEpB,KAAI,CAAC,YAAY,CAAC,UAAW,QAAO;AAEpC,QAAO,aACL,4CACG,cAAc,KAAK,QAClB,oBAAC;EAAuB,OAAO;GAAE,UAAU;GAAK;GAAgB;YAC9D,oBAACH,MAAU;GAAgB;GAAO,SAAS;GAAU,cAAc,WAAW,IAAI;aAChF,oBAACA,MAAU;IAAkB;cAC3B,oBAACA,MAAU;KAAS,WAAW,GAAG,iBAAiB,EAAE,UAAU,KAAK,CAAC,EAAE,UAAU;eAC/E,oBAAC,cAAY;MACM;KACJ;IACA;IAPJ,IAQJ,CACf,GACD,EACH,UACD;EAEJ;AAED,UAAU,cAAc;AAGxB,MAAa,iBAAiB"}
1
+ {"version":3,"file":"imperative.mjs","names":["ALL_POSITIONS: ToastPosition[]","globalState: ToastState","toastManagers: Record<ToastPosition, ReturnType<typeof BaseToast.createToastManager>>","BaseToast","activeToastIds: Record<ToastPosition, Set<string>>","toast: ToastAPI","ToastItem"],"sources":["../../src/Toast/imperative.tsx"],"sourcesContent":["'use client';\n\nimport { Toast as BaseToast } from '@base-ui/react/toast';\nimport { cx } from 'antd-style';\nimport { memo, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useIsClient } from '@/hooks/useIsClient';\n\nimport { ToastContext } from './context';\nimport { viewportVariants } from './style';\nimport ToastItem from './Toast';\nimport {\n type ToastAPI,\n type ToastInstance,\n type ToastOptions,\n type ToastPosition,\n type ToastPromiseOptions,\n type ToastType,\n} from './type';\n\n// All possible positions\nconst ALL_POSITIONS: ToastPosition[] = [\n 'top',\n 'top-left',\n 'top-right',\n 'bottom',\n 'bottom-left',\n 'bottom-right',\n];\n\n// Global state management\ninterface ToastState {\n duration: number;\n limit: number;\n position: ToastPosition;\n swipeDirection: ('left' | 'right' | 'up' | 'down') | ('left' | 'right' | 'up' | 'down')[];\n}\n\nlet globalState: ToastState = {\n duration: 5000,\n limit: 5,\n position: 'bottom-right',\n swipeDirection: ['down', 'right'],\n};\n\n// Toast managers for each position\nconst toastManagers: Record<ToastPosition, ReturnType<typeof BaseToast.createToastManager>> = {\n 'bottom': BaseToast.createToastManager(),\n 'bottom-left': BaseToast.createToastManager(),\n 'bottom-right': BaseToast.createToastManager(),\n 'top': BaseToast.createToastManager(),\n 'top-left': BaseToast.createToastManager(),\n 'top-right': BaseToast.createToastManager(),\n};\n\nconst activeToastIds: Record<ToastPosition, Set<string>> = {\n 'bottom': new Set(),\n 'bottom-left': new Set(),\n 'bottom-right': new Set(),\n 'top': new Set(),\n 'top-left': new Set(),\n 'top-right': new Set(),\n};\n\nconst getManager = (position: ToastPosition) => toastManagers[position];\n\nconst normalizeOptions = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n type: ToastType,\n): ToastOptions => {\n if (typeof optionsOrMessage === 'string') {\n return {\n description: optionsOrMessage,\n type,\n };\n }\n return {\n ...optionsOrMessage,\n type,\n };\n};\n\nconst createToastInstance = (id: string, position: ToastPosition): ToastInstance => ({\n close: () => getManager(position).close(id),\n id,\n update: (options) => {\n getManager(position).update(id, {\n data: options,\n description: options.description,\n title: options.title,\n });\n },\n});\n\nconst addToast = (options: ToastOptions): ToastInstance => {\n const position = options.placement ?? globalState.position;\n const manager = getManager(position);\n const onRemove = options.onRemove;\n const id = manager.add({\n data: options,\n description: options.description,\n onClose: options.onClose,\n onRemove: () => {\n activeToastIds[position].delete(id);\n onRemove?.();\n },\n timeout: options.duration ?? globalState.duration,\n title: options.title,\n });\n activeToastIds[position].add(id);\n return createToastInstance(id, position);\n};\n\nconst dismissToast = (id?: string) => {\n if (id) {\n // Try to close from all managers since we don't know which position the toast is in\n for (const [position, manager] of Object.entries(toastManagers)) {\n activeToastIds[position as ToastPosition].delete(id);\n manager.close(id);\n }\n } else {\n // Clear all toasts\n for (const [position, manager] of Object.entries(toastManagers)) {\n const ids = Array.from(activeToastIds[position as ToastPosition]);\n for (const toastId of ids) {\n manager.close(toastId);\n }\n activeToastIds[position as ToastPosition].clear();\n }\n }\n};\n\nconst createSuccessToast = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'success'));\n};\n\nconst createErrorToast = (optionsOrMessage: Omit<ToastOptions, 'type'> | string): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'error'));\n};\n\nconst createInfoToast = (optionsOrMessage: Omit<ToastOptions, 'type'> | string): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'info'));\n};\n\nconst createWarningToast = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n): ToastInstance => {\n return addToast(normalizeOptions(optionsOrMessage, 'warning'));\n};\n\nconst createLoadingToast = (\n optionsOrMessage: Omit<ToastOptions, 'type'> | string,\n): ToastInstance => {\n const options = normalizeOptions(optionsOrMessage, 'loading');\n // Loading toasts don't auto-dismiss by default\n return addToast({ duration: 0, ...options });\n};\n\nasync function promiseToast<T>(promise: Promise<T>, options: ToastPromiseOptions<T>): Promise<T> {\n const loadingOptions =\n typeof options.loading === 'string'\n ? { description: options.loading }\n : (options.loading as ToastOptions);\n\n const loadingToast = addToast({\n closable: false,\n duration: 0,\n type: 'loading',\n ...loadingOptions,\n });\n\n try {\n const result = await promise;\n\n loadingToast.close();\n\n const successOptions = (() => {\n if (typeof options.success === 'string') {\n return { description: options.success };\n }\n if (typeof options.success === 'function') {\n return { description: options.success(result) };\n }\n return options.success as ToastOptions;\n })();\n\n addToast({ type: 'success', ...successOptions });\n\n return result;\n } catch (error) {\n loadingToast.close();\n\n const errorOptions = (() => {\n if (typeof options.error === 'string') {\n return { description: options.error };\n }\n if (typeof options.error === 'function') {\n return { description: options.error(error as Error) };\n }\n return options.error as ToastOptions;\n })();\n\n addToast({ type: 'error', ...errorOptions });\n\n throw error;\n }\n}\n\n// Base toast function\nconst baseToast = (options: ToastOptions): ToastInstance => {\n return addToast({ type: 'default', ...options });\n};\n\n// Toast API\nexport const toast: ToastAPI = Object.assign(baseToast, {\n dismiss: dismissToast,\n error: createErrorToast,\n info: createInfoToast,\n loading: createLoadingToast,\n promise: promiseToast,\n success: createSuccessToast,\n warning: createWarningToast,\n});\n\n// Toast List Component\nconst ToastList = memo(() => {\n const { toasts } = BaseToast.useToastManager();\n return toasts.map((t) => <ToastItem key={t.id} toast={t} />);\n});\n\nToastList.displayName = 'ToastList';\n\nexport const TOAST_CONTAINER_ATTR = 'data-lobe-ui-toast-container';\n\nconst resolveRoot = (root?: HTMLElement | ShadowRoot | null): HTMLElement | ShadowRoot | null => {\n if (root) return root;\n return document.body;\n};\n\nexport interface ToastHostProps {\n className?: string;\n /**\n * Default duration for toasts\n * @default 5000\n */\n duration?: number;\n /**\n * Maximum number of toasts\n * @default 5\n */\n limit?: number;\n /**\n * Toast position\n * @default 'bottom-right'\n */\n position?: ToastPosition;\n /**\n * Root element for portal\n */\n root?: HTMLElement | ShadowRoot | null;\n /**\n * Swipe direction to dismiss\n * @default ['down', 'right']\n */\n swipeDirection?: ('left' | 'right' | 'up' | 'down') | ('left' | 'right' | 'up' | 'down')[];\n}\n\nexport const ToastHost = memo(\n ({\n root,\n className,\n duration = 5000,\n limit = 5,\n position = 'bottom-right',\n swipeDirection = ['down', 'right'],\n }: ToastHostProps) => {\n const isClient = useIsClient();\n\n useEffect(() => {\n globalState = {\n duration,\n limit,\n position,\n swipeDirection,\n };\n }, [duration, limit, position, swipeDirection]);\n\n if (!isClient) return null;\n\n return createPortal(\n <>\n {ALL_POSITIONS.map((pos) => (\n <ToastContext key={pos} value={{ position: pos, swipeDirection }}>\n <BaseToast.Provider limit={limit} timeout={duration} toastManager={getManager(pos)}>\n <BaseToast.Portal>\n <BaseToast.Viewport className={cx(viewportVariants({ position: pos }), className)}>\n <ToastList />\n </BaseToast.Viewport>\n </BaseToast.Portal>\n </BaseToast.Provider>\n </ToastContext>\n ))}\n </>,\n document.body,\n );\n },\n);\n\nToastHost.displayName = 'ToastHost';\n\n// Hook to use toast manager\nexport const useToast = () => toast;\n"],"mappings":"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"}
package/es/Toc/Toc.d.mts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { TocProps } from "./type.mjs";
2
- import * as react8 from "react";
2
+ import * as react20 from "react";
3
3
 
4
4
  //#region src/Toc/Toc.d.ts
5
- declare const Toc: react8.NamedExoticComponent<TocProps>;
5
+ declare const Toc: react20.NamedExoticComponent<TocProps>;
6
6
  //#endregion
7
7
  export { Toc };
8
8
  //# sourceMappingURL=Toc.d.mts.map
@@ -2,11 +2,11 @@
2
2
 
3
3
  import { TooltipGroupHandleContext, TooltipGroupPropsContext } from "./groupContext.mjs";
4
4
  import { useFloatingLayer } from "../hooks/useFloatingLayer.mjs";
5
+ import { useAppElement } from "../ThemeProvider/AppElementContext.mjs";
5
6
  import { placementMap } from "../utils/placement.mjs";
6
7
  import { TooltipArrowIcon } from "./ArrowIcon.mjs";
7
8
  import { styles } from "./style.mjs";
8
9
  import TooltipContent_default from "./TooltipContent.mjs";
9
- import { useTooltipPortalContainer } from "./TooltipPortal.mjs";
10
10
  import { useDestroyOnInvalidActiveTriggerElement, useHidePopupWhenPositionerAtOrigin } from "../utils/destroyOnInvalidActiveTriggerElement.mjs";
11
11
  import { useCallback, useRef, useState } from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -30,8 +30,8 @@ const TooltipGroup = ({ children, disableDestroyOnInvalidTrigger = false, disabl
30
30
  const handleOpenChange = useCallback((open) => {
31
31
  activeItemRef.current?.onOpenChange?.(open);
32
32
  }, []);
33
- const defaultPortalContainer = useTooltipPortalContainer();
34
- const portalContainer = useFloatingLayer() ?? defaultPortalContainer;
33
+ const appElement = useAppElement();
34
+ const portalContainer = useFloatingLayer() ?? appElement;
35
35
  useDestroyOnInvalidActiveTriggerElement(handle.store, destroy, { enabled: !disableDestroyOnInvalidTrigger });
36
36
  useHidePopupWhenPositionerAtOrigin(handle.store, { enabled: !disableZeroOriginGuard });
37
37
  return /* @__PURE__ */ jsx(TooltipGroupHandleContext, {
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipGroup.mjs","names":["TooltipGroup: FC<TooltipGroupProps>","BaseTooltip","key","TooltipContent"],"sources":["../../src/Tooltip/TooltipGroup.tsx"],"sourcesContent":["'use client';\n\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { cx } from 'antd-style';\nimport { type FC, useCallback, useRef, useState } from 'react';\n\nimport { useFloatingLayer } from '@/hooks/useFloatingLayer';\nimport {\n useDestroyOnInvalidActiveTriggerElement,\n useHidePopupWhenPositionerAtOrigin,\n} from '@/utils/destroyOnInvalidActiveTriggerElement';\nimport { placementMap } from '@/utils/placement';\n\nimport { TooltipArrowIcon } from './ArrowIcon';\nimport {\n TooltipGroupHandleContext,\n type TooltipGroupItem,\n TooltipGroupPropsContext,\n} from './groupContext';\nimport { styles } from './style';\nimport TooltipContent from './TooltipContent';\nimport { useTooltipPortalContainer } from './TooltipPortal';\nimport { type TooltipGroupProps } from './type';\n\nconst TooltipGroup: FC<TooltipGroupProps> = ({\n children,\n disableDestroyOnInvalidTrigger = false,\n disableZeroOriginGuard = false,\n layoutAnimation = false,\n ...sharedProps\n}) => {\n const [{ handle, key }, setHandleState] = useState(() => ({\n handle: BaseTooltip.createHandle<TooltipGroupItem>(),\n key: 0,\n }));\n const activeItemRef = useRef<TooltipGroupItem | null>(null);\n\n const destroy = useCallback(() => {\n activeItemRef.current = null;\n setHandleState(({ key }) => ({\n handle: BaseTooltip.createHandle<TooltipGroupItem>(),\n key: key + 1,\n }));\n }, []);\n\n const handleOpenChange = useCallback((open: boolean) => {\n activeItemRef.current?.onOpenChange?.(open);\n }, []);\n\n const defaultPortalContainer = useTooltipPortalContainer();\n const floatingLayerContainer = useFloatingLayer();\n const portalContainer = floatingLayerContainer ?? defaultPortalContainer;\n\n useDestroyOnInvalidActiveTriggerElement(handle.store, destroy, {\n enabled: !disableDestroyOnInvalidTrigger,\n });\n useHidePopupWhenPositionerAtOrigin(handle.store, { enabled: !disableZeroOriginGuard });\n\n return (\n <TooltipGroupHandleContext value={handle}>\n <TooltipGroupPropsContext value={sharedProps}>\n {children}\n\n <BaseTooltip.Root handle={handle} key={key} onOpenChange={handleOpenChange}>\n {({ payload }) => {\n const item = (payload as TooltipGroupItem | null) ?? null;\n activeItemRef.current = item;\n\n if (!item || (item.title == null && !item.hotkey)) return null;\n\n const arrow = item.arrow ?? false;\n const placement = item.placement ?? 'top';\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 8 : 6;\n\n const resolvedClassNames = {\n arrow: cx(styles.arrow, item.classNames?.arrow),\n popup: cx(\n styles.popup,\n item.className,\n item.classNames?.root,\n item.classNames?.container,\n ),\n positioner: styles.positioner,\n viewport: cx(styles.viewport, item.classNames?.content),\n };\n\n const resolvedStyleProps = (() => {\n if (typeof item.styles === 'function') return undefined;\n return item.styles;\n })();\n\n const resolvedStyles = {\n arrow: resolvedStyleProps?.arrow,\n popup: {\n ...resolvedStyleProps?.root,\n ...resolvedStyleProps?.container,\n },\n positioner: {\n zIndex: item.zIndex ?? 114_514,\n },\n viewport: resolvedStyleProps?.content,\n };\n\n const body = layoutAnimation ? (\n <BaseTooltip.Viewport\n className={resolvedClassNames.viewport}\n style={resolvedStyles.viewport}\n >\n <TooltipContent\n hotkey={item.hotkey}\n hotkeyProps={item.hotkeyProps}\n title={item.title}\n />\n </BaseTooltip.Viewport>\n ) : (\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n <TooltipContent\n hotkey={item.hotkey}\n hotkeyProps={item.hotkeyProps}\n title={item.title}\n />\n </div>\n );\n\n const popup = (\n <BaseTooltip.Positioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-layout-animation={layoutAnimation || undefined}\n data-placement={placement}\n side={placementConfig.side}\n sideOffset={baseSideOffset}\n style={resolvedStyles.positioner}\n {...item.positionerProps}\n >\n <BaseTooltip.Popup\n className={resolvedClassNames.popup}\n data-layout-animation={layoutAnimation || undefined}\n style={resolvedStyles.popup}\n {...item.popupProps}\n >\n {arrow && (\n <BaseTooltip.Arrow\n className={resolvedClassNames.arrow}\n style={resolvedStyles.arrow}\n >\n {TooltipArrowIcon}\n </BaseTooltip.Arrow>\n )}\n {body}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n );\n\n return portalContainer ? (\n <BaseTooltip.Portal container={portalContainer}>{popup}</BaseTooltip.Portal>\n ) : null;\n }}\n </BaseTooltip.Root>\n </TooltipGroupPropsContext>\n </TooltipGroupHandleContext>\n );\n};\n\nTooltipGroup.displayName = 'TooltipGroup';\n\nexport default TooltipGroup;\n"],"mappings":";;;;;;;;;;;;;;;;AAwBA,MAAMA,gBAAuC,EAC3C,UACA,iCAAiC,OACjC,yBAAyB,OACzB,kBAAkB,OAClB,GAAG,kBACC;CACJ,MAAM,CAAC,EAAE,QAAQ,OAAO,kBAAkB,gBAAgB;EACxD,QAAQC,QAAY,cAAgC;EACpD,KAAK;EACN,EAAE;CACH,MAAM,gBAAgB,OAAgC,KAAK;CAE3D,MAAM,UAAU,kBAAkB;AAChC,gBAAc,UAAU;AACxB,kBAAgB,EAAE,kBAAW;GAC3B,QAAQA,QAAY,cAAgC;GACpD,KAAKC,QAAM;GACZ,EAAE;IACF,EAAE,CAAC;CAEN,MAAM,mBAAmB,aAAa,SAAkB;AACtD,gBAAc,SAAS,eAAe,KAAK;IAC1C,EAAE,CAAC;CAEN,MAAM,yBAAyB,2BAA2B;CAE1D,MAAM,kBADyB,kBAAkB,IACC;AAElD,yCAAwC,OAAO,OAAO,SAAS,EAC7D,SAAS,CAAC,gCACX,CAAC;AACF,oCAAmC,OAAO,OAAO,EAAE,SAAS,CAAC,wBAAwB,CAAC;AAEtF,QACE,oBAAC;EAA0B,OAAO;YAChC,qBAAC;GAAyB,OAAO;cAC9B,UAED,oBAACD,QAAY;IAAa;IAAkB,cAAc;eACtD,EAAE,cAAc;KAChB,MAAM,OAAQ,WAAuC;AACrD,mBAAc,UAAU;AAExB,SAAI,CAAC,QAAS,KAAK,SAAS,QAAQ,CAAC,KAAK,OAAS,QAAO;KAE1D,MAAM,QAAQ,KAAK,SAAS;KAC5B,MAAM,YAAY,KAAK,aAAa;KACpC,MAAM,kBAAkB,aAAa,cAAc,aAAa;KAChE,MAAM,iBAAiB,QAAQ,IAAI;KAEnC,MAAM,qBAAqB;MACzB,OAAO,GAAG,OAAO,OAAO,KAAK,YAAY,MAAM;MAC/C,OAAO,GACL,OAAO,OACP,KAAK,WACL,KAAK,YAAY,MACjB,KAAK,YAAY,UAClB;MACD,YAAY,OAAO;MACnB,UAAU,GAAG,OAAO,UAAU,KAAK,YAAY,QAAQ;MACxD;KAED,MAAM,4BAA4B;AAChC,UAAI,OAAO,KAAK,WAAW,WAAY,QAAO;AAC9C,aAAO,KAAK;SACV;KAEJ,MAAM,iBAAiB;MACrB,OAAO,oBAAoB;MAC3B,OAAO;OACL,GAAG,oBAAoB;OACvB,GAAG,oBAAoB;OACxB;MACD,YAAY,EACV,QAAQ,KAAK,UAAU,QACxB;MACD,UAAU,oBAAoB;MAC/B;KAED,MAAM,OAAO,kBACX,oBAACA,QAAY;MACX,WAAW,mBAAmB;MAC9B,OAAO,eAAe;gBAEtB,oBAACE;OACC,QAAQ,KAAK;OACb,aAAa,KAAK;OAClB,OAAO,KAAK;QACZ;OACmB,GAEvB,oBAAC;MAAI,WAAW,mBAAmB;MAAU,OAAO,eAAe;gBACjE,oBAACA;OACC,QAAQ,KAAK;OACb,aAAa,KAAK;OAClB,OAAO,KAAK;QACZ;OACE;KAGR,MAAM,QACJ,oBAACF,QAAY;MACX,OAAO,gBAAgB;MACvB,WAAW,mBAAmB;MAC9B,yBAAuB,mBAAmB;MAC1C,kBAAgB;MAChB,MAAM,gBAAgB;MACtB,YAAY;MACZ,OAAO,eAAe;MACtB,GAAI,KAAK;gBAET,qBAACA,QAAY;OACX,WAAW,mBAAmB;OAC9B,yBAAuB,mBAAmB;OAC1C,OAAO,eAAe;OACtB,GAAI,KAAK;kBAER,SACC,oBAACA,QAAY;QACX,WAAW,mBAAmB;QAC9B,OAAO,eAAe;kBAErB;SACiB,EAErB;QACiB;OACG;AAG3B,YAAO,kBACL,oBAACA,QAAY;MAAO,WAAW;gBAAkB;OAA2B,GAC1E;;MA9F+B,IAgGpB;IACM;GACD;;AAIhC,aAAa,cAAc;AAE3B,2BAAe"}
1
+ {"version":3,"file":"TooltipGroup.mjs","names":["TooltipGroup: FC<TooltipGroupProps>","BaseTooltip","key","TooltipContent"],"sources":["../../src/Tooltip/TooltipGroup.tsx"],"sourcesContent":["'use client';\n\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { cx } from 'antd-style';\nimport { type FC, useCallback, useRef, useState } from 'react';\n\nimport { useFloatingLayer } from '@/hooks/useFloatingLayer';\nimport { useAppElement } from '@/ThemeProvider';\nimport {\n useDestroyOnInvalidActiveTriggerElement,\n useHidePopupWhenPositionerAtOrigin,\n} from '@/utils/destroyOnInvalidActiveTriggerElement';\nimport { placementMap } from '@/utils/placement';\n\nimport { TooltipArrowIcon } from './ArrowIcon';\nimport {\n TooltipGroupHandleContext,\n type TooltipGroupItem,\n TooltipGroupPropsContext,\n} from './groupContext';\nimport { styles } from './style';\nimport TooltipContent from './TooltipContent';\nimport { type TooltipGroupProps } from './type';\n\nconst TooltipGroup: FC<TooltipGroupProps> = ({\n children,\n disableDestroyOnInvalidTrigger = false,\n disableZeroOriginGuard = false,\n layoutAnimation = false,\n ...sharedProps\n}) => {\n const [{ handle, key }, setHandleState] = useState(() => ({\n handle: BaseTooltip.createHandle<TooltipGroupItem>(),\n key: 0,\n }));\n const activeItemRef = useRef<TooltipGroupItem | null>(null);\n\n const destroy = useCallback(() => {\n activeItemRef.current = null;\n setHandleState(({ key }) => ({\n handle: BaseTooltip.createHandle<TooltipGroupItem>(),\n key: key + 1,\n }));\n }, []);\n\n const handleOpenChange = useCallback((open: boolean) => {\n activeItemRef.current?.onOpenChange?.(open);\n }, []);\n\n const appElement = useAppElement();\n const floatingLayerContainer = useFloatingLayer();\n const portalContainer = floatingLayerContainer ?? appElement;\n\n useDestroyOnInvalidActiveTriggerElement(handle.store, destroy, {\n enabled: !disableDestroyOnInvalidTrigger,\n });\n useHidePopupWhenPositionerAtOrigin(handle.store, { enabled: !disableZeroOriginGuard });\n\n return (\n <TooltipGroupHandleContext value={handle}>\n <TooltipGroupPropsContext value={sharedProps}>\n {children}\n\n <BaseTooltip.Root handle={handle} key={key} onOpenChange={handleOpenChange}>\n {({ payload }) => {\n const item = (payload as TooltipGroupItem | null) ?? null;\n activeItemRef.current = item;\n\n if (!item || (item.title == null && !item.hotkey)) return null;\n\n const arrow = item.arrow ?? false;\n const placement = item.placement ?? 'top';\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 8 : 6;\n\n const resolvedClassNames = {\n arrow: cx(styles.arrow, item.classNames?.arrow),\n popup: cx(\n styles.popup,\n item.className,\n item.classNames?.root,\n item.classNames?.container,\n ),\n positioner: styles.positioner,\n viewport: cx(styles.viewport, item.classNames?.content),\n };\n\n const resolvedStyleProps = (() => {\n if (typeof item.styles === 'function') return undefined;\n return item.styles;\n })();\n\n const resolvedStyles = {\n arrow: resolvedStyleProps?.arrow,\n popup: {\n ...resolvedStyleProps?.root,\n ...resolvedStyleProps?.container,\n },\n positioner: {\n zIndex: item.zIndex ?? 114_514,\n },\n viewport: resolvedStyleProps?.content,\n };\n\n const body = layoutAnimation ? (\n <BaseTooltip.Viewport\n className={resolvedClassNames.viewport}\n style={resolvedStyles.viewport}\n >\n <TooltipContent\n hotkey={item.hotkey}\n hotkeyProps={item.hotkeyProps}\n title={item.title}\n />\n </BaseTooltip.Viewport>\n ) : (\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n <TooltipContent\n hotkey={item.hotkey}\n hotkeyProps={item.hotkeyProps}\n title={item.title}\n />\n </div>\n );\n\n const popup = (\n <BaseTooltip.Positioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-layout-animation={layoutAnimation || undefined}\n data-placement={placement}\n side={placementConfig.side}\n sideOffset={baseSideOffset}\n style={resolvedStyles.positioner}\n {...item.positionerProps}\n >\n <BaseTooltip.Popup\n className={resolvedClassNames.popup}\n data-layout-animation={layoutAnimation || undefined}\n style={resolvedStyles.popup}\n {...item.popupProps}\n >\n {arrow && (\n <BaseTooltip.Arrow\n className={resolvedClassNames.arrow}\n style={resolvedStyles.arrow}\n >\n {TooltipArrowIcon}\n </BaseTooltip.Arrow>\n )}\n {body}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n );\n\n return portalContainer ? (\n <BaseTooltip.Portal container={portalContainer}>{popup}</BaseTooltip.Portal>\n ) : null;\n }}\n </BaseTooltip.Root>\n </TooltipGroupPropsContext>\n </TooltipGroupHandleContext>\n );\n};\n\nTooltipGroup.displayName = 'TooltipGroup';\n\nexport default TooltipGroup;\n"],"mappings":";;;;;;;;;;;;;;;;AAwBA,MAAMA,gBAAuC,EAC3C,UACA,iCAAiC,OACjC,yBAAyB,OACzB,kBAAkB,OAClB,GAAG,kBACC;CACJ,MAAM,CAAC,EAAE,QAAQ,OAAO,kBAAkB,gBAAgB;EACxD,QAAQC,QAAY,cAAgC;EACpD,KAAK;EACN,EAAE;CACH,MAAM,gBAAgB,OAAgC,KAAK;CAE3D,MAAM,UAAU,kBAAkB;AAChC,gBAAc,UAAU;AACxB,kBAAgB,EAAE,kBAAW;GAC3B,QAAQA,QAAY,cAAgC;GACpD,KAAKC,QAAM;GACZ,EAAE;IACF,EAAE,CAAC;CAEN,MAAM,mBAAmB,aAAa,SAAkB;AACtD,gBAAc,SAAS,eAAe,KAAK;IAC1C,EAAE,CAAC;CAEN,MAAM,aAAa,eAAe;CAElC,MAAM,kBADyB,kBAAkB,IACC;AAElD,yCAAwC,OAAO,OAAO,SAAS,EAC7D,SAAS,CAAC,gCACX,CAAC;AACF,oCAAmC,OAAO,OAAO,EAAE,SAAS,CAAC,wBAAwB,CAAC;AAEtF,QACE,oBAAC;EAA0B,OAAO;YAChC,qBAAC;GAAyB,OAAO;cAC9B,UAED,oBAACD,QAAY;IAAa;IAAkB,cAAc;eACtD,EAAE,cAAc;KAChB,MAAM,OAAQ,WAAuC;AACrD,mBAAc,UAAU;AAExB,SAAI,CAAC,QAAS,KAAK,SAAS,QAAQ,CAAC,KAAK,OAAS,QAAO;KAE1D,MAAM,QAAQ,KAAK,SAAS;KAC5B,MAAM,YAAY,KAAK,aAAa;KACpC,MAAM,kBAAkB,aAAa,cAAc,aAAa;KAChE,MAAM,iBAAiB,QAAQ,IAAI;KAEnC,MAAM,qBAAqB;MACzB,OAAO,GAAG,OAAO,OAAO,KAAK,YAAY,MAAM;MAC/C,OAAO,GACL,OAAO,OACP,KAAK,WACL,KAAK,YAAY,MACjB,KAAK,YAAY,UAClB;MACD,YAAY,OAAO;MACnB,UAAU,GAAG,OAAO,UAAU,KAAK,YAAY,QAAQ;MACxD;KAED,MAAM,4BAA4B;AAChC,UAAI,OAAO,KAAK,WAAW,WAAY,QAAO;AAC9C,aAAO,KAAK;SACV;KAEJ,MAAM,iBAAiB;MACrB,OAAO,oBAAoB;MAC3B,OAAO;OACL,GAAG,oBAAoB;OACvB,GAAG,oBAAoB;OACxB;MACD,YAAY,EACV,QAAQ,KAAK,UAAU,QACxB;MACD,UAAU,oBAAoB;MAC/B;KAED,MAAM,OAAO,kBACX,oBAACA,QAAY;MACX,WAAW,mBAAmB;MAC9B,OAAO,eAAe;gBAEtB,oBAACE;OACC,QAAQ,KAAK;OACb,aAAa,KAAK;OAClB,OAAO,KAAK;QACZ;OACmB,GAEvB,oBAAC;MAAI,WAAW,mBAAmB;MAAU,OAAO,eAAe;gBACjE,oBAACA;OACC,QAAQ,KAAK;OACb,aAAa,KAAK;OAClB,OAAO,KAAK;QACZ;OACE;KAGR,MAAM,QACJ,oBAACF,QAAY;MACX,OAAO,gBAAgB;MACvB,WAAW,mBAAmB;MAC9B,yBAAuB,mBAAmB;MAC1C,kBAAgB;MAChB,MAAM,gBAAgB;MACtB,YAAY;MACZ,OAAO,eAAe;MACtB,GAAI,KAAK;gBAET,qBAACA,QAAY;OACX,WAAW,mBAAmB;OAC9B,yBAAuB,mBAAmB;OAC1C,OAAO,eAAe;OACtB,GAAI,KAAK;kBAER,SACC,oBAACA,QAAY;QACX,WAAW,mBAAmB;QAC9B,OAAO,eAAe;kBAErB;SACiB,EAErB;QACiB;OACG;AAG3B,YAAO,kBACL,oBAACA,QAAY;MAAO,WAAW;gBAAkB;OAA2B,GAC1E;;MA9F+B,IAgGpB;IACM;GACD;;AAIhC,aAAa,cAAc;AAE3B,2BAAe"}
@@ -3,11 +3,11 @@
3
3
  import { useNativeButton } from "../hooks/useNativeButton.mjs";
4
4
  import { useFloatingLayer } from "../hooks/useFloatingLayer.mjs";
5
5
  import { useIsClient } from "../hooks/useIsClient.mjs";
6
+ import { useAppElement } from "../ThemeProvider/AppElementContext.mjs";
6
7
  import { placementMap } from "../utils/placement.mjs";
7
8
  import { TooltipArrowIcon } from "./ArrowIcon.mjs";
8
9
  import { styles } from "./style.mjs";
9
10
  import TooltipContent_default from "./TooltipContent.mjs";
10
- import { useTooltipPortalContainer } from "./TooltipPortal.mjs";
11
11
  import { cloneElement, isValidElement, memo, useCallback, useMemo, useState } from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
13
  import { cx } from "antd-style";
@@ -47,8 +47,8 @@ const TooltipStandalone = memo(({ children, title, arrow = false, className, cla
47
47
  }, [closeDelay, mouseLeaveDelay]);
48
48
  const placementConfig = placementMap[placement] ?? placementMap.top;
49
49
  const baseSideOffset = arrow ? 8 : 6;
50
- const defaultPortalContainer = useTooltipPortalContainer();
51
- const portalContainer = useFloatingLayer() ?? defaultPortalContainer;
50
+ const appElement = useAppElement();
51
+ const portalContainer = useFloatingLayer() ?? appElement;
52
52
  const { isNativeButtonTriggerElement } = useNativeButton({ children });
53
53
  const resolvedClassNames = useMemo(() => ({
54
54
  arrow: cx(styles.arrow, classNames?.arrow),
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipStandalone.mjs","names":["BaseTooltip","TooltipContent"],"sources":["../../src/Tooltip/TooltipStandalone.tsx"],"sourcesContent":["'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { cx } from 'antd-style';\nimport { cloneElement, isValidElement, memo, useCallback, useMemo, useState } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { useFloatingLayer } from '@/hooks/useFloatingLayer';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { placementMap } from '@/utils/placement';\n\nimport { TooltipArrowIcon } from './ArrowIcon';\nimport { styles } from './style';\nimport TooltipContent from './TooltipContent';\nimport { useTooltipPortalContainer } from './TooltipPortal';\nimport { type TooltipProps } from './type';\n\nconst DEFAULT_OPEN_DELAY = 400;\nconst DEFAULT_CLOSE_DELAY = 100;\n\n/**\n * Tooltip component - displays small contextual hints on hover/focus\n * Compatible with Ant Design Tooltip-like API (subset)\n */\nexport const TooltipStandalone = memo<TooltipProps>(\n ({\n children,\n title,\n arrow = false,\n className,\n classNames,\n closeDelay,\n defaultOpen = false,\n disabled = false,\n getPopupContainer,\n hotkey,\n hotkeyProps,\n mouseEnterDelay,\n mouseLeaveDelay,\n onOpenChange,\n open,\n openDelay,\n placement = 'top',\n styles: styleProps,\n zIndex,\n ref: refProp,\n positionerProps,\n triggerProps,\n popupProps,\n portalProps,\n }) => {\n const isClient = useIsClient();\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n\n const mergedOpen = open ?? uncontrolledOpen;\n const resolvedOpen = disabled ? false : mergedOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (disabled && nextOpen) return;\n onOpenChange?.(nextOpen);\n if (open === undefined) {\n setUncontrolledOpen(nextOpen);\n }\n },\n [disabled, onOpenChange, open],\n );\n\n const resolvedOpenDelay = useMemo(() => {\n if (openDelay !== undefined) return openDelay;\n if (mouseEnterDelay !== undefined) return mouseEnterDelay * 1000;\n return DEFAULT_OPEN_DELAY;\n }, [mouseEnterDelay, openDelay]);\n\n const resolvedCloseDelay = useMemo(() => {\n if (closeDelay !== undefined) return closeDelay;\n if (mouseLeaveDelay !== undefined) return mouseLeaveDelay * 1000;\n return DEFAULT_CLOSE_DELAY;\n }, [closeDelay, mouseLeaveDelay]);\n\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 8 : 6;\n\n const defaultPortalContainer = useTooltipPortalContainer();\n const floatingLayerContainer = useFloatingLayer();\n const portalContainer = floatingLayerContainer ?? defaultPortalContainer;\n\n const { isNativeButtonTriggerElement } = useNativeButton({\n children,\n });\n\n const resolvedClassNames = useMemo(\n () => ({\n arrow: cx(styles.arrow, classNames?.arrow),\n popup: cx(styles.popup, className, classNames?.root, classNames?.container),\n positioner: styles.positioner,\n viewport: cx(styles.viewport, classNames?.content),\n }),\n [className, classNames?.arrow, classNames?.container, classNames?.content, classNames?.root],\n );\n\n const resolvedStyleProps = useMemo(() => {\n if (typeof styleProps === 'function') return undefined;\n return styleProps;\n }, [styleProps]);\n\n const resolvedStyles = useMemo(\n () => ({\n arrow: resolvedStyleProps?.arrow,\n popup: {\n ...resolvedStyleProps?.root,\n ...resolvedStyleProps?.container,\n },\n positioner: {\n zIndex: zIndex ?? 114_514,\n },\n viewport: resolvedStyleProps?.content,\n }),\n [resolvedStyleProps, zIndex],\n );\n\n const triggerElement = useMemo(() => {\n const baseTriggerProps = {\n closeDelay: resolvedCloseDelay,\n delay: resolvedOpenDelay,\n disabled,\n ...triggerProps,\n };\n\n if (isValidElement(children)) {\n return (\n <BaseTooltip.Trigger\n {...baseTriggerProps}\n render={(props) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n return cloneElement(children as any, {\n ...mergedProps,\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n }}\n />\n );\n }\n\n return (\n <BaseTooltip.Trigger {...baseTriggerProps} ref={refProp}>\n {children}\n </BaseTooltip.Trigger>\n );\n }, [\n children,\n disabled,\n isNativeButtonTriggerElement,\n refProp,\n resolvedCloseDelay,\n resolvedOpenDelay,\n triggerProps,\n ]);\n\n const customContainer = useMemo(() => {\n if (!getPopupContainer || !isClient) return undefined;\n return undefined;\n }, [getPopupContainer, isClient]);\n\n const popup = useMemo(\n () => (\n <BaseTooltip.Positioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-placement={placement}\n side={placementConfig.side}\n sideOffset={baseSideOffset}\n style={resolvedStyles.positioner}\n {...positionerProps}\n >\n <BaseTooltip.Popup\n className={resolvedClassNames.popup}\n style={resolvedStyles.popup}\n {...popupProps}\n >\n {arrow && (\n <BaseTooltip.Arrow className={resolvedClassNames.arrow} style={resolvedStyles.arrow}>\n {TooltipArrowIcon}\n </BaseTooltip.Arrow>\n )}\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n <TooltipContent hotkey={hotkey} hotkeyProps={hotkeyProps} title={title} />\n </div>\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n ),\n [\n arrow,\n baseSideOffset,\n hotkey,\n hotkeyProps,\n placement,\n placementConfig.align,\n placementConfig.side,\n popupProps,\n positionerProps,\n resolvedClassNames,\n resolvedStyles,\n title,\n ],\n );\n\n if (title == null && !hotkey) {\n return children;\n }\n\n const resolvedPortalContainer = customContainer ?? portalContainer;\n\n return (\n <BaseTooltip.Root\n defaultOpen={defaultOpen}\n disabled={disabled}\n open={resolvedOpen}\n onOpenChange={handleOpenChange}\n >\n {triggerElement}\n {resolvedPortalContainer ? (\n <BaseTooltip.Portal container={resolvedPortalContainer} {...portalProps}>\n {popup}\n </BaseTooltip.Portal>\n ) : null}\n </BaseTooltip.Root>\n );\n },\n);\n\nTooltipStandalone.displayName = 'TooltipStandalone';\n"],"mappings":"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"}
1
+ {"version":3,"file":"TooltipStandalone.mjs","names":["BaseTooltip","TooltipContent"],"sources":["../../src/Tooltip/TooltipStandalone.tsx"],"sourcesContent":["'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { cx } from 'antd-style';\nimport { cloneElement, isValidElement, memo, useCallback, useMemo, useState } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { useFloatingLayer } from '@/hooks/useFloatingLayer';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { useAppElement } from '@/ThemeProvider';\nimport { placementMap } from '@/utils/placement';\n\nimport { TooltipArrowIcon } from './ArrowIcon';\nimport { styles } from './style';\nimport TooltipContent from './TooltipContent';\nimport { type TooltipProps } from './type';\n\nconst DEFAULT_OPEN_DELAY = 400;\nconst DEFAULT_CLOSE_DELAY = 100;\n\n/**\n * Tooltip component - displays small contextual hints on hover/focus\n * Compatible with Ant Design Tooltip-like API (subset)\n */\nexport const TooltipStandalone = memo<TooltipProps>(\n ({\n children,\n title,\n arrow = false,\n className,\n classNames,\n closeDelay,\n defaultOpen = false,\n disabled = false,\n getPopupContainer,\n hotkey,\n hotkeyProps,\n mouseEnterDelay,\n mouseLeaveDelay,\n onOpenChange,\n open,\n openDelay,\n placement = 'top',\n styles: styleProps,\n zIndex,\n ref: refProp,\n positionerProps,\n triggerProps,\n popupProps,\n portalProps,\n }) => {\n const isClient = useIsClient();\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n\n const mergedOpen = open ?? uncontrolledOpen;\n const resolvedOpen = disabled ? false : mergedOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (disabled && nextOpen) return;\n onOpenChange?.(nextOpen);\n if (open === undefined) {\n setUncontrolledOpen(nextOpen);\n }\n },\n [disabled, onOpenChange, open],\n );\n\n const resolvedOpenDelay = useMemo(() => {\n if (openDelay !== undefined) return openDelay;\n if (mouseEnterDelay !== undefined) return mouseEnterDelay * 1000;\n return DEFAULT_OPEN_DELAY;\n }, [mouseEnterDelay, openDelay]);\n\n const resolvedCloseDelay = useMemo(() => {\n if (closeDelay !== undefined) return closeDelay;\n if (mouseLeaveDelay !== undefined) return mouseLeaveDelay * 1000;\n return DEFAULT_CLOSE_DELAY;\n }, [closeDelay, mouseLeaveDelay]);\n\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 8 : 6;\n\n const appElement = useAppElement();\n const floatingLayerContainer = useFloatingLayer();\n const portalContainer = floatingLayerContainer ?? appElement;\n\n const { isNativeButtonTriggerElement } = useNativeButton({\n children,\n });\n\n const resolvedClassNames = useMemo(\n () => ({\n arrow: cx(styles.arrow, classNames?.arrow),\n popup: cx(styles.popup, className, classNames?.root, classNames?.container),\n positioner: styles.positioner,\n viewport: cx(styles.viewport, classNames?.content),\n }),\n [className, classNames?.arrow, classNames?.container, classNames?.content, classNames?.root],\n );\n\n const resolvedStyleProps = useMemo(() => {\n if (typeof styleProps === 'function') return undefined;\n return styleProps;\n }, [styleProps]);\n\n const resolvedStyles = useMemo(\n () => ({\n arrow: resolvedStyleProps?.arrow,\n popup: {\n ...resolvedStyleProps?.root,\n ...resolvedStyleProps?.container,\n },\n positioner: {\n zIndex: zIndex ?? 114_514,\n },\n viewport: resolvedStyleProps?.content,\n }),\n [resolvedStyleProps, zIndex],\n );\n\n const triggerElement = useMemo(() => {\n const baseTriggerProps = {\n closeDelay: resolvedCloseDelay,\n delay: resolvedOpenDelay,\n disabled,\n ...triggerProps,\n };\n\n if (isValidElement(children)) {\n return (\n <BaseTooltip.Trigger\n {...baseTriggerProps}\n render={(props) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n return cloneElement(children as any, {\n ...mergedProps,\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n }}\n />\n );\n }\n\n return (\n <BaseTooltip.Trigger {...baseTriggerProps} ref={refProp}>\n {children}\n </BaseTooltip.Trigger>\n );\n }, [\n children,\n disabled,\n isNativeButtonTriggerElement,\n refProp,\n resolvedCloseDelay,\n resolvedOpenDelay,\n triggerProps,\n ]);\n\n const customContainer = useMemo(() => {\n if (!getPopupContainer || !isClient) return undefined;\n return undefined;\n }, [getPopupContainer, isClient]);\n\n const popup = useMemo(\n () => (\n <BaseTooltip.Positioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-placement={placement}\n side={placementConfig.side}\n sideOffset={baseSideOffset}\n style={resolvedStyles.positioner}\n {...positionerProps}\n >\n <BaseTooltip.Popup\n className={resolvedClassNames.popup}\n style={resolvedStyles.popup}\n {...popupProps}\n >\n {arrow && (\n <BaseTooltip.Arrow className={resolvedClassNames.arrow} style={resolvedStyles.arrow}>\n {TooltipArrowIcon}\n </BaseTooltip.Arrow>\n )}\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n <TooltipContent hotkey={hotkey} hotkeyProps={hotkeyProps} title={title} />\n </div>\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n ),\n [\n arrow,\n baseSideOffset,\n hotkey,\n hotkeyProps,\n placement,\n placementConfig.align,\n placementConfig.side,\n popupProps,\n positionerProps,\n resolvedClassNames,\n resolvedStyles,\n title,\n ],\n );\n\n if (title == null && !hotkey) {\n return children;\n }\n\n const resolvedPortalContainer = customContainer ?? portalContainer;\n\n return (\n <BaseTooltip.Root\n defaultOpen={defaultOpen}\n disabled={disabled}\n open={resolvedOpen}\n onOpenChange={handleOpenChange}\n >\n {triggerElement}\n {resolvedPortalContainer ? (\n <BaseTooltip.Portal container={resolvedPortalContainer} {...portalProps}>\n {popup}\n </BaseTooltip.Portal>\n ) : null}\n </BaseTooltip.Root>\n );\n },\n);\n\nTooltipStandalone.displayName = 'TooltipStandalone';\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { FlexboxProps } from "../Flex/type.mjs";
2
2
  import "../Flex/index.mjs";
3
3
  import { VideoProps as VideoProps$1 } from "../types/index.mjs";
4
- import * as react83 from "react";
4
+ import * as react88 from "react";
5
5
  import { CSSProperties, Ref } from "react";
6
6
 
7
7
  //#region src/Video/index.d.ts
@@ -39,7 +39,7 @@ interface VideoProps extends VideoProps$1, Pick<FlexboxProps, 'width' | 'height'
39
39
  };
40
40
  variant?: 'borderless' | 'filled' | 'outlined';
41
41
  }
42
- declare const Video: react83.NamedExoticComponent<VideoProps>;
42
+ declare const Video: react88.NamedExoticComponent<VideoProps>;
43
43
  //#endregion
44
44
  export { Video, VideoProps };
45
45
  //# sourceMappingURL=index.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { AuroraBackgroundProps } from "./type.mjs";
2
- import * as react131 from "react";
2
+ import * as react139 from "react";
3
3
 
4
4
  //#region src/awesome/AuroraBackground/AuroraBackground.d.ts
5
- declare const AuroraBackground: react131.NamedExoticComponent<AuroraBackgroundProps>;
5
+ declare const AuroraBackground: react139.NamedExoticComponent<AuroraBackgroundProps>;
6
6
  //#endregion
7
7
  export { AuroraBackground };
8
8
  //# sourceMappingURL=AuroraBackground.d.mts.map
@@ -1,9 +1,9 @@
1
1
  import { ButtonProps } from "../../Button/type.mjs";
2
2
  import "../../Button/index.mjs";
3
- import * as react130 from "react";
3
+ import * as react140 from "react";
4
4
 
5
5
  //#region src/awesome/BottomGradientButton/BottomGradientButton.d.ts
6
- declare const BottomGradientButton: react130.NamedExoticComponent<ButtonProps>;
6
+ declare const BottomGradientButton: react140.NamedExoticComponent<ButtonProps>;
7
7
  //#endregion
8
8
  export { BottomGradientButton };
9
9
  //# sourceMappingURL=BottomGradientButton.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { FeaturesProps } from "./type.mjs";
2
- import * as react132 from "react";
2
+ import * as react141 from "react";
3
3
 
4
4
  //#region src/awesome/Features/Features.d.ts
5
- declare const Features: react132.NamedExoticComponent<FeaturesProps>;
5
+ declare const Features: react141.NamedExoticComponent<FeaturesProps>;
6
6
  //#endregion
7
7
  export { Features };
8
8
  //# sourceMappingURL=Features.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { GiscusProps } from "./type.mjs";
2
- import * as react133 from "react";
2
+ import * as react138 from "react";
3
3
 
4
4
  //#region src/awesome/Giscus/Giscus.d.ts
5
- declare const Giscus: react133.NamedExoticComponent<GiscusProps>;
5
+ declare const Giscus: react138.NamedExoticComponent<GiscusProps>;
6
6
  //#endregion
7
7
  export { Giscus };
8
8
  //# sourceMappingURL=Giscus.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { GradientButtonProps } from "./type.mjs";
2
- import * as react134 from "react";
2
+ import * as react148 from "react";
3
3
 
4
4
  //#region src/awesome/GradientButton/GradientButton.d.ts
5
- declare const GradientButton: react134.NamedExoticComponent<GradientButtonProps>;
5
+ declare const GradientButton: react148.NamedExoticComponent<GradientButtonProps>;
6
6
  //#endregion
7
7
  export { GradientButton };
8
8
  //# sourceMappingURL=GradientButton.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { GridBackgroundProps } from "./type.mjs";
2
- import * as react135 from "react";
2
+ import * as react144 from "react";
3
3
 
4
4
  //#region src/awesome/GridBackground/GridBackground.d.ts
5
- declare const GridBackground: react135.NamedExoticComponent<GridBackgroundProps>;
5
+ declare const GridBackground: react144.NamedExoticComponent<GridBackgroundProps>;
6
6
  //#endregion
7
7
  export { GridBackground };
8
8
  //# sourceMappingURL=GridBackground.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { GridShowcaseProps } from "./type.mjs";
2
- import * as react136 from "react";
2
+ import * as react145 from "react";
3
3
 
4
4
  //#region src/awesome/GridBackground/GridShowcase.d.ts
5
- declare const GridShowcase: react136.NamedExoticComponent<GridShowcaseProps>;
5
+ declare const GridShowcase: react145.NamedExoticComponent<GridShowcaseProps>;
6
6
  //#endregion
7
7
  export { GridShowcase };
8
8
  //# sourceMappingURL=GridShowcase.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { HeroProps } from "./type.mjs";
2
- import * as react139 from "react";
2
+ import * as react146 from "react";
3
3
 
4
4
  //#region src/awesome/Hero/Hero.d.ts
5
- declare const Hero: react139.NamedExoticComponent<HeroProps>;
5
+ declare const Hero: react146.NamedExoticComponent<HeroProps>;
6
6
  //#endregion
7
7
  export { Hero };
8
8
  //# sourceMappingURL=Hero.d.mts.map
@@ -1,9 +1,9 @@
1
1
  import { SplineProps } from "./type.mjs";
2
- import * as react138 from "react";
2
+ import * as react143 from "react";
3
3
  import "@splinetool/runtime";
4
4
 
5
5
  //#region src/awesome/Spline/Spine.d.ts
6
- declare const Spline: react138.NamedExoticComponent<SplineProps>;
6
+ declare const Spline: react143.NamedExoticComponent<SplineProps>;
7
7
  //#endregion
8
8
  export { Spline };
9
9
  //# sourceMappingURL=Spine.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { SpotlightProps } from "./type.mjs";
2
- import * as react137 from "react";
2
+ import * as react147 from "react";
3
3
 
4
4
  //#region src/awesome/Spotlight/Spotlight.d.ts
5
- declare const Spotlight: react137.NamedExoticComponent<SpotlightProps>;
5
+ declare const Spotlight: react147.NamedExoticComponent<SpotlightProps>;
6
6
  //#endregion
7
7
  export { Spotlight };
8
8
  //# sourceMappingURL=Spotlight.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { SpotlightCardProps } from "./type.mjs";
2
- import * as react140 from "react";
2
+ import * as react149 from "react";
3
3
 
4
4
  //#region src/awesome/SpotlightCard/SpotlightCard.d.ts
5
- declare const SpotlightCard: react140.NamedExoticComponent<SpotlightCardProps<any>>;
5
+ declare const SpotlightCard: react149.NamedExoticComponent<SpotlightCardProps<any>>;
6
6
  //#endregion
7
7
  export { SpotlightCard };
8
8
  //# sourceMappingURL=SpotlightCard.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { TypewriterEffectProps } from "./type.mjs";
2
- import * as react129 from "react";
2
+ import * as react142 from "react";
3
3
 
4
4
  //#region src/awesome/TypewriterEffect/TypewriterEffect.d.ts
5
- declare const TypewriterEffect: react129.NamedExoticComponent<TypewriterEffectProps>;
5
+ declare const TypewriterEffect: react142.NamedExoticComponent<TypewriterEffectProps>;
6
6
  //#endregion
7
7
  export { TypewriterEffect };
8
8
  //# sourceMappingURL=TypewriterEffect.d.mts.map
@@ -1,5 +1,5 @@
1
1
  import { DivProps } from "../../types/index.mjs";
2
- import * as react4 from "react";
2
+ import * as react18 from "react";
3
3
  import { ReactNode } from "react";
4
4
 
5
5
  //#region src/brand/LobeChat/index.d.ts
@@ -8,7 +8,7 @@ interface LobeChatProps extends DivProps {
8
8
  size?: number;
9
9
  type?: '3d' | 'flat' | 'mono' | 'text' | 'combine';
10
10
  }
11
- declare const LobeChat: react4.NamedExoticComponent<LobeChatProps>;
11
+ declare const LobeChat: react18.NamedExoticComponent<LobeChatProps>;
12
12
  //#endregion
13
13
  export { LobeChat, LobeChatProps };
14
14
  //# sourceMappingURL=index.d.mts.map
@@ -1,5 +1,5 @@
1
1
  import { DivProps } from "../../types/index.mjs";
2
- import * as react5 from "react";
2
+ import * as react19 from "react";
3
3
  import { ReactNode } from "react";
4
4
 
5
5
  //#region src/brand/LobeHub/index.d.ts
@@ -8,7 +8,7 @@ interface LobeHubProps extends DivProps {
8
8
  size?: number;
9
9
  type?: '3d' | 'flat' | 'mono' | 'text' | 'combine';
10
10
  }
11
- declare const LobeHub: react5.NamedExoticComponent<LobeHubProps>;
11
+ declare const LobeHub: react19.NamedExoticComponent<LobeHubProps>;
12
12
  //#endregion
13
13
  export { LobeHub, LobeHubProps };
14
14
  //# sourceMappingURL=index.d.mts.map
@@ -1,6 +1,6 @@
1
1
  import { SplineProps } from "../../awesome/Spline/type.mjs";
2
2
  import "../../awesome/Spline/index.mjs";
3
- import * as react6 from "react";
3
+ import * as react17 from "react";
4
4
  import { CSSProperties } from "react";
5
5
 
6
6
  //#region src/brand/LogoThree/LogoSpline.d.ts
@@ -10,7 +10,7 @@ interface LogoSplineProps extends Partial<SplineProps> {
10
10
  style?: CSSProperties;
11
11
  width?: number | string;
12
12
  }
13
- declare const LogoSpline: react6.NamedExoticComponent<LogoSplineProps>;
13
+ declare const LogoSpline: react17.NamedExoticComponent<LogoSplineProps>;
14
14
  //#endregion
15
15
  export { LogoSpline, LogoSplineProps };
16
16
  //# sourceMappingURL=LogoSpline.d.mts.map
@@ -1,6 +1,6 @@
1
1
  import { SplineProps } from "../../awesome/Spline/type.mjs";
2
2
  import "../../awesome/Spline/index.mjs";
3
- import * as react7 from "react";
3
+ import * as react21 from "react";
4
4
  import { CSSProperties } from "react";
5
5
 
6
6
  //#region src/brand/LogoThree/index.d.ts
@@ -9,7 +9,7 @@ interface LogoThreeProps extends Partial<SplineProps> {
9
9
  size?: number;
10
10
  style?: CSSProperties;
11
11
  }
12
- declare const LogoThree: react7.NamedExoticComponent<LogoThreeProps>;
12
+ declare const LogoThree: react21.NamedExoticComponent<LogoThreeProps>;
13
13
  //#endregion
14
14
  export { LogoThree, LogoThreeProps };
15
15
  //# sourceMappingURL=index.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { BackBottomProps } from "./type.mjs";
2
- import * as react141 from "react";
2
+ import * as react132 from "react";
3
3
 
4
4
  //#region src/chat/BackBottom/BackBottom.d.ts
5
- declare const BackBottom: react141.NamedExoticComponent<BackBottomProps>;
5
+ declare const BackBottom: react132.NamedExoticComponent<BackBottomProps>;
6
6
  //#endregion
7
7
  export { BackBottom };
8
8
  //# sourceMappingURL=BackBottom.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { ChatInputAreaInnerProps } from "../type.mjs";
2
- import * as react144 from "react";
2
+ import * as react131 from "react";
3
3
 
4
4
  //#region src/chat/ChatInputArea/components/ChatInputAreaInner.d.ts
5
- declare const ChatInputAreaInner: react144.NamedExoticComponent<ChatInputAreaInnerProps>;
5
+ declare const ChatInputAreaInner: react131.NamedExoticComponent<ChatInputAreaInnerProps>;
6
6
  //#endregion
7
7
  export { ChatInputAreaInner };
8
8
  //# sourceMappingURL=ChatInputAreaInner.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { ChatItemProps } from "./type.mjs";
2
- import * as react143 from "react";
2
+ import * as react133 from "react";
3
3
 
4
4
  //#region src/chat/ChatItem/ChatItem.d.ts
5
- declare const ChatItem: react143.NamedExoticComponent<ChatItemProps>;
5
+ declare const ChatItem: react133.NamedExoticComponent<ChatItemProps>;
6
6
  //#endregion
7
7
  export { ChatItem };
8
8
  //# sourceMappingURL=ChatItem.d.mts.map