@lobehub/ui 5.0.1 → 5.1.1

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 (152) 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/AutoComplete/Select.d.mts +2 -2
  6. package/es/Avatar/AvatarGroup/index.d.mts +2 -2
  7. package/es/Burger/Burger.d.mts +2 -2
  8. package/es/CodeDiff/CodeDiff.d.mts +2 -2
  9. package/es/CodeDiff/PatchDiff.d.mts +2 -2
  10. package/es/CodeEditor/CodeEditor.d.mts +2 -2
  11. package/es/Collapse/Collapse.d.mts +2 -2
  12. package/es/ConfigProvider/index.d.mts +2 -2
  13. package/es/CopyButton/CopyButton.d.mts +2 -2
  14. package/es/DatePicker/DatePicker.d.mts +2 -2
  15. package/es/DraggablePanel/components/DraggablePanelBody.d.mts +2 -2
  16. package/es/DraggablePanel/components/DraggablePanelContainer.d.mts +2 -2
  17. package/es/DraggablePanel/components/DraggablePanelFooter.d.mts +2 -2
  18. package/es/DraggablePanel/components/DraggablePanelHeader.d.mts +2 -2
  19. package/es/DraggableSideNav/DraggableSideNav.d.mts +2 -2
  20. package/es/Drawer/Drawer.d.mts +2 -2
  21. package/es/Dropdown/Dropdown.d.mts +2 -2
  22. package/es/EditableText/EditableText.d.mts +2 -2
  23. package/es/EditorSlashMenu/atoms.d.mts +13 -13
  24. package/es/EmojiPicker/EmojiPicker.d.mts +2 -2
  25. package/es/Flex/FlexBasic.d.mts +2 -2
  26. package/es/FontLoader/index.d.mts +2 -2
  27. package/es/Footer/Footer.d.mts +2 -2
  28. package/es/Form/components/FormGroup.d.mts +2 -2
  29. package/es/Form/components/FormItem.d.mts +2 -2
  30. package/es/Form/components/FormSubmitFooter.d.mts +2 -2
  31. package/es/FormModal/FormModal.d.mts +2 -2
  32. package/es/Freeze/Freeze.d.mts +2 -2
  33. package/es/GuideCard/GuideCard.d.mts +2 -2
  34. package/es/Header/Header.d.mts +2 -2
  35. package/es/Highlighter/Highlighter.d.mts +2 -2
  36. package/es/Highlighter/SyntaxHighlighter/index.d.mts +2 -2
  37. package/es/Hotkey/Hotkey.d.mts +2 -2
  38. package/es/HotkeyInput/HotkeyInput.d.mts +2 -2
  39. package/es/Icon/Icon.d.mts +2 -2
  40. package/es/Icon/components/IconProvider.d.mts +3 -3
  41. package/es/Image/PreviewGroup.d.mts +2 -2
  42. package/es/ImageSelect/ImageSelect.d.mts +2 -2
  43. package/es/Input/Input.d.mts +2 -2
  44. package/es/Input/InputNumber.d.mts +2 -2
  45. package/es/Input/InputOPT.d.mts +2 -2
  46. package/es/Input/InputPassword.d.mts +2 -2
  47. package/es/Input/TextArea.d.mts +2 -2
  48. package/es/Layout/components/LayoutFooter.d.mts +2 -2
  49. package/es/Layout/components/LayoutHeader.d.mts +2 -2
  50. package/es/Layout/components/LayoutMain.d.mts +2 -2
  51. package/es/Layout/components/LayoutSidebar.d.mts +2 -2
  52. package/es/Layout/components/LayoutSidebarInner.d.mts +2 -2
  53. package/es/Layout/components/LayoutToc.d.mts +2 -2
  54. package/es/List/ListItem/index.d.mts +2 -2
  55. package/es/Markdown/Markdown.d.mts +2 -2
  56. package/es/Markdown/Typography.d.mts +2 -2
  57. package/es/Markdown/components/SearchResultCards/index.d.mts +2 -2
  58. package/es/MaskShadow/MaskShadow.d.mts +2 -2
  59. package/es/Menu/Menu.d.mts +2 -2
  60. package/es/Mermaid/Mermaid.d.mts +2 -2
  61. package/es/Mermaid/SyntaxMermaid/index.d.mts +2 -2
  62. package/es/Modal/Modal.d.mts +2 -2
  63. package/es/Modal/ModalProvider.d.mts +2 -2
  64. package/es/Modal/imperative.d.mts +2 -2
  65. package/es/MotionProvider/index.d.mts +2 -2
  66. package/es/Popover/ArrowIcon.d.mts +2 -2
  67. package/es/Popover/atoms.d.mts +9 -9
  68. package/es/Popover/context.d.mts +2 -2
  69. package/es/SearchBar/SearchBar.d.mts +2 -2
  70. package/es/Segmented/Segmented.d.mts +2 -2
  71. package/es/Select/Select.d.mts +2 -2
  72. package/es/SideNav/SideNav.d.mts +2 -2
  73. package/es/SliderWithInput/SliderWithInput.d.mts +2 -2
  74. package/es/ThemeProvider/ThemeProvider.d.mts +2 -2
  75. package/es/Toc/Toc.d.mts +2 -2
  76. package/es/Video/index.d.mts +2 -2
  77. package/es/awesome/AuroraBackground/AuroraBackground.d.mts +2 -2
  78. package/es/awesome/BottomGradientButton/BottomGradientButton.d.mts +2 -2
  79. package/es/awesome/Features/Features.d.mts +2 -2
  80. package/es/awesome/Giscus/Giscus.d.mts +2 -2
  81. package/es/awesome/GradientButton/GradientButton.d.mts +2 -2
  82. package/es/awesome/GridBackground/GridBackground.d.mts +2 -2
  83. package/es/awesome/GridBackground/GridShowcase.d.mts +2 -2
  84. package/es/awesome/Hero/Hero.d.mts +2 -2
  85. package/es/awesome/Spline/Spine.d.mts +2 -2
  86. package/es/awesome/Spotlight/Spotlight.d.mts +2 -2
  87. package/es/awesome/SpotlightCard/SpotlightCard.d.mts +2 -2
  88. package/es/awesome/TypewriterEffect/TypewriterEffect.d.mts +2 -2
  89. package/es/base-ui/ContextMenu/ContextMenuHost.d.mts +3 -3
  90. package/es/base-ui/DropdownMenu/DropdownMenu.d.mts +2 -2
  91. package/es/base-ui/Modal/Modal.d.mts +8 -0
  92. package/es/base-ui/Modal/Modal.mjs +230 -0
  93. package/es/base-ui/Modal/Modal.mjs.map +1 -0
  94. package/es/base-ui/Modal/atoms.d.mts +100 -0
  95. package/es/base-ui/Modal/atoms.mjs +187 -0
  96. package/es/base-ui/Modal/atoms.mjs.map +1 -0
  97. package/es/base-ui/Modal/constants.d.mts +10 -0
  98. package/es/base-ui/Modal/constants.mjs +27 -0
  99. package/es/base-ui/Modal/constants.mjs.map +1 -0
  100. package/es/base-ui/Modal/context.d.mts +9 -0
  101. package/es/base-ui/Modal/context.mjs +14 -0
  102. package/es/base-ui/Modal/context.mjs.map +1 -0
  103. package/es/base-ui/Modal/imperative.d.mts +25 -0
  104. package/es/base-ui/Modal/imperative.mjs +221 -0
  105. package/es/base-ui/Modal/imperative.mjs.map +1 -0
  106. package/es/base-ui/Modal/index.d.mts +6 -0
  107. package/es/base-ui/Modal/style.mjs +295 -0
  108. package/es/base-ui/Modal/style.mjs.map +1 -0
  109. package/es/base-ui/Modal/type.d.mts +110 -0
  110. package/es/base-ui/Select/Select.d.mts +2 -2
  111. package/es/base-ui/Select/atoms.d.mts +19 -19
  112. package/es/base-ui/Switch/Switch.d.mts +2 -2
  113. package/es/base-ui/Toast/imperative.d.mts +2 -2
  114. package/es/base-ui/index.d.mts +8 -1
  115. package/es/base-ui/index.mjs +6 -1
  116. package/es/brand/LobeChat/index.d.mts +2 -2
  117. package/es/brand/LobeHub/index.d.mts +2 -2
  118. package/es/brand/LogoThree/LogoSpline.d.mts +2 -2
  119. package/es/brand/LogoThree/index.d.mts +2 -2
  120. package/es/chat/BackBottom/BackBottom.d.mts +2 -2
  121. package/es/chat/ChatInputArea/components/ChatInputAreaInner.d.mts +2 -2
  122. package/es/chat/ChatItem/ChatItem.d.mts +2 -2
  123. package/es/chat/ChatList/ChatList.d.mts +2 -2
  124. package/es/chat/EditableMessage/EditableMessage.d.mts +2 -2
  125. package/es/chat/EditableMessageList/EditableMessageList.d.mts +2 -2
  126. package/es/chat/MessageInput/MessageInput.d.mts +2 -2
  127. package/es/chat/MessageModal/MessageModal.d.mts +2 -2
  128. package/es/color/ColorScales/index.d.mts +2 -2
  129. package/es/color/CssVar/index.d.mts +2 -2
  130. package/es/i18n/context.d.mts +2 -2
  131. package/es/icons/lucideExtra/BotPromptIcon.d.mts +2 -2
  132. package/es/icons/lucideExtra/CreateBotIcon.d.mts +2 -2
  133. package/es/icons/lucideExtra/DiscordIcon.d.mts +2 -2
  134. package/es/icons/lucideExtra/GlobeOffIcon.d.mts +2 -2
  135. package/es/icons/lucideExtra/GroupBotIcon.d.mts +2 -2
  136. package/es/icons/lucideExtra/GroupBotSquareIcon.d.mts +3 -3
  137. package/es/icons/lucideExtra/LeftClickIcon.d.mts +3 -3
  138. package/es/icons/lucideExtra/LeftDoubleClickIcon.d.mts +3 -3
  139. package/es/icons/lucideExtra/McpIcon.d.mts +3 -3
  140. package/es/icons/lucideExtra/ProviderIcon.d.mts +3 -3
  141. package/es/icons/lucideExtra/RightClickIcon.d.mts +3 -3
  142. package/es/icons/lucideExtra/RightDoubleClickIcon.d.mts +3 -3
  143. package/es/icons/lucideExtra/ShapesUploadIcon.d.mts +3 -3
  144. package/es/icons/lucideExtra/SkillsIcon.d.mts +2 -2
  145. package/es/icons/lucideExtra/TreeDownRightIcon.d.mts +2 -2
  146. package/es/icons/lucideExtra/TreeUpDownRightIcon.d.mts +3 -3
  147. package/es/mdx/Mdx/index.d.mts +2 -2
  148. package/es/mobile/ChatHeader/ChatHeaderTitle.d.mts +2 -2
  149. package/es/mobile/ChatInputArea/components/ChatSendButton.d.mts +2 -2
  150. package/es/mobile/TabBar/TabBar.d.mts +2 -2
  151. package/es/storybook/StoryBook/index.d.mts +2 -2
  152. package/package.json +1 -1
@@ -0,0 +1,9 @@
1
+ import { ModalContextValue } from "./type.mjs";
2
+ import * as react122 from "react";
3
+
4
+ //#region src/base-ui/Modal/context.d.ts
5
+ declare const ModalContext: react122.Context<ModalContextValue>;
6
+ declare const useModalContext: () => ModalContextValue;
7
+ //#endregion
8
+ export { ModalContext, useModalContext };
9
+ //# sourceMappingURL=context.d.mts.map
@@ -0,0 +1,14 @@
1
+ 'use client';
2
+
3
+ import { createContext, use } from "react";
4
+
5
+ //#region src/base-ui/Modal/context.ts
6
+ const ModalContext = createContext({
7
+ close: () => void 0,
8
+ setCanDismissByClickOutside: () => void 0
9
+ });
10
+ const useModalContext = () => use(ModalContext);
11
+
12
+ //#endregion
13
+ export { ModalContext, useModalContext };
14
+ //# sourceMappingURL=context.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.mjs","names":[],"sources":["../../../src/base-ui/Modal/context.ts"],"sourcesContent":["'use client';\n\nimport { createContext, use } from 'react';\n\nimport type { ModalContextValue } from './type';\n\nexport const ModalContext = createContext<ModalContextValue>({\n close: () => undefined,\n setCanDismissByClickOutside: () => undefined,\n});\n\nexport const useModalContext = () => use(ModalContext);\n"],"mappings":";;;;;AAMA,MAAa,eAAe,cAAiC;CAC3D,aAAa;CACb,mCAAmC;CACpC,CAAC;AAEF,MAAa,wBAAwB,IAAI,aAAa"}
@@ -0,0 +1,25 @@
1
+ import { ImperativeModalProps, ModalConfirmConfig, ModalInstance } from "./type.mjs";
2
+ import * as react123 from "react";
3
+
4
+ //#region src/base-ui/Modal/imperative.d.ts
5
+ interface ModalHostProps {
6
+ root?: HTMLElement | ShadowRoot | null;
7
+ }
8
+ interface ModalSystem {
9
+ confirmModal: (config: ModalConfirmConfig) => {
10
+ close: () => void;
11
+ destroy: () => void;
12
+ };
13
+ createModal: (props: ImperativeModalProps) => ModalInstance;
14
+ ModalHost: React.FC<ModalHostProps>;
15
+ }
16
+ declare function createModalSystem(): ModalSystem;
17
+ declare const ModalHost: react123.FC<ModalHostProps>;
18
+ declare const createModal: (props: ImperativeModalProps) => ModalInstance;
19
+ declare const confirmModal: (config: ModalConfirmConfig) => {
20
+ close: () => void;
21
+ destroy: () => void;
22
+ };
23
+ //#endregion
24
+ export { ModalHost, ModalHostProps, ModalSystem, confirmModal, createModal, createModalSystem };
25
+ //# sourceMappingURL=imperative.d.mts.map
@@ -0,0 +1,221 @@
1
+ 'use client';
2
+
3
+ import { useIsClient } from "../../hooks/useIsClient.mjs";
4
+ import { useAppElement } from "../../ThemeProvider/AppElementContext.mjs";
5
+ import { registerDevSingleton } from "../../utils/devSingleton.mjs";
6
+ import { styles } from "./style.mjs";
7
+ import { ModalBackdrop, ModalClose, ModalContent, ModalFooter, ModalHeader, ModalPopup, ModalPortal, ModalRoot, ModalTitle } from "./atoms.mjs";
8
+ import { ModalContext, useModalContext } from "./context.mjs";
9
+ import { memo, useCallback, useEffect, useState, useSyncExternalStore } from "react";
10
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
+ import { cx } from "antd-style";
12
+ import { createPortal } from "react-dom";
13
+
14
+ //#region src/base-ui/Modal/imperative.tsx
15
+ const ModalPortalWrapper = ({ children, root }) => {
16
+ const appElement = useAppElement();
17
+ return createPortal(children, root ?? appElement ?? document.body);
18
+ };
19
+ const ConfirmBody = ({ config }) => {
20
+ const { close } = useModalContext();
21
+ const [loading, setLoading] = useState(false);
22
+ const { cancelText = "Cancel", content, okButtonProps, okText = "OK", onCancel, onOk } = config;
23
+ const { danger, className: okUserCls, ...restOkProps } = okButtonProps ?? {};
24
+ const handleCancel = useCallback(() => {
25
+ close();
26
+ onCancel?.();
27
+ }, [close, onCancel]);
28
+ const handleOk = useCallback(async () => {
29
+ if (onOk) try {
30
+ const result = onOk();
31
+ if (result && typeof result.then === "function") {
32
+ setLoading(true);
33
+ await result;
34
+ setLoading(false);
35
+ }
36
+ } catch {
37
+ setLoading(false);
38
+ return;
39
+ }
40
+ close();
41
+ }, [close, onOk]);
42
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [content && /* @__PURE__ */ jsx("div", {
43
+ style: { padding: "16px 24px" },
44
+ children: content
45
+ }), /* @__PURE__ */ jsxs(ModalFooter, { children: [/* @__PURE__ */ jsx("button", {
46
+ className: cx(styles.buttonBase, styles.cancelButton),
47
+ type: "button",
48
+ onClick: handleCancel,
49
+ children: cancelText
50
+ }), /* @__PURE__ */ jsxs("button", {
51
+ ...restOkProps,
52
+ disabled: loading,
53
+ type: "button",
54
+ className: cx(styles.buttonBase, danger ? styles.dangerOkButton : styles.okButton, okUserCls),
55
+ onClick: handleOk,
56
+ children: [loading && /* @__PURE__ */ jsx("span", { className: styles.loadingSpinner }), okText]
57
+ })] })] });
58
+ };
59
+ ConfirmBody.displayName = "ConfirmBody";
60
+ let systemSeed = 0;
61
+ function createModalSystem() {
62
+ const systemId = systemSeed++;
63
+ const singletonName = systemId === 0 ? "BaseModalHost" : `BaseModalHost-${systemId}`;
64
+ let modalStack = [];
65
+ let modalSeed = 0;
66
+ const listeners = /* @__PURE__ */ new Set();
67
+ const notify = () => listeners.forEach((l) => l());
68
+ const subscribe = (l) => {
69
+ listeners.add(l);
70
+ return () => listeners.delete(l);
71
+ };
72
+ const EMPTY = [];
73
+ const getSnapshot = () => modalStack;
74
+ const getServerSnapshot = () => EMPTY;
75
+ const updateModal = (id, next) => {
76
+ let changed = false;
77
+ modalStack = modalStack.map((item) => {
78
+ if (item.id !== id) return item;
79
+ changed = true;
80
+ return {
81
+ ...item,
82
+ props: {
83
+ ...item.props,
84
+ ...next
85
+ }
86
+ };
87
+ });
88
+ if (changed) notify();
89
+ };
90
+ const closeModal = (id) => {
91
+ updateModal(id, { open: false });
92
+ };
93
+ const destroyModal = (id) => {
94
+ const next = modalStack.filter((item) => item.id !== id);
95
+ if (next.length === modalStack.length) return;
96
+ modalStack = next;
97
+ notify();
98
+ };
99
+ const StackItem = memo(({ entry }) => {
100
+ const { id, props } = entry;
101
+ const { children, classNames, content, footer, maskClosable, onOpenChange, onOpenChangeComplete, open, styles: semanticStyles, title, width } = props;
102
+ const isOpen = open ?? true;
103
+ const handleOpenChange = useCallback((nextOpen, eventDetails) => {
104
+ if (!nextOpen && maskClosable === false && eventDetails?.reason === "outside-press") return;
105
+ if (!nextOpen) closeModal(id);
106
+ onOpenChange?.(nextOpen);
107
+ }, [
108
+ id,
109
+ maskClosable,
110
+ onOpenChange
111
+ ]);
112
+ const handleExitComplete = useCallback(() => {
113
+ onOpenChangeComplete?.(false);
114
+ destroyModal(id);
115
+ }, [id, onOpenChangeComplete]);
116
+ const close = useCallback(() => closeModal(id), [id]);
117
+ const setCanDismissByClickOutside = useCallback((value) => updateModal(id, { maskClosable: value }), [id]);
118
+ const showTitle = title !== void 0 && title !== false && title !== null;
119
+ return /* @__PURE__ */ jsx(ModalContext, {
120
+ value: {
121
+ close,
122
+ setCanDismissByClickOutside
123
+ },
124
+ children: /* @__PURE__ */ jsx(ModalRoot, {
125
+ open: isOpen,
126
+ onExitComplete: handleExitComplete,
127
+ onOpenChange: handleOpenChange,
128
+ children: /* @__PURE__ */ jsxs(ModalPortal, { children: [/* @__PURE__ */ jsx(ModalBackdrop, {
129
+ className: classNames?.backdrop,
130
+ style: semanticStyles?.backdrop
131
+ }), /* @__PURE__ */ jsxs(ModalPopup, {
132
+ className: classNames?.popup,
133
+ popupStyle: semanticStyles?.popup,
134
+ width,
135
+ children: [
136
+ showTitle && /* @__PURE__ */ jsxs(ModalHeader, {
137
+ className: classNames?.header,
138
+ style: semanticStyles?.header,
139
+ children: [/* @__PURE__ */ jsx(ModalTitle, {
140
+ className: classNames?.title,
141
+ style: semanticStyles?.title,
142
+ children: title
143
+ }), /* @__PURE__ */ jsx(ModalClose, {
144
+ className: classNames?.close,
145
+ style: semanticStyles?.close
146
+ })]
147
+ }),
148
+ /* @__PURE__ */ jsx(ModalContent, {
149
+ className: classNames?.content,
150
+ style: semanticStyles?.content,
151
+ children: content ?? children
152
+ }),
153
+ footer
154
+ ]
155
+ })] })
156
+ })
157
+ });
158
+ });
159
+ StackItem.displayName = "ModalStackItem";
160
+ const StackRenderer = memo(({ stack }) => {
161
+ if (!useIsClient()) return null;
162
+ return stack.map((entry) => /* @__PURE__ */ jsx(StackItem, { entry }, entry.id));
163
+ });
164
+ StackRenderer.displayName = "ModalStackRenderer";
165
+ const Host = ({ root }) => {
166
+ const stack = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
167
+ const isClient = useIsClient();
168
+ useEffect(() => {
169
+ if (!isClient) return;
170
+ return registerDevSingleton(singletonName, root ?? document.body);
171
+ }, [isClient, root]);
172
+ if (!isClient) return null;
173
+ if (stack.length === 0) return null;
174
+ return /* @__PURE__ */ jsx(ModalPortalWrapper, {
175
+ root,
176
+ children: /* @__PURE__ */ jsx(StackRenderer, { stack })
177
+ });
178
+ };
179
+ const create = (props) => {
180
+ const id = `base-modal-${Date.now()}-${modalSeed++}`;
181
+ modalStack = [...modalStack, {
182
+ id,
183
+ props: {
184
+ ...props,
185
+ open: props.open ?? true
186
+ }
187
+ }];
188
+ notify();
189
+ return {
190
+ close: () => closeModal(id),
191
+ destroy: () => destroyModal(id),
192
+ setCanDismissByClickOutside: (value) => updateModal(id, { maskClosable: value }),
193
+ update: (nextProps) => updateModal(id, nextProps)
194
+ };
195
+ };
196
+ const confirm = (config) => {
197
+ const instance = create({
198
+ content: /* @__PURE__ */ jsx(ConfirmBody, { config }),
199
+ styles: { content: { padding: 0 } },
200
+ title: config.title,
201
+ width: 420
202
+ });
203
+ return {
204
+ close: instance.close,
205
+ destroy: instance.destroy
206
+ };
207
+ };
208
+ return {
209
+ ModalHost: Host,
210
+ confirmModal: confirm,
211
+ createModal: create
212
+ };
213
+ }
214
+ const defaultSystem = createModalSystem();
215
+ const ModalHost = defaultSystem.ModalHost;
216
+ const createModal = defaultSystem.createModal;
217
+ const confirmModal = defaultSystem.confirmModal;
218
+
219
+ //#endregion
220
+ export { ModalHost, confirmModal, createModal, createModalSystem };
221
+ //# sourceMappingURL=imperative.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imperative.mjs","names":["modalStack: ModalStackEntry[]","EMPTY: ModalStackEntry[]"],"sources":["../../../src/base-ui/Modal/imperative.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport type { ReactNode } from 'react';\nimport { memo, useCallback, useEffect, useState, useSyncExternalStore } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { useAppElement } from '@/ThemeProvider';\nimport { registerDevSingleton } from '@/utils/devSingleton';\n\nimport {\n ModalBackdrop,\n ModalClose,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalPopup,\n ModalPortal,\n ModalRoot,\n ModalTitle,\n} from './atoms';\nimport { ModalContext, useModalContext } from './context';\nimport { styles } from './style';\nimport type { ImperativeModalProps, ModalConfirmConfig, ModalInstance } from './type';\n\n// --- Shared types ---\n\ntype ModalStackEntry = {\n id: string;\n props: ImperativeModalProps;\n};\n\n// --- Shared components (stack-independent) ---\n\nconst ModalPortalWrapper = ({\n children,\n root,\n}: {\n children: ReactNode;\n root?: HTMLElement | ShadowRoot | null;\n}) => {\n const appElement = useAppElement();\n const container = root ?? appElement ?? document.body;\n return createPortal(children, container);\n};\n\nconst ConfirmBody = ({ config }: { config: ModalConfirmConfig }) => {\n const { close } = useModalContext();\n const [loading, setLoading] = useState(false);\n\n const { cancelText = 'Cancel', content, okButtonProps, okText = 'OK', onCancel, onOk } = config;\n\n const { danger, className: okUserCls, ...restOkProps } = okButtonProps ?? {};\n\n const handleCancel = useCallback(() => {\n close();\n onCancel?.();\n }, [close, onCancel]);\n\n const handleOk = useCallback(async () => {\n if (onOk) {\n try {\n const result = onOk();\n if (result && typeof (result as any).then === 'function') {\n setLoading(true);\n await result;\n setLoading(false);\n }\n } catch {\n setLoading(false);\n return;\n }\n }\n close();\n }, [close, onOk]);\n\n return (\n <>\n {content && <div style={{ padding: '16px 24px' }}>{content}</div>}\n <ModalFooter>\n <button\n className={cx(styles.buttonBase, styles.cancelButton)}\n type=\"button\"\n onClick={handleCancel}\n >\n {cancelText}\n </button>\n <button\n {...restOkProps}\n disabled={loading}\n type=\"button\"\n className={cx(\n styles.buttonBase,\n danger ? styles.dangerOkButton : styles.okButton,\n okUserCls,\n )}\n onClick={handleOk}\n >\n {loading && <span className={styles.loadingSpinner} />}\n {okText}\n </button>\n </ModalFooter>\n </>\n );\n};\nConfirmBody.displayName = 'ConfirmBody';\n\n// --- Factory ---\n\nexport interface ModalHostProps {\n root?: HTMLElement | ShadowRoot | null;\n}\n\nexport interface ModalSystem {\n confirmModal: (config: ModalConfirmConfig) => { close: () => void; destroy: () => void };\n createModal: (props: ImperativeModalProps) => ModalInstance;\n ModalHost: React.FC<ModalHostProps>;\n}\n\nlet systemSeed = 0;\n\nexport function createModalSystem(): ModalSystem {\n const systemId = systemSeed++;\n const singletonName = systemId === 0 ? 'BaseModalHost' : `BaseModalHost-${systemId}`;\n\n // --- Stack state (isolated per system) ---\n let modalStack: ModalStackEntry[] = [];\n let modalSeed = 0;\n const listeners = new Set<() => void>();\n\n const notify = () => listeners.forEach((l) => l());\n const subscribe = (l: () => void) => {\n listeners.add(l);\n return () => listeners.delete(l);\n };\n const EMPTY: ModalStackEntry[] = [];\n const getSnapshot = () => modalStack;\n const getServerSnapshot = () => EMPTY;\n\n // --- Stack operations ---\n\n const updateModal = (id: string, next: Partial<ImperativeModalProps>) => {\n let changed = false;\n modalStack = modalStack.map((item) => {\n if (item.id !== id) return item;\n changed = true;\n return { ...item, props: { ...item.props, ...next } };\n });\n if (changed) notify();\n };\n\n const closeModal = (id: string) => {\n updateModal(id, { open: false });\n };\n\n const destroyModal = (id: string) => {\n const next = modalStack.filter((item) => item.id !== id);\n if (next.length === modalStack.length) return;\n modalStack = next;\n notify();\n };\n\n // --- Stack Item (captures operations via closure) ---\n\n const StackItem = memo(({ entry }: { entry: ModalStackEntry }) => {\n const { id, props } = entry;\n const {\n children,\n classNames,\n content,\n footer,\n maskClosable,\n onOpenChange,\n onOpenChangeComplete,\n open,\n styles: semanticStyles,\n title,\n width,\n } = props;\n\n const isOpen = open ?? true;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean, eventDetails?: { reason: string }) => {\n if (!nextOpen && maskClosable === false && eventDetails?.reason === 'outside-press') return;\n if (!nextOpen) closeModal(id);\n onOpenChange?.(nextOpen);\n },\n [id, maskClosable, onOpenChange],\n );\n\n const handleExitComplete = useCallback(() => {\n onOpenChangeComplete?.(false);\n destroyModal(id);\n }, [id, onOpenChangeComplete]);\n\n const close = useCallback(() => closeModal(id), [id]);\n const setCanDismissByClickOutside = useCallback(\n (value: boolean) => updateModal(id, { maskClosable: value }),\n [id],\n );\n\n const showTitle = title !== undefined && title !== false && title !== null;\n\n return (\n <ModalContext value={{ close, setCanDismissByClickOutside }}>\n <ModalRoot\n open={isOpen}\n onExitComplete={handleExitComplete}\n onOpenChange={handleOpenChange}\n >\n <ModalPortal>\n <ModalBackdrop className={classNames?.backdrop} style={semanticStyles?.backdrop} />\n <ModalPopup\n className={classNames?.popup}\n popupStyle={semanticStyles?.popup}\n width={width}\n >\n {showTitle && (\n <ModalHeader className={classNames?.header} style={semanticStyles?.header}>\n <ModalTitle className={classNames?.title} style={semanticStyles?.title}>\n {title}\n </ModalTitle>\n <ModalClose className={classNames?.close} style={semanticStyles?.close} />\n </ModalHeader>\n )}\n <ModalContent className={classNames?.content} style={semanticStyles?.content}>\n {content ?? children}\n </ModalContent>\n {footer}\n </ModalPopup>\n </ModalPortal>\n </ModalRoot>\n </ModalContext>\n );\n });\n StackItem.displayName = 'ModalStackItem';\n\n const StackRenderer = memo(({ stack }: { stack: ModalStackEntry[] }) => {\n const isClient = useIsClient();\n if (!isClient) return null;\n return stack.map((entry) => <StackItem entry={entry} key={entry.id} />);\n });\n StackRenderer.displayName = 'ModalStackRenderer';\n\n // --- ModalHost ---\n\n const Host = ({ root }: ModalHostProps) => {\n const stack = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const isClient = useIsClient();\n\n useEffect(() => {\n if (!isClient) return;\n const scope = root ?? document.body;\n return registerDevSingleton(singletonName, scope);\n }, [isClient, root]);\n\n if (!isClient) return null;\n if (stack.length === 0) return null;\n\n return (\n <ModalPortalWrapper root={root}>\n <StackRenderer stack={stack} />\n </ModalPortalWrapper>\n );\n };\n\n // --- createModal ---\n\n const create = (props: ImperativeModalProps): ModalInstance => {\n const id = `base-modal-${Date.now()}-${modalSeed++}`;\n modalStack = [...modalStack, { id, props: { ...props, open: props.open ?? true } }];\n notify();\n\n return {\n close: () => closeModal(id),\n destroy: () => destroyModal(id),\n setCanDismissByClickOutside: (value) => updateModal(id, { maskClosable: value }),\n update: (nextProps) => updateModal(id, nextProps),\n };\n };\n\n // --- confirmModal ---\n\n const confirm = (config: ModalConfirmConfig) => {\n const instance = create({\n content: <ConfirmBody config={config} />,\n styles: { content: { padding: 0 } },\n title: config.title,\n width: 420,\n });\n\n return {\n close: instance.close,\n destroy: instance.destroy,\n };\n };\n\n return { ModalHost: Host, confirmModal: confirm, createModal: create };\n}\n\n// --- Default global instance (backward compatible) ---\n\nconst defaultSystem = createModalSystem();\nexport const ModalHost = defaultSystem.ModalHost;\nexport const createModal = defaultSystem.createModal;\nexport const confirmModal = defaultSystem.confirmModal;\n"],"mappings":";;;;;;;;;;;;;;AAmCA,MAAM,sBAAsB,EAC1B,UACA,WAII;CACJ,MAAM,aAAa,eAAe;AAElC,QAAO,aAAa,UADF,QAAQ,cAAc,SAAS,KACT;;AAG1C,MAAM,eAAe,EAAE,aAA6C;CAClE,MAAM,EAAE,UAAU,iBAAiB;CACnC,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAE7C,MAAM,EAAE,aAAa,UAAU,SAAS,eAAe,SAAS,MAAM,UAAU,SAAS;CAEzF,MAAM,EAAE,QAAQ,WAAW,WAAW,GAAG,gBAAgB,iBAAiB,EAAE;CAE5E,MAAM,eAAe,kBAAkB;AACrC,SAAO;AACP,cAAY;IACX,CAAC,OAAO,SAAS,CAAC;CAErB,MAAM,WAAW,YAAY,YAAY;AACvC,MAAI,KACF,KAAI;GACF,MAAM,SAAS,MAAM;AACrB,OAAI,UAAU,OAAQ,OAAe,SAAS,YAAY;AACxD,eAAW,KAAK;AAChB,UAAM;AACN,eAAW,MAAM;;UAEb;AACN,cAAW,MAAM;AACjB;;AAGJ,SAAO;IACN,CAAC,OAAO,KAAK,CAAC;AAEjB,QACE,8CACG,WAAW,oBAAC;EAAI,OAAO,EAAE,SAAS,aAAa;YAAG;GAAc,EACjE,qBAAC,0BACC,oBAAC;EACC,WAAW,GAAG,OAAO,YAAY,OAAO,aAAa;EACrD,MAAK;EACL,SAAS;YAER;GACM,EACT,qBAAC;EACC,GAAI;EACJ,UAAU;EACV,MAAK;EACL,WAAW,GACT,OAAO,YACP,SAAS,OAAO,iBAAiB,OAAO,UACxC,UACD;EACD,SAAS;aAER,WAAW,oBAAC,UAAK,WAAW,OAAO,iBAAkB,EACrD;GACM,IACG,IACb;;AAGP,YAAY,cAAc;AAc1B,IAAI,aAAa;AAEjB,SAAgB,oBAAiC;CAC/C,MAAM,WAAW;CACjB,MAAM,gBAAgB,aAAa,IAAI,kBAAkB,iBAAiB;CAG1E,IAAIA,aAAgC,EAAE;CACtC,IAAI,YAAY;CAChB,MAAM,4BAAY,IAAI,KAAiB;CAEvC,MAAM,eAAe,UAAU,SAAS,MAAM,GAAG,CAAC;CAClD,MAAM,aAAa,MAAkB;AACnC,YAAU,IAAI,EAAE;AAChB,eAAa,UAAU,OAAO,EAAE;;CAElC,MAAMC,QAA2B,EAAE;CACnC,MAAM,oBAAoB;CAC1B,MAAM,0BAA0B;CAIhC,MAAM,eAAe,IAAY,SAAwC;EACvE,IAAI,UAAU;AACd,eAAa,WAAW,KAAK,SAAS;AACpC,OAAI,KAAK,OAAO,GAAI,QAAO;AAC3B,aAAU;AACV,UAAO;IAAE,GAAG;IAAM,OAAO;KAAE,GAAG,KAAK;KAAO,GAAG;KAAM;IAAE;IACrD;AACF,MAAI,QAAS,SAAQ;;CAGvB,MAAM,cAAc,OAAe;AACjC,cAAY,IAAI,EAAE,MAAM,OAAO,CAAC;;CAGlC,MAAM,gBAAgB,OAAe;EACnC,MAAM,OAAO,WAAW,QAAQ,SAAS,KAAK,OAAO,GAAG;AACxD,MAAI,KAAK,WAAW,WAAW,OAAQ;AACvC,eAAa;AACb,UAAQ;;CAKV,MAAM,YAAY,MAAM,EAAE,YAAwC;EAChE,MAAM,EAAE,IAAI,UAAU;EACtB,MAAM,EACJ,UACA,YACA,SACA,QACA,cACA,cACA,sBACA,MACA,QAAQ,gBACR,OACA,UACE;EAEJ,MAAM,SAAS,QAAQ;EAEvB,MAAM,mBAAmB,aACtB,UAAmB,iBAAsC;AACxD,OAAI,CAAC,YAAY,iBAAiB,SAAS,cAAc,WAAW,gBAAiB;AACrF,OAAI,CAAC,SAAU,YAAW,GAAG;AAC7B,kBAAe,SAAS;KAE1B;GAAC;GAAI;GAAc;GAAa,CACjC;EAED,MAAM,qBAAqB,kBAAkB;AAC3C,0BAAuB,MAAM;AAC7B,gBAAa,GAAG;KACf,CAAC,IAAI,qBAAqB,CAAC;EAE9B,MAAM,QAAQ,kBAAkB,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC;EACrD,MAAM,8BAA8B,aACjC,UAAmB,YAAY,IAAI,EAAE,cAAc,OAAO,CAAC,EAC5D,CAAC,GAAG,CACL;EAED,MAAM,YAAY,UAAU,UAAa,UAAU,SAAS,UAAU;AAEtE,SACE,oBAAC;GAAa,OAAO;IAAE;IAAO;IAA6B;aACzD,oBAAC;IACC,MAAM;IACN,gBAAgB;IAChB,cAAc;cAEd,qBAAC,0BACC,oBAAC;KAAc,WAAW,YAAY;KAAU,OAAO,gBAAgB;MAAY,EACnF,qBAAC;KACC,WAAW,YAAY;KACvB,YAAY,gBAAgB;KACrB;;MAEN,aACC,qBAAC;OAAY,WAAW,YAAY;OAAQ,OAAO,gBAAgB;kBACjE,oBAAC;QAAW,WAAW,YAAY;QAAO,OAAO,gBAAgB;kBAC9D;SACU,EACb,oBAAC;QAAW,WAAW,YAAY;QAAO,OAAO,gBAAgB;SAAS;QAC9D;MAEhB,oBAAC;OAAa,WAAW,YAAY;OAAS,OAAO,gBAAgB;iBAClE,WAAW;QACC;MACd;;MACU,IACD;KACJ;IACC;GAEjB;AACF,WAAU,cAAc;CAExB,MAAM,gBAAgB,MAAM,EAAE,YAA0C;AAEtE,MAAI,CADa,aAAa,CACf,QAAO;AACtB,SAAO,MAAM,KAAK,UAAU,oBAAC,aAAiB,SAAY,MAAM,GAAM,CAAC;GACvE;AACF,eAAc,cAAc;CAI5B,MAAM,QAAQ,EAAE,WAA2B;EACzC,MAAM,QAAQ,qBAAqB,WAAW,aAAa,kBAAkB;EAC7E,MAAM,WAAW,aAAa;AAE9B,kBAAgB;AACd,OAAI,CAAC,SAAU;AAEf,UAAO,qBAAqB,eADd,QAAQ,SAAS,KACkB;KAChD,CAAC,UAAU,KAAK,CAAC;AAEpB,MAAI,CAAC,SAAU,QAAO;AACtB,MAAI,MAAM,WAAW,EAAG,QAAO;AAE/B,SACE,oBAAC;GAAyB;aACxB,oBAAC,iBAAqB,QAAS;IACZ;;CAMzB,MAAM,UAAU,UAA+C;EAC7D,MAAM,KAAK,cAAc,KAAK,KAAK,CAAC,GAAG;AACvC,eAAa,CAAC,GAAG,YAAY;GAAE;GAAI,OAAO;IAAE,GAAG;IAAO,MAAM,MAAM,QAAQ;IAAM;GAAE,CAAC;AACnF,UAAQ;AAER,SAAO;GACL,aAAa,WAAW,GAAG;GAC3B,eAAe,aAAa,GAAG;GAC/B,8BAA8B,UAAU,YAAY,IAAI,EAAE,cAAc,OAAO,CAAC;GAChF,SAAS,cAAc,YAAY,IAAI,UAAU;GAClD;;CAKH,MAAM,WAAW,WAA+B;EAC9C,MAAM,WAAW,OAAO;GACtB,SAAS,oBAAC,eAAoB,SAAU;GACxC,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,EAAE;GACnC,OAAO,OAAO;GACd,OAAO;GACR,CAAC;AAEF,SAAO;GACL,OAAO,SAAS;GAChB,SAAS,SAAS;GACnB;;AAGH,QAAO;EAAE,WAAW;EAAM,cAAc;EAAS,aAAa;EAAQ;;AAKxE,MAAM,gBAAgB,mBAAmB;AACzC,MAAa,YAAY,cAAc;AACvC,MAAa,cAAc,cAAc;AACzC,MAAa,eAAe,cAAc"}
@@ -0,0 +1,6 @@
1
+ import { ModalBackdrop, ModalBackdropProps, ModalClose, ModalCloseProps, ModalContent, ModalContentProps, ModalDescription, ModalDescriptionProps, ModalFooter, ModalFooterProps, ModalHeader, ModalHeaderProps, ModalPopup, ModalPopupProps, ModalPortal, ModalPortalProps, ModalRoot, ModalRootProps, ModalTitle, ModalTitleProps, ModalTrigger, ModalTriggerProps, ModalViewport, ModalViewportProps, useModalActions, useModalOpen } from "./atoms.mjs";
2
+ import { backdropTransition, modalMotionConfig } from "./constants.mjs";
3
+ import { BaseModalProps, ImperativeModalProps, ModalComponentProps, ModalConfirmConfig, ModalContextValue, ModalInstance } from "./type.mjs";
4
+ import { ModalContext, useModalContext } from "./context.mjs";
5
+ import { ModalHost, ModalHostProps, ModalSystem, confirmModal, createModal, createModalSystem } from "./imperative.mjs";
6
+ import { Modal } from "./Modal.mjs";
@@ -0,0 +1,295 @@
1
+ import { createStaticStyles } from "antd-style";
2
+
3
+ //#region src/base-ui/Modal/style.ts
4
+ const styles = createStaticStyles(({ css: css$1, cssVar: cssVar$1 }) => ({
5
+ backdrop: css$1`
6
+ position: fixed;
7
+ z-index: 1000;
8
+ inset: 0;
9
+
10
+ background: color-mix(in srgb, ${cssVar$1.colorBgContainer} 60%, transparent);
11
+
12
+ transition: opacity 150ms ease-out;
13
+
14
+ &[data-starting-style],
15
+ &[data-ending-style] {
16
+ opacity: 0;
17
+ }
18
+ `,
19
+ close: css$1`
20
+ cursor: pointer;
21
+
22
+ position: absolute;
23
+ inset-block-start: 12px;
24
+ inset-inline-end: 12px;
25
+
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+
30
+ width: 32px;
31
+ height: 32px;
32
+ padding: 0;
33
+ border: none;
34
+ border-radius: ${cssVar$1.borderRadiusSM};
35
+
36
+ color: ${cssVar$1.colorTextTertiary};
37
+
38
+ background: transparent;
39
+
40
+ transition: all 150ms ease-out;
41
+
42
+ &:hover {
43
+ color: ${cssVar$1.colorText};
44
+ background: ${cssVar$1.colorFillSecondary};
45
+ }
46
+
47
+ &:focus-visible {
48
+ outline: 2px solid ${cssVar$1.colorPrimaryBorder};
49
+ outline-offset: 1px;
50
+ }
51
+ `,
52
+ closeInline: css$1`
53
+ cursor: pointer;
54
+
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: center;
58
+
59
+ width: 32px;
60
+ height: 32px;
61
+ padding: 0;
62
+ border: none;
63
+ border-radius: ${cssVar$1.borderRadiusSM};
64
+
65
+ color: ${cssVar$1.colorTextTertiary};
66
+
67
+ background: transparent;
68
+
69
+ transition: all 150ms ease-out;
70
+
71
+ &:hover {
72
+ color: ${cssVar$1.colorText};
73
+ background: ${cssVar$1.colorFillSecondary};
74
+ }
75
+
76
+ &:focus-visible {
77
+ outline: 2px solid ${cssVar$1.colorPrimaryBorder};
78
+ outline-offset: 1px;
79
+ }
80
+ `,
81
+ content: css$1`
82
+ overflow: hidden auto;
83
+ padding-block: 12px;
84
+ padding-inline: 16px;
85
+ `,
86
+ footer: css$1`
87
+ display: flex;
88
+ gap: 8px;
89
+ align-items: center;
90
+ justify-content: flex-end;
91
+
92
+ padding-block: 12px;
93
+ padding-inline: 16px;
94
+ border-block-start: 1px solid ${cssVar$1.colorBorderSecondary};
95
+ `,
96
+ header: css$1`
97
+ display: flex;
98
+ align-items: center;
99
+ justify-content: space-between;
100
+
101
+ padding-block: 12px;
102
+ padding-inline: 16px;
103
+ border-block-end: 1px solid ${cssVar$1.colorBorderSecondary};
104
+ `,
105
+ headerDraggable: css$1`
106
+ cursor: default;
107
+ user-select: none;
108
+ `,
109
+ popup: css$1`
110
+ pointer-events: none;
111
+
112
+ position: fixed;
113
+ z-index: 1001;
114
+ inset: 0;
115
+
116
+ display: flex;
117
+ align-items: center;
118
+ justify-content: center;
119
+ `,
120
+ popupInner: css$1`
121
+ pointer-events: auto;
122
+
123
+ position: relative;
124
+
125
+ display: flex;
126
+ flex-direction: column;
127
+
128
+ box-sizing: border-box;
129
+ width: calc(100% - 32px);
130
+ max-width: 520px;
131
+ max-height: calc(100dvh - 64px);
132
+ border: 1px solid ${cssVar$1.colorBorderSecondary};
133
+ border-radius: 12px;
134
+
135
+ background: ${cssVar$1.colorBgContainer};
136
+ box-shadow: ${cssVar$1.boxShadow};
137
+
138
+ transition:
139
+ transform 150ms cubic-bezier(0.22, 1, 0.36, 1),
140
+ opacity 150ms ease-out;
141
+
142
+ &[data-starting-style],
143
+ &[data-ending-style] {
144
+ transform: scale(0.96) translateY(4px);
145
+ opacity: 0;
146
+ }
147
+ `,
148
+ title: css$1`
149
+ margin: 0;
150
+
151
+ font-size: 16px;
152
+ font-weight: 600;
153
+ line-height: 1.5;
154
+ color: ${cssVar$1.colorText};
155
+ `,
156
+ buttonBase: css$1`
157
+ cursor: pointer;
158
+
159
+ display: inline-flex;
160
+ gap: 6px;
161
+ align-items: center;
162
+ justify-content: center;
163
+
164
+ height: 36px;
165
+ padding-block: 0;
166
+ padding-inline: 16px;
167
+ border: 1px solid ${cssVar$1.colorBorder};
168
+ border-radius: ${cssVar$1.borderRadiusSM};
169
+
170
+ font-size: 14px;
171
+ font-weight: 500;
172
+ line-height: 1;
173
+
174
+ transition: all 150ms ease-out;
175
+
176
+ &:focus-visible {
177
+ outline: 2px solid ${cssVar$1.colorPrimaryBorder};
178
+ outline-offset: 1px;
179
+ }
180
+
181
+ &:disabled {
182
+ cursor: not-allowed;
183
+ opacity: 0.5;
184
+ }
185
+ `,
186
+ cancelButton: css$1`
187
+ color: ${cssVar$1.colorText};
188
+ background: ${cssVar$1.colorBgContainer};
189
+
190
+ &:hover:not(:disabled) {
191
+ border-color: ${cssVar$1.colorPrimaryBorder};
192
+ color: ${cssVar$1.colorPrimaryText};
193
+ }
194
+ `,
195
+ loadingSpinner: css$1`
196
+ @keyframes modal-spin {
197
+ to {
198
+ transform: rotate(360deg);
199
+ }
200
+ }
201
+
202
+ display: inline-block;
203
+
204
+ width: 14px;
205
+ height: 14px;
206
+ border: 2px solid currentcolor;
207
+ border-block-start-color: transparent;
208
+ border-radius: 50%;
209
+
210
+ animation: modal-spin 0.6s linear infinite;
211
+ `,
212
+ dangerOkButton: css$1`
213
+ border-color: ${cssVar$1.colorError};
214
+ color: #fff;
215
+ background: ${cssVar$1.colorError};
216
+
217
+ &:hover:not(:disabled) {
218
+ border-color: ${cssVar$1.colorErrorHover};
219
+ background: ${cssVar$1.colorErrorHover};
220
+ }
221
+
222
+ &:active:not(:disabled) {
223
+ border-color: ${cssVar$1.colorErrorActive};
224
+ background: ${cssVar$1.colorErrorActive};
225
+ }
226
+ `,
227
+ fullscreenPopupInner: css$1`
228
+ width: 100% !important;
229
+ max-width: 100% !important;
230
+ height: 100dvh !important;
231
+ max-height: 100dvh !important;
232
+ border: none;
233
+ border-radius: 0;
234
+ `,
235
+ fullscreenToggle: css$1`
236
+ cursor: pointer;
237
+
238
+ display: flex;
239
+ align-items: center;
240
+ justify-content: center;
241
+
242
+ width: 28px;
243
+ height: 28px;
244
+ padding: 0;
245
+ border: none;
246
+ border-radius: ${cssVar$1.borderRadiusSM};
247
+
248
+ color: ${cssVar$1.colorTextTertiary};
249
+
250
+ background: transparent;
251
+
252
+ transition: all 150ms ease-out;
253
+
254
+ &:hover {
255
+ color: ${cssVar$1.colorText};
256
+ background: ${cssVar$1.colorFillSecondary};
257
+ }
258
+
259
+ &:focus-visible {
260
+ outline: 2px solid ${cssVar$1.colorPrimaryBorder};
261
+ outline-offset: 1px;
262
+ }
263
+ `,
264
+ headerActions: css$1`
265
+ display: flex;
266
+ gap: 4px;
267
+ align-items: center;
268
+ margin-inline-end: -4px;
269
+ `,
270
+ okButton: css$1`
271
+ border-color: ${cssVar$1.colorPrimary};
272
+ color: #fff;
273
+ background: ${cssVar$1.colorPrimary};
274
+
275
+ &:hover:not(:disabled) {
276
+ border-color: ${cssVar$1.colorPrimaryHover};
277
+ background: ${cssVar$1.colorPrimaryHover};
278
+ }
279
+
280
+ &:active:not(:disabled) {
281
+ border-color: ${cssVar$1.colorPrimaryActive};
282
+ background: ${cssVar$1.colorPrimaryActive};
283
+ }
284
+ `,
285
+ viewport: css$1`
286
+ position: fixed;
287
+ z-index: 1000;
288
+ inset: 0;
289
+ overflow: auto;
290
+ `
291
+ }));
292
+
293
+ //#endregion
294
+ export { styles };
295
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.mjs","names":["cssVar"],"sources":["../../../src/base-ui/Modal/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n backdrop: css`\n position: fixed;\n z-index: 1000;\n inset: 0;\n\n background: color-mix(in srgb, ${cssVar.colorBgContainer} 60%, transparent);\n\n transition: opacity 150ms ease-out;\n\n &[data-starting-style],\n &[data-ending-style] {\n opacity: 0;\n }\n `,\n\n close: css`\n cursor: pointer;\n\n position: absolute;\n inset-block-start: 12px;\n inset-inline-end: 12px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n color: ${cssVar.colorTextTertiary};\n\n background: transparent;\n\n transition: all 150ms ease-out;\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n }\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: 1px;\n }\n `,\n\n closeInline: css`\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n color: ${cssVar.colorTextTertiary};\n\n background: transparent;\n\n transition: all 150ms ease-out;\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n }\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: 1px;\n }\n `,\n\n content: css`\n overflow: hidden auto;\n padding-block: 12px;\n padding-inline: 16px;\n `,\n\n footer: css`\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: flex-end;\n\n padding-block: 12px;\n padding-inline: 16px;\n border-block-start: 1px solid ${cssVar.colorBorderSecondary};\n `,\n\n header: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n padding-block: 12px;\n padding-inline: 16px;\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n `,\n\n headerDraggable: css`\n cursor: default;\n user-select: none;\n `,\n\n popup: css`\n pointer-events: none;\n\n position: fixed;\n z-index: 1001;\n inset: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n\n popupInner: css`\n pointer-events: auto;\n\n position: relative;\n\n display: flex;\n flex-direction: column;\n\n box-sizing: border-box;\n width: calc(100% - 32px);\n max-width: 520px;\n max-height: calc(100dvh - 64px);\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: 12px;\n\n background: ${cssVar.colorBgContainer};\n box-shadow: ${cssVar.boxShadow};\n\n transition:\n transform 150ms cubic-bezier(0.22, 1, 0.36, 1),\n opacity 150ms ease-out;\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: scale(0.96) translateY(4px);\n opacity: 0;\n }\n `,\n\n title: css`\n margin: 0;\n\n font-size: 16px;\n font-weight: 600;\n line-height: 1.5;\n color: ${cssVar.colorText};\n `,\n\n buttonBase: css`\n cursor: pointer;\n\n display: inline-flex;\n gap: 6px;\n align-items: center;\n justify-content: center;\n\n height: 36px;\n padding-block: 0;\n padding-inline: 16px;\n border: 1px solid ${cssVar.colorBorder};\n border-radius: ${cssVar.borderRadiusSM};\n\n font-size: 14px;\n font-weight: 500;\n line-height: 1;\n\n transition: all 150ms ease-out;\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: 1px;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n `,\n\n cancelButton: css`\n color: ${cssVar.colorText};\n background: ${cssVar.colorBgContainer};\n\n &:hover:not(:disabled) {\n border-color: ${cssVar.colorPrimaryBorder};\n color: ${cssVar.colorPrimaryText};\n }\n `,\n\n loadingSpinner: css`\n @keyframes modal-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n display: inline-block;\n\n width: 14px;\n height: 14px;\n border: 2px solid currentcolor;\n border-block-start-color: transparent;\n border-radius: 50%;\n\n animation: modal-spin 0.6s linear infinite;\n `,\n\n dangerOkButton: css`\n border-color: ${cssVar.colorError};\n color: #fff;\n background: ${cssVar.colorError};\n\n &:hover:not(:disabled) {\n border-color: ${cssVar.colorErrorHover};\n background: ${cssVar.colorErrorHover};\n }\n\n &:active:not(:disabled) {\n border-color: ${cssVar.colorErrorActive};\n background: ${cssVar.colorErrorActive};\n }\n `,\n\n fullscreenPopupInner: css`\n width: 100% !important;\n max-width: 100% !important;\n height: 100dvh !important;\n max-height: 100dvh !important;\n border: none;\n border-radius: 0;\n `,\n\n fullscreenToggle: css`\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n color: ${cssVar.colorTextTertiary};\n\n background: transparent;\n\n transition: all 150ms ease-out;\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n }\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: 1px;\n }\n `,\n\n headerActions: css`\n display: flex;\n gap: 4px;\n align-items: center;\n margin-inline-end: -4px;\n `,\n\n okButton: css`\n border-color: ${cssVar.colorPrimary};\n color: #fff;\n background: ${cssVar.colorPrimary};\n\n &:hover:not(:disabled) {\n border-color: ${cssVar.colorPrimaryHover};\n background: ${cssVar.colorPrimaryHover};\n }\n\n &:active:not(:disabled) {\n border-color: ${cssVar.colorPrimaryActive};\n background: ${cssVar.colorPrimaryActive};\n }\n `,\n\n viewport: css`\n position: fixed;\n z-index: 1000;\n inset: 0;\n overflow: auto;\n `,\n}));\n"],"mappings":";;;AAEA,MAAa,SAAS,oBAAoB,EAAE,YAAK,wBAAc;CAC7D,UAAU,KAAG;;;;;qCAKsBA,SAAO,iBAAiB;;;;;;;;;CAU3D,OAAO,KAAG;;;;;;;;;;;;;;;qBAeSA,SAAO,eAAe;;aAE9BA,SAAO,kBAAkB;;;;;;;eAOvBA,SAAO,UAAU;oBACZA,SAAO,mBAAmB;;;;2BAInBA,SAAO,mBAAmB;;;;CAKnD,aAAa,KAAG;;;;;;;;;;;qBAWGA,SAAO,eAAe;;aAE9BA,SAAO,kBAAkB;;;;;;;eAOvBA,SAAO,UAAU;oBACZA,SAAO,mBAAmB;;;;2BAInBA,SAAO,mBAAmB;;;;CAKnD,SAAS,KAAG;;;;;CAMZ,QAAQ,KAAG;;;;;;;;oCAQuBA,SAAO,qBAAqB;;CAG9D,QAAQ,KAAG;;;;;;;kCAOqBA,SAAO,qBAAqB;;CAG5D,iBAAiB,KAAG;;;;CAKpB,OAAO,KAAG;;;;;;;;;;;CAYV,YAAY,KAAG;;;;;;;;;;;;wBAYOA,SAAO,qBAAqB;;;kBAGlCA,SAAO,iBAAiB;kBACxBA,SAAO,UAAU;;;;;;;;;;;;CAajC,OAAO,KAAG;;;;;;aAMCA,SAAO,UAAU;;CAG5B,YAAY,KAAG;;;;;;;;;;;wBAWOA,SAAO,YAAY;qBACtBA,SAAO,eAAe;;;;;;;;;2BAShBA,SAAO,mBAAmB;;;;;;;;;CAUnD,cAAc,KAAG;aACNA,SAAO,UAAU;kBACZA,SAAO,iBAAiB;;;sBAGpBA,SAAO,mBAAmB;eACjCA,SAAO,iBAAiB;;;CAIrC,gBAAgB,KAAG;;;;;;;;;;;;;;;;;CAkBnB,gBAAgB,KAAG;oBACDA,SAAO,WAAW;;kBAEpBA,SAAO,WAAW;;;sBAGdA,SAAO,gBAAgB;oBACzBA,SAAO,gBAAgB;;;;sBAIrBA,SAAO,iBAAiB;oBAC1BA,SAAO,iBAAiB;;;CAI1C,sBAAsB,KAAG;;;;;;;;CASzB,kBAAkB,KAAG;;;;;;;;;;;qBAWFA,SAAO,eAAe;;aAE9BA,SAAO,kBAAkB;;;;;;;eAOvBA,SAAO,UAAU;oBACZA,SAAO,mBAAmB;;;;2BAInBA,SAAO,mBAAmB;;;;CAKnD,eAAe,KAAG;;;;;;CAOlB,UAAU,KAAG;oBACKA,SAAO,aAAa;;kBAEtBA,SAAO,aAAa;;;sBAGhBA,SAAO,kBAAkB;oBAC3BA,SAAO,kBAAkB;;;;sBAIvBA,SAAO,mBAAmB;oBAC5BA,SAAO,mBAAmB;;;CAI5C,UAAU,KAAG;;;;;;CAMd,EAAE"}