@lobehub/ui 4.30.2 → 4.32.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 (202) hide show
  1. package/es/Accordion/Accordion.d.mts +2 -2
  2. package/es/Accordion/Accordion.mjs +2 -2
  3. package/es/Accordion/Accordion.mjs.map +1 -1
  4. package/es/Accordion/AccordionItem.d.mts +2 -2
  5. package/es/Accordion/AccordionItem.mjs +2 -2
  6. package/es/Accordion/AccordionItem.mjs.map +1 -1
  7. package/es/ActionIcon/ActionIcon.d.mts +2 -2
  8. package/es/Alert/Alert.d.mts +2 -2
  9. package/es/AutoComplete/Select.d.mts +2 -2
  10. package/es/Avatar/AvatarGroup/index.d.mts +2 -2
  11. package/es/Burger/Burger.d.mts +2 -2
  12. package/es/Checkbox/Checkbox.mjs +2 -2
  13. package/es/Checkbox/Checkbox.mjs.map +1 -1
  14. package/es/Checkbox/CheckboxGroup.mjs +2 -2
  15. package/es/Checkbox/CheckboxGroup.mjs.map +1 -1
  16. package/es/CodeDiff/CodeDiff.d.mts +2 -2
  17. package/es/CodeDiff/PatchDiff.d.mts +2 -2
  18. package/es/CodeEditor/CodeEditor.d.mts +2 -2
  19. package/es/CodeEditor/CodeEditor.mjs +2 -2
  20. package/es/CodeEditor/CodeEditor.mjs.map +1 -1
  21. package/es/Collapse/Collapse.d.mts +2 -2
  22. package/es/ColorSwatches/ColorSwatches.mjs +2 -2
  23. package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
  24. package/es/ConfigProvider/index.d.mts +2 -2
  25. package/es/ContextMenu/ContextMenuHost.d.mts +2 -2
  26. package/es/ContextMenu/ContextMenuHost.mjs +1 -1
  27. package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
  28. package/es/ContextMenu/index.d.mts +4 -2
  29. package/es/ContextMenu/renderItems.d.mts +4 -0
  30. package/es/ContextMenu/renderItems.mjs +21 -32
  31. package/es/ContextMenu/renderItems.mjs.map +1 -1
  32. package/es/ContextMenu/store.d.mts +7 -2
  33. package/es/ContextMenu/store.mjs +4 -1
  34. package/es/ContextMenu/store.mjs.map +1 -1
  35. package/es/CopyButton/CopyButton.d.mts +2 -2
  36. package/es/DatePicker/DatePicker.d.mts +2 -2
  37. package/es/DraggablePanel/DraggablePanel.mjs +2 -2
  38. package/es/DraggablePanel/DraggablePanel.mjs.map +1 -1
  39. package/es/DraggablePanel/components/DraggablePanelBody.d.mts +2 -2
  40. package/es/DraggablePanel/components/DraggablePanelContainer.d.mts +2 -2
  41. package/es/DraggablePanel/components/DraggablePanelFooter.d.mts +2 -2
  42. package/es/DraggablePanel/components/DraggablePanelHeader.d.mts +2 -2
  43. package/es/DraggablePanel/components/DraggablePanelHeader.mjs +2 -2
  44. package/es/DraggablePanel/components/DraggablePanelHeader.mjs.map +1 -1
  45. package/es/DraggableSideNav/DraggableSideNav.d.mts +2 -2
  46. package/es/DraggableSideNav/DraggableSideNav.mjs +2 -2
  47. package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
  48. package/es/Drawer/Drawer.d.mts +2 -2
  49. package/es/Dropdown/Dropdown.d.mts +2 -2
  50. package/es/DropdownMenu/DropdownMenu.d.mts +2 -2
  51. package/es/DropdownMenu/DropdownMenu.mjs +7 -3
  52. package/es/DropdownMenu/DropdownMenu.mjs.map +1 -1
  53. package/es/DropdownMenu/index.d.mts +3 -2
  54. package/es/DropdownMenu/renderItems.d.mts +3 -3
  55. package/es/DropdownMenu/renderItems.mjs +20 -30
  56. package/es/DropdownMenu/renderItems.mjs.map +1 -1
  57. package/es/DropdownMenu/type.d.mts +9 -0
  58. package/es/EditableText/EditableText.d.mts +2 -2
  59. package/es/EditableText/EditableText.mjs +2 -2
  60. package/es/EditableText/EditableText.mjs.map +1 -1
  61. package/es/EditorSlashMenu/atoms.d.mts +12 -12
  62. package/es/EmojiPicker/EmojiPicker.d.mts +2 -2
  63. package/es/EmojiPicker/EmojiPicker.mjs +3 -3
  64. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  65. package/es/Flex/FlexBasic.d.mts +2 -2
  66. package/es/FontLoader/index.d.mts +2 -2
  67. package/es/Footer/Footer.d.mts +2 -2
  68. package/es/Form/components/FormGroup.d.mts +2 -2
  69. package/es/Form/components/FormItem.d.mts +2 -2
  70. package/es/Form/components/FormSubmitFooter.d.mts +2 -2
  71. package/es/FormModal/FormModal.d.mts +2 -2
  72. package/es/GuideCard/GuideCard.d.mts +2 -2
  73. package/es/Header/Header.d.mts +2 -2
  74. package/es/Highlighter/Highlighter.d.mts +2 -2
  75. package/es/Highlighter/SyntaxHighlighter/index.d.mts +2 -2
  76. package/es/Hotkey/Hotkey.d.mts +2 -2
  77. package/es/HotkeyInput/HotkeyInput.d.mts +2 -2
  78. package/es/HotkeyInput/HotkeyInput.mjs +2 -2
  79. package/es/HotkeyInput/HotkeyInput.mjs.map +1 -1
  80. package/es/Icon/Icon.d.mts +2 -2
  81. package/es/Icon/components/IconProvider.d.mts +3 -3
  82. package/es/Image/PreviewGroup.d.mts +2 -2
  83. package/es/ImageSelect/ImageSelect.d.mts +2 -2
  84. package/es/ImageSelect/ImageSelect.mjs +2 -2
  85. package/es/ImageSelect/ImageSelect.mjs.map +1 -1
  86. package/es/Input/Input.d.mts +2 -2
  87. package/es/Input/InputNumber.d.mts +2 -2
  88. package/es/Input/InputOPT.d.mts +2 -2
  89. package/es/Input/InputPassword.d.mts +2 -2
  90. package/es/Input/TextArea.d.mts +2 -2
  91. package/es/Layout/components/LayoutFooter.d.mts +2 -2
  92. package/es/Layout/components/LayoutHeader.d.mts +2 -2
  93. package/es/Layout/components/LayoutMain.d.mts +2 -2
  94. package/es/Layout/components/LayoutSidebar.d.mts +2 -2
  95. package/es/Layout/components/LayoutSidebarInner.d.mts +2 -2
  96. package/es/Layout/components/LayoutToc.d.mts +2 -2
  97. package/es/List/ListItem/index.d.mts +2 -2
  98. package/es/LobeSelect/LobeSelect.d.mts +2 -2
  99. package/es/LobeSelect/atoms.d.mts +19 -19
  100. package/es/LobeSwitch/LobeSwitch.d.mts +2 -2
  101. package/es/LobeSwitch/atoms.d.mts +4 -4
  102. package/es/LobeSwitch/atoms.mjs +2 -2
  103. package/es/LobeSwitch/atoms.mjs.map +1 -1
  104. package/es/Markdown/Markdown.d.mts +2 -2
  105. package/es/Markdown/Typography.d.mts +2 -2
  106. package/es/Markdown/components/SearchResultCards/index.d.mts +2 -2
  107. package/es/MaskShadow/MaskShadow.d.mts +2 -2
  108. package/es/Menu/Menu.d.mts +2 -2
  109. package/es/Menu/baseItem.d.mts +21 -3
  110. package/es/Menu/index.d.mts +3 -2
  111. package/es/Menu/index.mjs +2 -1
  112. package/es/Menu/renderUtils.d.mts +35 -0
  113. package/es/Menu/renderUtils.mjs +46 -0
  114. package/es/Menu/renderUtils.mjs.map +1 -0
  115. package/es/Mermaid/Mermaid.d.mts +2 -2
  116. package/es/Mermaid/SyntaxMermaid/index.d.mts +2 -2
  117. package/es/Modal/Modal.d.mts +2 -2
  118. package/es/Modal/ModalProvider.d.mts +2 -2
  119. package/es/Modal/imperative.d.mts +2 -2
  120. package/es/MotionProvider/index.d.mts +2 -2
  121. package/es/Popover/ArrowIcon.d.mts +2 -2
  122. package/es/Popover/atoms.d.mts +9 -9
  123. package/es/Popover/context.d.mts +2 -2
  124. package/es/SearchBar/SearchBar.d.mts +2 -2
  125. package/es/SearchBar/SearchBar.mjs +2 -2
  126. package/es/SearchBar/SearchBar.mjs.map +1 -1
  127. package/es/Segmented/Segmented.d.mts +2 -2
  128. package/es/Select/Select.d.mts +6 -3
  129. package/es/Select/Select.mjs +6 -3
  130. package/es/Select/Select.mjs.map +1 -1
  131. package/es/Select/index.d.mts +2 -2
  132. package/es/SideNav/SideNav.d.mts +2 -2
  133. package/es/SliderWithInput/SliderWithInput.d.mts +2 -2
  134. package/es/SortableList/components/DragHandle.d.mts +2 -2
  135. package/es/SortableList/components/SortableItem.d.mts +2 -2
  136. package/es/ThemeProvider/ThemeProvider.d.mts +2 -2
  137. package/es/Toast/Toast.mjs +40 -22
  138. package/es/Toast/Toast.mjs.map +1 -1
  139. package/es/Toast/imperative.d.mts +3 -3
  140. package/es/Toast/index.d.mts +2 -2
  141. package/es/Toast/style.mjs +99 -12
  142. package/es/Toast/style.mjs.map +1 -1
  143. package/es/Toast/type.d.mts +33 -1
  144. package/es/Toc/Toc.d.mts +2 -2
  145. package/es/Toc/TocMobile.mjs +2 -2
  146. package/es/Toc/TocMobile.mjs.map +1 -1
  147. package/es/Video/index.d.mts +2 -2
  148. package/es/awesome/AuroraBackground/AuroraBackground.d.mts +2 -2
  149. package/es/awesome/BottomGradientButton/BottomGradientButton.d.mts +2 -2
  150. package/es/awesome/Features/Features.d.mts +2 -2
  151. package/es/awesome/Giscus/Giscus.d.mts +2 -2
  152. package/es/awesome/GradientButton/GradientButton.d.mts +2 -2
  153. package/es/awesome/GridBackground/GridBackground.d.mts +2 -2
  154. package/es/awesome/GridBackground/GridShowcase.d.mts +2 -2
  155. package/es/awesome/Hero/Hero.d.mts +2 -2
  156. package/es/awesome/Spline/Spine.d.mts +2 -2
  157. package/es/awesome/Spotlight/Spotlight.d.mts +2 -2
  158. package/es/awesome/SpotlightCard/SpotlightCard.d.mts +2 -2
  159. package/es/awesome/TypewriterEffect/TypewriterEffect.d.mts +2 -2
  160. package/es/brand/LobeChat/index.d.mts +2 -2
  161. package/es/brand/LobeHub/index.d.mts +2 -2
  162. package/es/brand/LogoThree/LogoSpline.d.mts +2 -2
  163. package/es/brand/LogoThree/index.d.mts +2 -2
  164. package/es/chat/BackBottom/BackBottom.d.mts +2 -2
  165. package/es/chat/ChatInputArea/components/ChatInputAreaInner.d.mts +2 -2
  166. package/es/chat/ChatItem/ChatItem.d.mts +2 -2
  167. package/es/chat/ChatList/ChatList.d.mts +2 -2
  168. package/es/chat/EditableMessage/EditableMessage.d.mts +2 -2
  169. package/es/chat/EditableMessage/EditableMessage.mjs +3 -3
  170. package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
  171. package/es/chat/EditableMessageList/EditableMessageList.d.mts +2 -2
  172. package/es/chat/MessageInput/MessageInput.d.mts +2 -2
  173. package/es/chat/MessageModal/MessageModal.d.mts +2 -2
  174. package/es/chat/MessageModal/MessageModal.mjs +3 -3
  175. package/es/chat/MessageModal/MessageModal.mjs.map +1 -1
  176. package/es/color/ColorScales/index.d.mts +2 -2
  177. package/es/color/CssVar/index.d.mts +2 -2
  178. package/es/i18n/context.d.mts +2 -2
  179. package/es/icons/lucideExtra/BotPromptIcon.d.mts +2 -2
  180. package/es/icons/lucideExtra/CreateBotIcon.d.mts +3 -3
  181. package/es/icons/lucideExtra/DiscordIcon.d.mts +3 -3
  182. package/es/icons/lucideExtra/GlobeOffIcon.d.mts +2 -2
  183. package/es/icons/lucideExtra/GroupBotIcon.d.mts +2 -2
  184. package/es/icons/lucideExtra/GroupBotSquareIcon.d.mts +3 -3
  185. package/es/icons/lucideExtra/LeftClickIcon.d.mts +3 -3
  186. package/es/icons/lucideExtra/LeftDoubleClickIcon.d.mts +2 -2
  187. package/es/icons/lucideExtra/McpIcon.d.mts +3 -3
  188. package/es/icons/lucideExtra/ProviderIcon.d.mts +2 -2
  189. package/es/icons/lucideExtra/RightClickIcon.d.mts +3 -3
  190. package/es/icons/lucideExtra/RightDoubleClickIcon.d.mts +3 -3
  191. package/es/icons/lucideExtra/ShapesUploadIcon.d.mts +2 -2
  192. package/es/icons/lucideExtra/TreeDownRightIcon.d.mts +2 -2
  193. package/es/icons/lucideExtra/TreeUpDownRightIcon.d.mts +2 -2
  194. package/es/index.d.mts +3 -3
  195. package/es/index.mjs +1 -1
  196. package/es/mdx/Mdx/index.d.mts +2 -2
  197. package/es/mobile/ChatHeader/ChatHeaderTitle.d.mts +2 -2
  198. package/es/mobile/ChatInputArea/components/ChatSendButton.d.mts +2 -2
  199. package/es/mobile/TabBar/TabBar.mjs +2 -2
  200. package/es/mobile/TabBar/TabBar.mjs.map +1 -1
  201. package/es/storybook/StoryBook/index.d.mts +2 -2
  202. package/package.json +1 -1
@@ -1,11 +1,11 @@
1
- import * as react66 from "react";
1
+ import * as react30 from "react";
2
2
  import { ReactNode } from "react";
3
3
 
4
4
  //#region src/Popover/context.d.ts
5
5
  type PopoverContextValue = {
6
6
  close: () => void;
7
7
  };
8
- declare const PopoverProvider: react66.NamedExoticComponent<{
8
+ declare const PopoverProvider: react30.NamedExoticComponent<{
9
9
  children: ReactNode;
10
10
  value: PopoverContextValue;
11
11
  }>;
@@ -1,8 +1,8 @@
1
1
  import { SearchBarProps } from "./type.mjs";
2
- import * as react61 from "react";
2
+ import * as react20 from "react";
3
3
 
4
4
  //#region src/SearchBar/SearchBar.d.ts
5
- declare const SearchBar: react61.NamedExoticComponent<SearchBarProps>;
5
+ declare const SearchBar: react20.NamedExoticComponent<SearchBarProps>;
6
6
  //#endregion
7
7
  export { SearchBar };
8
8
  //# sourceMappingURL=SearchBar.d.mts.map
@@ -8,13 +8,13 @@ import { styles } from "./style.mjs";
8
8
  import { memo, useMemo, useRef, useState } from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import { cx } from "antd-style";
11
- import useControlledState from "use-merge-value";
11
+ import useMergeState from "use-merge-value";
12
12
  import { LucideLoader2, Search } from "lucide-react";
13
13
  import { useHotkeys } from "react-hotkeys-hook";
14
14
 
15
15
  //#region src/SearchBar/SearchBar.tsx
16
16
  const SearchBar = memo(({ defaultValue = "", spotlight, className, value, onInputChange, placeholder, enableShortKey, shortKey = "mod+k", onSearch, loading, style, onChange, onBlur, onPressEnter, onFocus, styles: { input: inputStyle, shortKey: shortKeyStyle } = {}, classNames: { input: inputClassName, shortKey: shortKeyClassName } = {}, ...rest }) => {
17
- const [inputValue, setInputValue] = useControlledState(defaultValue, {
17
+ const [inputValue, setInputValue] = useMergeState(defaultValue, {
18
18
  defaultValue,
19
19
  onChange: onInputChange,
20
20
  value
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBar.mjs","names":["inputReference: any","Spotlight","Input","Icon","Hotkey"],"sources":["../../src/SearchBar/SearchBar.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { LucideLoader2, Search } from 'lucide-react';\nimport { memo, useMemo, useRef, useState } from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport useControlledState from 'use-merge-value';\n\nimport Hotkey from '@/Hotkey';\nimport Icon from '@/Icon';\nimport Input from '@/Input';\nimport Spotlight from '@/awesome/Spotlight';\n\nimport { styles } from './style';\nimport type { SearchBarProps } from './type';\n\nconst SearchBar = memo<SearchBarProps>(\n ({\n defaultValue = '',\n spotlight,\n className,\n value,\n onInputChange,\n placeholder,\n enableShortKey,\n shortKey = 'mod+k',\n onSearch,\n loading,\n style,\n onChange,\n onBlur,\n onPressEnter,\n onFocus,\n styles: { input: inputStyle, shortKey: shortKeyStyle } = {},\n classNames: { input: inputClassName, shortKey: shortKeyClassName } = {},\n ...rest\n }) => {\n const [inputValue, setInputValue] = useControlledState(defaultValue, {\n defaultValue,\n onChange: onInputChange,\n value,\n });\n\n const [showTag, setShowTag] = useState<boolean>(true);\n const inputReference: any = useRef<HTMLInputElement>(null);\n const hotkey = useMemo(\n () => (shortKey.includes('+') ? shortKey : `mod+${shortKey}`),\n [shortKey],\n );\n\n useHotkeys(\n hotkey,\n () => {\n if (!enableShortKey) return;\n inputReference.current?.focus();\n },\n {\n enableOnFormTags: true,\n enabled: !!enableShortKey && !!shortKey,\n preventDefault: true,\n },\n );\n\n return (\n <div className={cx(styles.search, className)} style={style}>\n {spotlight && <Spotlight />}\n <Input\n allowClear\n className={inputClassName}\n onBlur={(e) => {\n onBlur?.(e);\n setInputValue(e.target.value);\n setShowTag(true);\n }}\n onChange={(e) => {\n setInputValue(e.target.value);\n onChange?.(e);\n }}\n onFocus={(e) => {\n onFocus?.(e);\n setShowTag(false);\n }}\n onPressEnter={(e) => {\n onPressEnter?.(e);\n onSearch?.(inputValue);\n }}\n placeholder={placeholder ?? 'Type keywords...'}\n prefix={\n <Icon\n className={styles.icon}\n icon={loading ? LucideLoader2 : Search}\n size=\"small\"\n spin={loading}\n style={{ marginRight: 4 }}\n />\n }\n ref={inputReference}\n style={inputStyle}\n value={inputValue}\n {...rest}\n />\n {enableShortKey && showTag && !inputValue && (\n <Hotkey\n className={cx(styles.tag, shortKeyClassName)}\n compact\n keys={hotkey}\n style={shortKeyStyle}\n />\n )}\n </div>\n );\n },\n);\n\nSearchBar.displayName = 'SearchBar';\n\nexport default SearchBar;\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAM,YAAY,MACf,EACC,eAAe,IACf,WACA,WACA,OACA,eACA,aACA,gBACA,WAAW,SACX,UACA,SACA,OACA,UACA,QACA,cACA,SACA,QAAQ,EAAE,OAAO,YAAY,UAAU,kBAAkB,EAAE,EAC3D,YAAY,EAAE,OAAO,gBAAgB,UAAU,sBAAsB,EAAE,EACvE,GAAG,WACC;CACJ,MAAM,CAAC,YAAY,iBAAiB,mBAAmB,cAAc;EACnE;EACA,UAAU;EACV;EACD,CAAC;CAEF,MAAM,CAAC,SAAS,cAAc,SAAkB,KAAK;CACrD,MAAMA,iBAAsB,OAAyB,KAAK;CAC1D,MAAM,SAAS,cACN,SAAS,SAAS,IAAI,GAAG,WAAW,OAAO,YAClD,CAAC,SAAS,CACX;AAED,YACE,cACM;AACJ,MAAI,CAAC,eAAgB;AACrB,iBAAe,SAAS,OAAO;IAEjC;EACE,kBAAkB;EAClB,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;EAC/B,gBAAgB;EACjB,CACF;AAED,QACE,qBAAC;EAAI,WAAW,GAAG,OAAO,QAAQ,UAAU;EAAS;;GAClD,aAAa,oBAACC,sBAAY;GAC3B,oBAACC;IACC;IACA,WAAW;IACX,SAAS,MAAM;AACb,cAAS,EAAE;AACX,mBAAc,EAAE,OAAO,MAAM;AAC7B,gBAAW,KAAK;;IAElB,WAAW,MAAM;AACf,mBAAc,EAAE,OAAO,MAAM;AAC7B,gBAAW,EAAE;;IAEf,UAAU,MAAM;AACd,eAAU,EAAE;AACZ,gBAAW,MAAM;;IAEnB,eAAe,MAAM;AACnB,oBAAe,EAAE;AACjB,gBAAW,WAAW;;IAExB,aAAa,eAAe;IAC5B,QACE,oBAACC;KACC,WAAW,OAAO;KAClB,MAAM,UAAU,gBAAgB;KAChC,MAAK;KACL,MAAM;KACN,OAAO,EAAE,aAAa,GAAG;MACzB;IAEJ,KAAK;IACL,OAAO;IACP,OAAO;IACP,GAAI;KACJ;GACD,kBAAkB,WAAW,CAAC,cAC7B,oBAACC;IACC,WAAW,GAAG,OAAO,KAAK,kBAAkB;IAC5C;IACA,MAAM;IACN,OAAO;KACP;;GAEA;EAGX;AAED,UAAU,cAAc;AAExB,wBAAe"}
1
+ {"version":3,"file":"SearchBar.mjs","names":["useControlledState","inputReference: any","Spotlight","Input","Icon","Hotkey"],"sources":["../../src/SearchBar/SearchBar.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { LucideLoader2, Search } from 'lucide-react';\nimport { memo, useMemo, useRef, useState } from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport useControlledState from 'use-merge-value';\n\nimport Hotkey from '@/Hotkey';\nimport Icon from '@/Icon';\nimport Input from '@/Input';\nimport Spotlight from '@/awesome/Spotlight';\n\nimport { styles } from './style';\nimport type { SearchBarProps } from './type';\n\nconst SearchBar = memo<SearchBarProps>(\n ({\n defaultValue = '',\n spotlight,\n className,\n value,\n onInputChange,\n placeholder,\n enableShortKey,\n shortKey = 'mod+k',\n onSearch,\n loading,\n style,\n onChange,\n onBlur,\n onPressEnter,\n onFocus,\n styles: { input: inputStyle, shortKey: shortKeyStyle } = {},\n classNames: { input: inputClassName, shortKey: shortKeyClassName } = {},\n ...rest\n }) => {\n const [inputValue, setInputValue] = useControlledState(defaultValue, {\n defaultValue,\n onChange: onInputChange,\n value,\n });\n\n const [showTag, setShowTag] = useState<boolean>(true);\n const inputReference: any = useRef<HTMLInputElement>(null);\n const hotkey = useMemo(\n () => (shortKey.includes('+') ? shortKey : `mod+${shortKey}`),\n [shortKey],\n );\n\n useHotkeys(\n hotkey,\n () => {\n if (!enableShortKey) return;\n inputReference.current?.focus();\n },\n {\n enableOnFormTags: true,\n enabled: !!enableShortKey && !!shortKey,\n preventDefault: true,\n },\n );\n\n return (\n <div className={cx(styles.search, className)} style={style}>\n {spotlight && <Spotlight />}\n <Input\n allowClear\n className={inputClassName}\n onBlur={(e) => {\n onBlur?.(e);\n setInputValue(e.target.value);\n setShowTag(true);\n }}\n onChange={(e) => {\n setInputValue(e.target.value);\n onChange?.(e);\n }}\n onFocus={(e) => {\n onFocus?.(e);\n setShowTag(false);\n }}\n onPressEnter={(e) => {\n onPressEnter?.(e);\n onSearch?.(inputValue);\n }}\n placeholder={placeholder ?? 'Type keywords...'}\n prefix={\n <Icon\n className={styles.icon}\n icon={loading ? LucideLoader2 : Search}\n size=\"small\"\n spin={loading}\n style={{ marginRight: 4 }}\n />\n }\n ref={inputReference}\n style={inputStyle}\n value={inputValue}\n {...rest}\n />\n {enableShortKey && showTag && !inputValue && (\n <Hotkey\n className={cx(styles.tag, shortKeyClassName)}\n compact\n keys={hotkey}\n style={shortKeyStyle}\n />\n )}\n </div>\n );\n },\n);\n\nSearchBar.displayName = 'SearchBar';\n\nexport default SearchBar;\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAM,YAAY,MACf,EACC,eAAe,IACf,WACA,WACA,OACA,eACA,aACA,gBACA,WAAW,SACX,UACA,SACA,OACA,UACA,QACA,cACA,SACA,QAAQ,EAAE,OAAO,YAAY,UAAU,kBAAkB,EAAE,EAC3D,YAAY,EAAE,OAAO,gBAAgB,UAAU,sBAAsB,EAAE,EACvE,GAAG,WACC;CACJ,MAAM,CAAC,YAAY,iBAAiBA,cAAmB,cAAc;EACnE;EACA,UAAU;EACV;EACD,CAAC;CAEF,MAAM,CAAC,SAAS,cAAc,SAAkB,KAAK;CACrD,MAAMC,iBAAsB,OAAyB,KAAK;CAC1D,MAAM,SAAS,cACN,SAAS,SAAS,IAAI,GAAG,WAAW,OAAO,YAClD,CAAC,SAAS,CACX;AAED,YACE,cACM;AACJ,MAAI,CAAC,eAAgB;AACrB,iBAAe,SAAS,OAAO;IAEjC;EACE,kBAAkB;EAClB,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;EAC/B,gBAAgB;EACjB,CACF;AAED,QACE,qBAAC;EAAI,WAAW,GAAG,OAAO,QAAQ,UAAU;EAAS;;GAClD,aAAa,oBAACC,sBAAY;GAC3B,oBAACC;IACC;IACA,WAAW;IACX,SAAS,MAAM;AACb,cAAS,EAAE;AACX,mBAAc,EAAE,OAAO,MAAM;AAC7B,gBAAW,KAAK;;IAElB,WAAW,MAAM;AACf,mBAAc,EAAE,OAAO,MAAM;AAC7B,gBAAW,EAAE;;IAEf,UAAU,MAAM;AACd,eAAU,EAAE;AACZ,gBAAW,MAAM;;IAEnB,eAAe,MAAM;AACnB,oBAAe,EAAE;AACjB,gBAAW,WAAW;;IAExB,aAAa,eAAe;IAC5B,QACE,oBAACC;KACC,WAAW,OAAO;KAClB,MAAM,UAAU,gBAAgB;KAChC,MAAK;KACL,MAAM;KACN,OAAO,EAAE,aAAa,GAAG;MACzB;IAEJ,KAAK;IACL,OAAO;IACP,OAAO;IACP,GAAI;KACJ;GACD,kBAAkB,WAAW,CAAC,cAC7B,oBAACC;IACC,WAAW,GAAG,OAAO,KAAK,kBAAkB;IAC5C;IACA,MAAM;IACN,OAAO;KACP;;GAEA;EAGX;AAED,UAAU,cAAc;AAExB,wBAAe"}
@@ -1,8 +1,8 @@
1
1
  import { SegmentedProps } from "./type.mjs";
2
- import * as react3 from "react";
2
+ import * as react22 from "react";
3
3
 
4
4
  //#region src/Segmented/Segmented.d.ts
5
- declare const Segmented: react3.NamedExoticComponent<SegmentedProps>;
5
+ declare const Segmented: react22.NamedExoticComponent<SegmentedProps>;
6
6
  //#endregion
7
7
  export { Segmented };
8
8
  //# sourceMappingURL=Segmented.d.mts.map
@@ -1,8 +1,11 @@
1
1
  import { SelectProps } from "./type.mjs";
2
- import * as react1 from "react";
2
+ import * as react14 from "react";
3
3
 
4
4
  //#region src/Select/Select.d.ts
5
- declare const Input: react1.NamedExoticComponent<SelectProps>;
5
+ /**
6
+ * @deprecated Use `LobeSelect` instead.
7
+ */
8
+ declare const Select: react14.NamedExoticComponent<SelectProps>;
6
9
  //#endregion
7
- export { Input };
10
+ export { Select };
8
11
  //# sourceMappingURL=Select.d.mts.map
@@ -9,7 +9,10 @@ import { cx, useThemeMode } from "antd-style";
9
9
  import { ChevronDownIcon } from "lucide-react";
10
10
 
11
11
  //#region src/Select/Select.tsx
12
- const Input$1 = memo(({ ref, variant, suffixIconProps, suffixIcon, shadow, className, ...rest }) => {
12
+ /**
13
+ * @deprecated Use `LobeSelect` instead.
14
+ */
15
+ const Select$1 = memo(({ ref, variant, suffixIconProps, suffixIcon, shadow, className, ...rest }) => {
13
16
  const { isDarkMode } = useThemeMode();
14
17
  return /* @__PURE__ */ jsx(Select, {
15
18
  className: cx(variants({
@@ -30,8 +33,8 @@ const Input$1 = memo(({ ref, variant, suffixIconProps, suffixIcon, shadow, class
30
33
  ...rest
31
34
  });
32
35
  });
33
- Input$1.displayName = "Input";
34
- var Select_default = Input$1;
36
+ Select$1.displayName = "Select";
37
+ var Select_default = Select$1;
35
38
 
36
39
  //#endregion
37
40
  export { Select_default as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Select.mjs","names":["Input","AntSelect","Icon"],"sources":["../../src/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport { Select as AntSelect } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { ChevronDownIcon } from 'lucide-react';\nimport { memo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { variants } from './style';\nimport type { SelectProps } from './type';\n\nconst Input = memo<SelectProps>(\n ({ ref, variant, suffixIconProps, suffixIcon, shadow, className, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n\n return (\n <AntSelect\n className={cx(\n variants({ shadow, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n ref={ref}\n suffixIcon={\n <Icon\n icon={suffixIcon || ChevronDownIcon}\n size={'small'}\n {...suffixIconProps}\n style={{\n pointerEvents: 'none',\n ...suffixIconProps?.style,\n }}\n />\n }\n variant={variant || (isDarkMode ? 'filled' : 'outlined')}\n {...rest}\n />\n );\n },\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n"],"mappings":";;;;;;;;;;;AAYA,MAAMA,UAAQ,MACX,EAAE,KAAK,SAAS,iBAAiB,YAAY,QAAQ,WAAW,GAAG,WAAW;CAC7E,MAAM,EAAE,eAAe,cAAc;AAErC,QACE,oBAACC;EACC,WAAW,GACT,SAAS;GAAE;GAAQ,SAAS,YAAY,aAAa,WAAW;GAAa,CAAC,EAC9E,UACD;EACI;EACL,YACE,oBAACC;GACC,MAAM,cAAc;GACpB,MAAM;GACN,GAAI;GACJ,OAAO;IACL,eAAe;IACf,GAAG,iBAAiB;IACrB;IACD;EAEJ,SAAS,YAAY,aAAa,WAAW;EAC7C,GAAI;GACJ;EAGP;AAED,QAAM,cAAc;AAEpB,qBAAeF"}
1
+ {"version":3,"file":"Select.mjs","names":["Select","AntSelect","Icon"],"sources":["../../src/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport { Select as AntSelect } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { ChevronDownIcon } from 'lucide-react';\nimport { memo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { variants } from './style';\nimport type { SelectProps } from './type';\n\n/**\n * @deprecated Use `LobeSelect` instead.\n */\nconst Select = memo<SelectProps>(\n ({ ref, variant, suffixIconProps, suffixIcon, shadow, className, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n\n return (\n <AntSelect\n className={cx(\n variants({ shadow, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n ref={ref}\n suffixIcon={\n <Icon\n icon={suffixIcon || ChevronDownIcon}\n size={'small'}\n {...suffixIconProps}\n style={{\n pointerEvents: 'none',\n ...suffixIconProps?.style,\n }}\n />\n }\n variant={variant || (isDarkMode ? 'filled' : 'outlined')}\n {...rest}\n />\n );\n },\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n"],"mappings":";;;;;;;;;;;;;;AAeA,MAAMA,WAAS,MACZ,EAAE,KAAK,SAAS,iBAAiB,YAAY,QAAQ,WAAW,GAAG,WAAW;CAC7E,MAAM,EAAE,eAAe,cAAc;AAErC,QACE,oBAACC;EACC,WAAW,GACT,SAAS;GAAE;GAAQ,SAAS,YAAY,aAAa,WAAW;GAAa,CAAC,EAC9E,UACD;EACI;EACL,YACE,oBAACC;GACC,MAAM,cAAc;GACpB,MAAM;GACN,GAAI;GACJ,OAAO;IACL,eAAe;IACf,GAAG,iBAAiB;IACrB;IACD;EAEJ,SAAS,YAAY,aAAa,WAAW;EAC7C,GAAI;GACJ;EAGP;AAED,SAAO,cAAc;AAErB,qBAAeF"}
@@ -1,3 +1,3 @@
1
1
  import { SelectProps } from "./type.mjs";
2
- import { Input } from "./Select.mjs";
3
- export { SelectProps, Input as default };
2
+ import { Select } from "./Select.mjs";
3
+ export { SelectProps, Select as default };
@@ -1,8 +1,8 @@
1
1
  import { SideNavProps } from "./type.mjs";
2
- import * as react0 from "react";
2
+ import * as react11 from "react";
3
3
 
4
4
  //#region src/SideNav/SideNav.d.ts
5
- declare const SideNav: react0.NamedExoticComponent<SideNavProps>;
5
+ declare const SideNav: react11.NamedExoticComponent<SideNavProps>;
6
6
  //#endregion
7
7
  export { SideNav };
8
8
  //# sourceMappingURL=SideNav.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { SliderWithInputProps } from "./type.mjs";
2
- import * as react0 from "react";
2
+ import * as react18 from "react";
3
3
 
4
4
  //#region src/SliderWithInput/SliderWithInput.d.ts
5
- declare const SliderWithInput: react0.NamedExoticComponent<SliderWithInputProps>;
5
+ declare const SliderWithInput: react18.NamedExoticComponent<SliderWithInputProps>;
6
6
  //#endregion
7
7
  export { SliderWithInput };
8
8
  //# sourceMappingURL=SliderWithInput.d.mts.map
@@ -1,9 +1,9 @@
1
1
  import { ActionIconProps } from "../../ActionIcon/type.mjs";
2
2
  import "../../ActionIcon/index.mjs";
3
- import * as react121 from "react";
3
+ import * as react90 from "react";
4
4
 
5
5
  //#region src/SortableList/components/DragHandle.d.ts
6
- declare const DragHandle: react121.NamedExoticComponent<ActionIconProps>;
6
+ declare const DragHandle: react90.NamedExoticComponent<ActionIconProps>;
7
7
  //#endregion
8
8
  export { DragHandle };
9
9
  //# sourceMappingURL=DragHandle.d.mts.map
@@ -1,6 +1,6 @@
1
1
  import { FlexboxProps } from "../../Flex/type.mjs";
2
2
  import "../../Flex/index.mjs";
3
- import * as react119 from "react";
3
+ import * as react88 from "react";
4
4
  import "@dnd-kit/core";
5
5
 
6
6
  //#region src/SortableList/components/SortableItem.d.ts
@@ -9,7 +9,7 @@ interface SortableItemProps extends Omit<FlexboxProps, 'id'> {
9
9
  id: string | number;
10
10
  variant?: 'borderless' | 'filled' | 'outlined';
11
11
  }
12
- declare const SortableItem: react119.NamedExoticComponent<SortableItemProps>;
12
+ declare const SortableItem: react88.NamedExoticComponent<SortableItemProps>;
13
13
  //#endregion
14
14
  export { SortableItem };
15
15
  //# sourceMappingURL=SortableItem.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { ThemeProviderProps } from "./type.mjs";
2
- import * as react37 from "react";
2
+ import * as react15 from "react";
3
3
 
4
4
  //#region src/ThemeProvider/ThemeProvider.d.ts
5
- declare const ThemeProvider: react37.NamedExoticComponent<ThemeProviderProps>;
5
+ declare const ThemeProvider: react15.NamedExoticComponent<ThemeProviderProps>;
6
6
  //#endregion
7
7
  export { ThemeProvider };
8
8
  //# sourceMappingURL=ThemeProvider.d.mts.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  import Icon_default from "../Icon/Icon.mjs";
4
4
  import { useToastContext } from "./context.mjs";
5
- import { rootVariants, styles } from "./style.mjs";
5
+ import { actionVariants, rootVariants, styles } from "./style.mjs";
6
6
  import { memo } from "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import { cssVar, cx } from "antd-style";
@@ -31,10 +31,13 @@ const ToastItem = memo(({ toast, classNames, styles: customStyles }) => {
31
31
  const toastData = toast.data;
32
32
  const type = toastData?.type ?? "default";
33
33
  const closable = toastData?.closable ?? true;
34
+ const hideCloseButton = toastData?.hideCloseButton ?? false;
35
+ const showCloseButton = closable && !hideCloseButton;
34
36
  const icon = toastData?.icon;
35
37
  const title = toast.title ?? toastData?.title;
36
38
  const description = toast.description ?? toastData?.description;
37
39
  const actionProps = toast.actionProps ?? toastData?.actionProps;
40
+ const actions = toastData?.actions;
38
41
  const iconColor = typeColors[type];
39
42
  const IconComponent = icon ?? typeIcons[type];
40
43
  const isLoading = type === "loading";
@@ -51,6 +54,25 @@ const ToastItem = memo(({ toast, classNames, styles: customStyles }) => {
51
54
  })
52
55
  });
53
56
  };
57
+ const renderActions = () => {
58
+ if (actions && actions.length > 0) return /* @__PURE__ */ jsx("div", {
59
+ className: cx(styles.actions, classNames?.actions),
60
+ style: customStyles?.actions,
61
+ children: actions.map((action, index) => /* @__PURE__ */ jsx(Toast.Action, {
62
+ className: cx(actionVariants({ variant: action.variant ?? "primary" }), classNames?.action),
63
+ onClick: action.onClick,
64
+ style: customStyles?.action,
65
+ ...action.props,
66
+ children: action.label
67
+ }, index))
68
+ });
69
+ if (actionProps) return /* @__PURE__ */ jsx(Toast.Action, {
70
+ className: cx(actionVariants({ variant: "primary" }), classNames?.action),
71
+ style: customStyles?.action,
72
+ ...actionProps
73
+ });
74
+ return null;
75
+ };
54
76
  return /* @__PURE__ */ jsx(Toast.Root, {
55
77
  className: cx(rootVariants({ position }), classNames?.root),
56
78
  style: {
@@ -59,21 +81,26 @@ const ToastItem = memo(({ toast, classNames, styles: customStyles }) => {
59
81
  },
60
82
  swipeDirection,
61
83
  toast,
62
- children: /* @__PURE__ */ jsxs(Toast.Content, {
84
+ children: /* @__PURE__ */ jsx(Toast.Content, {
63
85
  className: cx(styles.content, classNames?.content),
64
86
  style: customStyles?.content,
65
- children: [/* @__PURE__ */ jsxs("div", {
87
+ children: /* @__PURE__ */ jsxs("div", {
66
88
  className: styles.toastBody,
67
89
  children: [renderIcon(), /* @__PURE__ */ jsxs("div", {
68
- style: {
69
- flex: 1,
70
- minWidth: 0
71
- },
90
+ className: styles.contentArea,
72
91
  children: [
73
- title && /* @__PURE__ */ jsx(Toast.Title, {
74
- className: cx(styles.title, classNames?.title),
75
- style: customStyles?.title,
76
- children: title
92
+ /* @__PURE__ */ jsxs("div", {
93
+ className: styles.titleRow,
94
+ children: [title && /* @__PURE__ */ jsx(Toast.Title, {
95
+ className: cx(styles.title, classNames?.title),
96
+ style: customStyles?.title,
97
+ children: title
98
+ }), showCloseButton && /* @__PURE__ */ jsx(Toast.Close, {
99
+ "aria-label": "Close",
100
+ className: cx(styles.close, classNames?.close),
101
+ style: customStyles?.close,
102
+ children: /* @__PURE__ */ jsx(X, { size: 14 })
103
+ })]
77
104
  }),
78
105
  description && /* @__PURE__ */ jsx(Toast.Description, {
79
106
  className: cx(styles.description, classNames?.description),
@@ -83,19 +110,10 @@ const ToastItem = memo(({ toast, classNames, styles: customStyles }) => {
83
110
  },
84
111
  children: description
85
112
  }),
86
- actionProps && /* @__PURE__ */ jsx(Toast.Action, {
87
- className: cx(styles.action, classNames?.action),
88
- style: customStyles?.action,
89
- ...actionProps
90
- })
113
+ renderActions()
91
114
  ]
92
115
  })]
93
- }), closable && /* @__PURE__ */ jsx(Toast.Close, {
94
- "aria-label": "Close",
95
- className: cx(styles.close, classNames?.close),
96
- style: customStyles?.close,
97
- children: /* @__PURE__ */ jsx(X, { size: 14 })
98
- })]
116
+ })
99
117
  })
100
118
  });
101
119
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.mjs","names":["typeIcons: Record<ToastType, typeof Info>","typeColors: Record<ToastType, string>","Icon","BaseToast"],"sources":["../../src/Toast/Toast.tsx"],"sourcesContent":["'use client';\n\nimport { Toast as BaseToast } from '@base-ui/react/toast';\nimport { cssVar, cx } from 'antd-style';\nimport { AlertTriangle, CheckCircle, Info, Loader2, X, XCircle } from 'lucide-react';\nimport { type ReactNode, memo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { useToastContext } from './context';\nimport { rootVariants, styles } from './style';\nimport type { ToastOptions, ToastProps, ToastType } from './type';\n\nconst typeIcons: Record<ToastType, typeof Info> = {\n default: Info,\n error: XCircle,\n info: Info,\n loading: Loader2,\n success: CheckCircle,\n warning: AlertTriangle,\n};\n\nconst typeColors: Record<ToastType, string> = {\n default: cssVar.colorText,\n error: cssVar.colorError,\n info: cssVar.colorInfo,\n loading: cssVar.colorPrimary,\n success: cssVar.colorSuccess,\n warning: cssVar.colorWarning,\n};\n\nconst ToastItem = memo<ToastProps>(({ toast, classNames, styles: customStyles }) => {\n const { position, swipeDirection } = useToastContext();\n const toastData = toast.data as ToastOptions | undefined;\n const type = toastData?.type ?? 'default';\n const closable = toastData?.closable ?? true;\n const icon = toastData?.icon;\n const title = toast.title ?? toastData?.title;\n const description = toast.description ?? toastData?.description;\n const actionProps = toast.actionProps ?? toastData?.actionProps;\n\n const iconColor = typeColors[type];\n const IconComponent = icon ?? typeIcons[type];\n const isLoading = type === 'loading';\n\n const renderIcon = (): ReactNode => {\n if (!IconComponent) return null;\n return (\n <div className={cx(styles.icon, classNames?.icon)} style={customStyles?.icon}>\n <Icon color={iconColor} icon={IconComponent} size={18} spin={isLoading} />\n </div>\n );\n };\n\n return (\n <BaseToast.Root\n className={cx(rootVariants({ position }), classNames?.root)}\n style={{\n ...customStyles?.root,\n ...toastData?.style,\n }}\n swipeDirection={swipeDirection}\n toast={toast}\n >\n <BaseToast.Content\n className={cx(styles.content, classNames?.content)}\n style={customStyles?.content}\n >\n <div className={styles.toastBody}>\n {renderIcon()}\n <div style={{ flex: 1, minWidth: 0 }}>\n {title && (\n <BaseToast.Title\n className={cx(styles.title, classNames?.title)}\n style={customStyles?.title}\n >\n {title}\n </BaseToast.Title>\n )}\n {description && (\n <BaseToast.Description\n className={cx(styles.description, classNames?.description)}\n style={{\n marginBlockStart: title ? 4 : 0,\n ...customStyles?.description,\n }}\n >\n {description}\n </BaseToast.Description>\n )}\n {actionProps && (\n <BaseToast.Action\n className={cx(styles.action, classNames?.action)}\n style={customStyles?.action}\n {...actionProps}\n />\n )}\n </div>\n </div>\n {closable && (\n <BaseToast.Close\n aria-label=\"Close\"\n className={cx(styles.close, classNames?.close)}\n style={customStyles?.close}\n >\n <X size={14} />\n </BaseToast.Close>\n )}\n </BaseToast.Content>\n </BaseToast.Root>\n );\n});\n\nToastItem.displayName = 'ToastItem';\n\nexport default ToastItem;\n"],"mappings":";;;;;;;;;;;;AAaA,MAAMA,YAA4C;CAChD,SAAS;CACT,OAAO;CACP,MAAM;CACN,SAAS;CACT,SAAS;CACT,SAAS;CACV;AAED,MAAMC,aAAwC;CAC5C,SAAS,OAAO;CAChB,OAAO,OAAO;CACd,MAAM,OAAO;CACb,SAAS,OAAO;CAChB,SAAS,OAAO;CAChB,SAAS,OAAO;CACjB;AAED,MAAM,YAAY,MAAkB,EAAE,OAAO,YAAY,QAAQ,mBAAmB;CAClF,MAAM,EAAE,UAAU,mBAAmB,iBAAiB;CACtD,MAAM,YAAY,MAAM;CACxB,MAAM,OAAO,WAAW,QAAQ;CAChC,MAAM,WAAW,WAAW,YAAY;CACxC,MAAM,OAAO,WAAW;CACxB,MAAM,QAAQ,MAAM,SAAS,WAAW;CACxC,MAAM,cAAc,MAAM,eAAe,WAAW;CACpD,MAAM,cAAc,MAAM,eAAe,WAAW;CAEpD,MAAM,YAAY,WAAW;CAC7B,MAAM,gBAAgB,QAAQ,UAAU;CACxC,MAAM,YAAY,SAAS;CAE3B,MAAM,mBAA8B;AAClC,MAAI,CAAC,cAAe,QAAO;AAC3B,SACE,oBAAC;GAAI,WAAW,GAAG,OAAO,MAAM,YAAY,KAAK;GAAE,OAAO,cAAc;aACtE,oBAACC;IAAK,OAAO;IAAW,MAAM;IAAe,MAAM;IAAI,MAAM;KAAa;IACtE;;AAIV,QACE,oBAACC,MAAU;EACT,WAAW,GAAG,aAAa,EAAE,UAAU,CAAC,EAAE,YAAY,KAAK;EAC3D,OAAO;GACL,GAAG,cAAc;GACjB,GAAG,WAAW;GACf;EACe;EACT;YAEP,qBAACA,MAAU;GACT,WAAW,GAAG,OAAO,SAAS,YAAY,QAAQ;GAClD,OAAO,cAAc;cAErB,qBAAC;IAAI,WAAW,OAAO;eACpB,YAAY,EACb,qBAAC;KAAI,OAAO;MAAE,MAAM;MAAG,UAAU;MAAG;;MACjC,SACC,oBAACA,MAAU;OACT,WAAW,GAAG,OAAO,OAAO,YAAY,MAAM;OAC9C,OAAO,cAAc;iBAEpB;QACe;MAEnB,eACC,oBAACA,MAAU;OACT,WAAW,GAAG,OAAO,aAAa,YAAY,YAAY;OAC1D,OAAO;QACL,kBAAkB,QAAQ,IAAI;QAC9B,GAAG,cAAc;QAClB;iBAEA;QACqB;MAEzB,eACC,oBAACA,MAAU;OACT,WAAW,GAAG,OAAO,QAAQ,YAAY,OAAO;OAChD,OAAO,cAAc;OACrB,GAAI;QACJ;;MAEA;KACF,EACL,YACC,oBAACA,MAAU;IACT,cAAW;IACX,WAAW,GAAG,OAAO,OAAO,YAAY,MAAM;IAC9C,OAAO,cAAc;cAErB,oBAAC,KAAE,MAAM,KAAM;KACC;IAEF;GACL;EAEnB;AAEF,UAAU,cAAc;AAExB,oBAAe"}
1
+ {"version":3,"file":"Toast.mjs","names":["typeIcons: Record<ToastType, typeof Info>","typeColors: Record<ToastType, string>","Icon","BaseToast"],"sources":["../../src/Toast/Toast.tsx"],"sourcesContent":["'use client';\n\nimport { Toast as BaseToast } from '@base-ui/react/toast';\nimport { cssVar, cx } from 'antd-style';\nimport { AlertTriangle, CheckCircle, Info, Loader2, X, XCircle } from 'lucide-react';\nimport { type ReactNode, memo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { useToastContext } from './context';\nimport { actionVariants, rootVariants, styles } from './style';\nimport type { ToastOptions, ToastProps, ToastType } from './type';\n\nconst typeIcons: Record<ToastType, typeof Info> = {\n default: Info,\n error: XCircle,\n info: Info,\n loading: Loader2,\n success: CheckCircle,\n warning: AlertTriangle,\n};\n\nconst typeColors: Record<ToastType, string> = {\n default: cssVar.colorText,\n error: cssVar.colorError,\n info: cssVar.colorInfo,\n loading: cssVar.colorPrimary,\n success: cssVar.colorSuccess,\n warning: cssVar.colorWarning,\n};\n\nconst ToastItem = memo<ToastProps>(({ toast, classNames, styles: customStyles }) => {\n const { position, swipeDirection } = useToastContext();\n const toastData = toast.data as ToastOptions | undefined;\n const type = toastData?.type ?? 'default';\n const closable = toastData?.closable ?? true;\n const hideCloseButton = toastData?.hideCloseButton ?? false;\n const showCloseButton = closable && !hideCloseButton;\n const icon = toastData?.icon;\n const title = toast.title ?? toastData?.title;\n const description = toast.description ?? toastData?.description;\n const actionProps = toast.actionProps ?? toastData?.actionProps;\n const actions = toastData?.actions;\n\n const iconColor = typeColors[type];\n const IconComponent = icon ?? typeIcons[type];\n const isLoading = type === 'loading';\n\n const renderIcon = (): ReactNode => {\n if (!IconComponent) return null;\n return (\n <div className={cx(styles.icon, classNames?.icon)} style={customStyles?.icon}>\n <Icon color={iconColor} icon={IconComponent} size={18} spin={isLoading} />\n </div>\n );\n };\n\n const renderActions = (): ReactNode => {\n if (actions && actions.length > 0) {\n return (\n <div className={cx(styles.actions, classNames?.actions)} style={customStyles?.actions}>\n {actions.map((action, index) => (\n <BaseToast.Action\n className={cx(\n actionVariants({ variant: action.variant ?? 'primary' }),\n classNames?.action,\n )}\n key={index}\n onClick={action.onClick}\n style={customStyles?.action}\n {...action.props}\n >\n {action.label}\n </BaseToast.Action>\n ))}\n </div>\n );\n }\n if (actionProps) {\n return (\n <BaseToast.Action\n className={cx(actionVariants({ variant: 'primary' }), classNames?.action)}\n style={customStyles?.action}\n {...actionProps}\n />\n );\n }\n return null;\n };\n\n return (\n <BaseToast.Root\n className={cx(rootVariants({ position }), classNames?.root)}\n style={{\n ...customStyles?.root,\n ...toastData?.style,\n }}\n swipeDirection={swipeDirection}\n toast={toast}\n >\n <BaseToast.Content\n className={cx(styles.content, classNames?.content)}\n style={customStyles?.content}\n >\n <div className={styles.toastBody}>\n {renderIcon()}\n <div className={styles.contentArea}>\n <div className={styles.titleRow}>\n {title && (\n <BaseToast.Title\n className={cx(styles.title, classNames?.title)}\n style={customStyles?.title}\n >\n {title}\n </BaseToast.Title>\n )}\n {showCloseButton && (\n <BaseToast.Close\n aria-label=\"Close\"\n className={cx(styles.close, classNames?.close)}\n style={customStyles?.close}\n >\n <X size={14} />\n </BaseToast.Close>\n )}\n </div>\n {description && (\n <BaseToast.Description\n className={cx(styles.description, classNames?.description)}\n style={{\n marginBlockStart: title ? 4 : 0,\n ...customStyles?.description,\n }}\n >\n {description}\n </BaseToast.Description>\n )}\n {renderActions()}\n </div>\n </div>\n </BaseToast.Content>\n </BaseToast.Root>\n );\n});\n\nToastItem.displayName = 'ToastItem';\n\nexport default ToastItem;\n"],"mappings":";;;;;;;;;;;;AAaA,MAAMA,YAA4C;CAChD,SAAS;CACT,OAAO;CACP,MAAM;CACN,SAAS;CACT,SAAS;CACT,SAAS;CACV;AAED,MAAMC,aAAwC;CAC5C,SAAS,OAAO;CAChB,OAAO,OAAO;CACd,MAAM,OAAO;CACb,SAAS,OAAO;CAChB,SAAS,OAAO;CAChB,SAAS,OAAO;CACjB;AAED,MAAM,YAAY,MAAkB,EAAE,OAAO,YAAY,QAAQ,mBAAmB;CAClF,MAAM,EAAE,UAAU,mBAAmB,iBAAiB;CACtD,MAAM,YAAY,MAAM;CACxB,MAAM,OAAO,WAAW,QAAQ;CAChC,MAAM,WAAW,WAAW,YAAY;CACxC,MAAM,kBAAkB,WAAW,mBAAmB;CACtD,MAAM,kBAAkB,YAAY,CAAC;CACrC,MAAM,OAAO,WAAW;CACxB,MAAM,QAAQ,MAAM,SAAS,WAAW;CACxC,MAAM,cAAc,MAAM,eAAe,WAAW;CACpD,MAAM,cAAc,MAAM,eAAe,WAAW;CACpD,MAAM,UAAU,WAAW;CAE3B,MAAM,YAAY,WAAW;CAC7B,MAAM,gBAAgB,QAAQ,UAAU;CACxC,MAAM,YAAY,SAAS;CAE3B,MAAM,mBAA8B;AAClC,MAAI,CAAC,cAAe,QAAO;AAC3B,SACE,oBAAC;GAAI,WAAW,GAAG,OAAO,MAAM,YAAY,KAAK;GAAE,OAAO,cAAc;aACtE,oBAACC;IAAK,OAAO;IAAW,MAAM;IAAe,MAAM;IAAI,MAAM;KAAa;IACtE;;CAIV,MAAM,sBAAiC;AACrC,MAAI,WAAW,QAAQ,SAAS,EAC9B,QACE,oBAAC;GAAI,WAAW,GAAG,OAAO,SAAS,YAAY,QAAQ;GAAE,OAAO,cAAc;aAC3E,QAAQ,KAAK,QAAQ,UACpB,oBAACC,MAAU;IACT,WAAW,GACT,eAAe,EAAE,SAAS,OAAO,WAAW,WAAW,CAAC,EACxD,YAAY,OACb;IAED,SAAS,OAAO;IAChB,OAAO,cAAc;IACrB,GAAI,OAAO;cAEV,OAAO;MALH,MAMY,CACnB;IACE;AAGV,MAAI,YACF,QACE,oBAACA,MAAU;GACT,WAAW,GAAG,eAAe,EAAE,SAAS,WAAW,CAAC,EAAE,YAAY,OAAO;GACzE,OAAO,cAAc;GACrB,GAAI;IACJ;AAGN,SAAO;;AAGT,QACE,oBAACA,MAAU;EACT,WAAW,GAAG,aAAa,EAAE,UAAU,CAAC,EAAE,YAAY,KAAK;EAC3D,OAAO;GACL,GAAG,cAAc;GACjB,GAAG,WAAW;GACf;EACe;EACT;YAEP,oBAACA,MAAU;GACT,WAAW,GAAG,OAAO,SAAS,YAAY,QAAQ;GAClD,OAAO,cAAc;aAErB,qBAAC;IAAI,WAAW,OAAO;eACpB,YAAY,EACb,qBAAC;KAAI,WAAW,OAAO;;MACrB,qBAAC;OAAI,WAAW,OAAO;kBACpB,SACC,oBAACA,MAAU;QACT,WAAW,GAAG,OAAO,OAAO,YAAY,MAAM;QAC9C,OAAO,cAAc;kBAEpB;SACe,EAEnB,mBACC,oBAACA,MAAU;QACT,cAAW;QACX,WAAW,GAAG,OAAO,OAAO,YAAY,MAAM;QAC9C,OAAO,cAAc;kBAErB,oBAAC,KAAE,MAAM,KAAM;SACC;QAEhB;MACL,eACC,oBAACA,MAAU;OACT,WAAW,GAAG,OAAO,aAAa,YAAY,YAAY;OAC1D,OAAO;QACL,kBAAkB,QAAQ,IAAI;QAC9B,GAAG,cAAc;QAClB;iBAEA;QACqB;MAEzB,eAAe;;MACZ;KACF;IACY;GACL;EAEnB;AAEF,UAAU,cAAc;AAExB,oBAAe"}
@@ -1,5 +1,5 @@
1
1
  import { ToastAPI, ToastPosition } from "./type.mjs";
2
- import * as react31 from "react";
2
+ import * as react9 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: react31.MemoExoticComponent<({
34
+ declare const ToastHost: react9.MemoExoticComponent<({
35
35
  root,
36
36
  className,
37
37
  duration,
38
38
  limit,
39
39
  position,
40
40
  swipeDirection
41
- }: ToastHostProps) => react31.ReactPortal | null>;
41
+ }: ToastHostProps) => react9.ReactPortal | null>;
42
42
  declare const useToast: () => ToastAPI;
43
43
  //#endregion
44
44
  export { TOAST_CONTAINER_ATTR, ToastHost, ToastHostProps, toast, useToast };
@@ -1,3 +1,3 @@
1
- import { ToastAPI, ToastInstance, ToastOptions, ToastPosition, ToastPromiseOptions, ToastProps, ToastType } from "./type.mjs";
1
+ import { ToastAPI, ToastAction, ToastActionVariant, ToastInstance, ToastOptions, ToastPosition, ToastPromiseOptions, ToastProps, ToastType } from "./type.mjs";
2
2
  import { TOAST_CONTAINER_ATTR, ToastHost, ToastHostProps, toast, useToast } from "./imperative.mjs";
3
- export { TOAST_CONTAINER_ATTR, ToastAPI, ToastHost, type ToastHostProps, ToastInstance, ToastOptions, ToastPosition, ToastPromiseOptions, ToastProps, ToastType, toast, useToast };
3
+ export { TOAST_CONTAINER_ATTR, ToastAPI, ToastAction, ToastActionVariant, ToastHost, type ToastHostProps, ToastInstance, ToastOptions, ToastPosition, ToastPromiseOptions, ToastProps, ToastType, toast, useToast };
@@ -7,11 +7,11 @@ const styles = createStaticStyles(({ css: css$1, cssVar: cssVar$1 }) => ({
7
7
  cursor: pointer;
8
8
 
9
9
  display: inline-flex;
10
+ flex-shrink: 0;
10
11
  align-items: center;
11
12
  justify-content: center;
12
13
 
13
14
  height: 28px;
14
- margin-block-start: 8px;
15
15
  padding-inline: 12px;
16
16
  border: none;
17
17
  border-radius: ${cssVar$1.borderRadiusSM};
@@ -19,11 +19,50 @@ const styles = createStaticStyles(({ css: css$1, cssVar: cssVar$1 }) => ({
19
19
  font-size: 12px;
20
20
  font-weight: 500;
21
21
  line-height: 1;
22
+
23
+ transition:
24
+ background 0.2s,
25
+ color 0.2s;
26
+
27
+ &:focus-visible {
28
+ outline: 2px solid ${cssVar$1.colorPrimaryBorder};
29
+ outline-offset: 1px;
30
+ }
31
+ `,
32
+ actionDanger: css$1`
22
33
  color: ${cssVar$1.colorTextLightSolid};
34
+ background: ${cssVar$1.colorError};
23
35
 
24
- background: ${cssVar$1.colorPrimary};
36
+ &:hover {
37
+ background: ${cssVar$1.colorErrorHover};
38
+ }
39
+
40
+ &:active {
41
+ background: ${cssVar$1.colorErrorActive};
42
+ }
25
43
 
26
- transition: background 0.2s;
44
+ &:focus-visible {
45
+ outline-color: ${cssVar$1.colorErrorBorder};
46
+ }
47
+ `,
48
+ actionGhost: css$1`
49
+ border: 1px solid ${cssVar$1.colorBorder};
50
+ color: ${cssVar$1.colorText};
51
+ background: transparent;
52
+
53
+ &:hover {
54
+ border-color: ${cssVar$1.colorPrimary};
55
+ color: ${cssVar$1.colorPrimary};
56
+ }
57
+
58
+ &:active {
59
+ border-color: ${cssVar$1.colorPrimaryActive};
60
+ color: ${cssVar$1.colorPrimaryActive};
61
+ }
62
+ `,
63
+ actionPrimary: css$1`
64
+ color: ${cssVar$1.colorTextLightSolid};
65
+ background: ${cssVar$1.colorPrimary};
27
66
 
28
67
  &:hover {
29
68
  background: ${cssVar$1.colorPrimaryHover};
@@ -32,25 +71,53 @@ const styles = createStaticStyles(({ css: css$1, cssVar: cssVar$1 }) => ({
32
71
  &:active {
33
72
  background: ${cssVar$1.colorPrimaryActive};
34
73
  }
74
+ `,
75
+ actionSecondary: css$1`
76
+ color: ${cssVar$1.colorText};
77
+ background: ${cssVar$1.colorFillSecondary};
78
+
79
+ &:hover {
80
+ background: ${cssVar$1.colorFillTertiary};
81
+ }
35
82
 
36
- &:focus-visible {
37
- outline: 2px solid ${cssVar$1.colorPrimaryBorder};
38
- outline-offset: 1px;
83
+ &:active {
84
+ background: ${cssVar$1.colorFill};
85
+ }
86
+ `,
87
+ actionText: css$1`
88
+ color: ${cssVar$1.colorPrimary};
89
+ background: transparent;
90
+
91
+ &:hover {
92
+ background: ${cssVar$1.colorFillTertiary};
93
+ }
94
+
95
+ &:active {
96
+ background: ${cssVar$1.colorFillSecondary};
39
97
  }
98
+ `,
99
+ actions: css$1`
100
+ display: flex;
101
+ flex-grow: 1;
102
+ flex-shrink: 0;
103
+ gap: 8px;
104
+ align-items: center;
105
+ align-self: flex-end;
106
+ justify-content: flex-end;
107
+
108
+ margin-block-start: 8px;
40
109
  `,
41
110
  close: css$1`
42
111
  cursor: pointer;
43
112
 
44
- position: absolute;
45
- inset-block-start: 8px;
46
- inset-inline-end: 8px;
47
-
48
113
  display: flex;
114
+ flex-shrink: 0;
49
115
  align-items: center;
50
116
  justify-content: center;
51
117
 
52
118
  width: 20px;
53
119
  height: 20px;
120
+ margin-inline-start: auto;
54
121
  padding: 0;
55
122
  border: none;
56
123
  border-radius: ${cssVar$1.borderRadiusSM};
@@ -79,6 +146,12 @@ const styles = createStaticStyles(({ css: css$1, cssVar: cssVar$1 }) => ({
79
146
  pointer-events: auto;
80
147
  opacity: 1;
81
148
  }
149
+ `,
150
+ contentArea: css$1`
151
+ display: flex;
152
+ flex: 1;
153
+ flex-direction: column;
154
+ min-width: 0;
82
155
  `,
83
156
  description: css$1`
84
157
  margin: 0;
@@ -111,7 +184,6 @@ const styles = createStaticStyles(({ css: css$1, cssVar: cssVar$1 }) => ({
111
184
  height: var(--toast-collapsed-height);
112
185
  padding-block: 12px;
113
186
  padding-inline: 16px;
114
- padding-inline-end: 32px;
115
187
  border-radius: ${cssVar$1.borderRadiusLG};
116
188
 
117
189
  color: ${cssVar$1.colorText};
@@ -222,6 +294,11 @@ const styles = createStaticStyles(({ css: css$1, cssVar: cssVar$1 }) => ({
222
294
  font-weight: 500;
223
295
  line-height: 1.5;
224
296
  color: ${cssVar$1.colorText};
297
+ `,
298
+ titleRow: css$1`
299
+ display: flex;
300
+ gap: 8px;
301
+ align-items: center;
225
302
  `,
226
303
  toastBody: css$1`
227
304
  display: flex;
@@ -290,7 +367,17 @@ const rootVariants = cva(styles.root, {
290
367
  "top-right": styles.rootTop
291
368
  } }
292
369
  });
370
+ const actionVariants = cva(styles.action, {
371
+ defaultVariants: { variant: "primary" },
372
+ variants: { variant: {
373
+ danger: styles.actionDanger,
374
+ ghost: styles.actionGhost,
375
+ primary: styles.actionPrimary,
376
+ secondary: styles.actionSecondary,
377
+ text: styles.actionText
378
+ } }
379
+ });
293
380
 
294
381
  //#endregion
295
- export { rootVariants, styles, viewportVariants };
382
+ export { actionVariants, rootVariants, styles, viewportVariants };
296
383
  //# sourceMappingURL=style.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","names":["cssVar"],"sources":["../../src/Toast/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n action: css`\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n height: 28px;\n margin-block-start: 8px;\n padding-inline: 12px;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n font-size: 12px;\n font-weight: 500;\n line-height: 1;\n color: ${cssVar.colorTextLightSolid};\n\n background: ${cssVar.colorPrimary};\n\n transition: background 0.2s;\n\n &:hover {\n background: ${cssVar.colorPrimaryHover};\n }\n\n &:active {\n background: ${cssVar.colorPrimaryActive};\n }\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: 1px;\n }\n `,\n\n close: css`\n cursor: pointer;\n\n position: absolute;\n inset-block-start: 8px;\n inset-inline-end: 8px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 20px;\n height: 20px;\n padding: 0;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n color: ${cssVar.colorTextTertiary};\n\n background: transparent;\n\n transition: all 0.2s;\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n }\n `,\n\n content: css`\n overflow: hidden;\n transition: opacity 0.2s;\n\n &[data-behind] {\n pointer-events: none;\n opacity: 0;\n }\n\n &[data-expanded] {\n pointer-events: auto;\n opacity: 1;\n }\n `,\n\n description: css`\n margin: 0;\n font-size: 13px;\n line-height: 1.5;\n color: ${cssVar.colorTextSecondary};\n `,\n\n icon: css`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n `,\n\n root: css`\n --toast-gap: 12px;\n --toast-peek: 12px;\n --toast-scale: calc(1 - var(--toast-index) * 0.05);\n --toast-shrink: calc(1 - var(--toast-scale));\n --toast-collapsed-height: var(--toast-frontmost-height, var(--toast-height));\n\n cursor: default;\n user-select: none;\n\n position: absolute;\n z-index: calc(1000 - var(--toast-index));\n inset-inline: 0;\n\n box-sizing: border-box;\n width: 100%;\n height: var(--toast-collapsed-height);\n padding-block: 12px;\n padding-inline: 16px;\n padding-inline-end: 32px;\n border-radius: ${cssVar.borderRadiusLG};\n\n color: ${cssVar.colorText};\n\n background: ${cssVar.colorBgElevated};\n background-clip: padding-box;\n box-shadow:\n 0 0 0 1px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 1px 1px -0.5px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 3px 3px -1.5px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 6px 6px -3px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 12px 12px -6px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 24px 24px -12px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent);\n\n transition:\n transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),\n opacity 0.4s,\n height 0.15s;\n\n /* Fill gap between stacked toasts to prevent hover flicker */\n &::after {\n content: '';\n position: absolute;\n inset-inline: 0;\n height: calc(var(--toast-gap) + var(--toast-peek) + 8px);\n }\n\n &[data-limited] {\n opacity: 0;\n }\n\n &[data-swiping] {\n transition: none;\n }\n `,\n\n // Bottom positions - stack upward\n rootBottom: css`\n inset-block: auto 0;\n transform-origin: bottom center;\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) - (var(--toast-index) * var(--toast-peek)) -\n (var(--toast-shrink) * var(--toast-collapsed-height))\n )\n )\n scale(var(--toast-scale));\n\n &::after {\n inset-block-start: 100%;\n }\n\n &[data-expanded] {\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) + var(--toast-offset-y) * -1 + var(--toast-index) *\n var(--toast-gap) * -1\n )\n )\n scale(1);\n height: var(--toast-height);\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translateY(150%);\n opacity: 0;\n }\n `,\n\n // Top positions - stack downward\n rootTop: css`\n inset-block: 0 auto;\n transform-origin: top center;\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) + (var(--toast-index) * var(--toast-peek)) +\n (var(--toast-shrink) * var(--toast-collapsed-height))\n )\n )\n scale(var(--toast-scale));\n\n &::after {\n inset-block-end: 100%;\n }\n\n &[data-expanded] {\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) + var(--toast-offset-y) + var(--toast-index) *\n var(--toast-gap)\n )\n )\n scale(1);\n height: var(--toast-height);\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translateY(-150%);\n opacity: 0;\n }\n `,\n\n title: css`\n margin: 0;\n\n font-size: 14px;\n font-weight: 500;\n line-height: 1.5;\n color: ${cssVar.colorText};\n `,\n\n toastBody: css`\n display: flex;\n gap: 12px;\n align-items: flex-start;\n `,\n\n viewport: css`\n position: fixed;\n z-index: 1100;\n\n width: 360px;\n max-width: calc(100vw - 32px);\n\n outline: 0;\n\n @media (width <= 480px) {\n width: calc(100vw - 32px);\n }\n `,\n\n viewportBottom: css`\n inset-block-end: 16px;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n `,\n\n viewportBottomLeft: css`\n inset-block-end: 16px;\n inset-inline-start: 16px;\n `,\n\n viewportBottomRight: css`\n inset-block-end: 16px;\n inset-inline-end: 16px;\n `,\n\n viewportTop: css`\n inset-block-start: 16px;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n `,\n\n viewportTopLeft: css`\n inset-block-start: 16px;\n inset-inline-start: 16px;\n `,\n\n viewportTopRight: css`\n inset-block-start: 16px;\n inset-inline-end: 16px;\n `,\n}));\n\nexport const viewportVariants = cva(styles.viewport, {\n defaultVariants: {\n position: 'bottom-right',\n },\n variants: {\n position: {\n 'bottom': styles.viewportBottom,\n 'bottom-left': styles.viewportBottomLeft,\n 'bottom-right': styles.viewportBottomRight,\n 'top': styles.viewportTop,\n 'top-left': styles.viewportTopLeft,\n 'top-right': styles.viewportTopRight,\n },\n },\n});\n\nexport const rootVariants = cva(styles.root, {\n defaultVariants: {\n position: 'bottom-right',\n },\n variants: {\n position: {\n 'bottom': styles.rootBottom,\n 'bottom-left': styles.rootBottom,\n 'bottom-right': styles.rootBottom,\n 'top': styles.rootTop,\n 'top-left': styles.rootTop,\n 'top-right': styles.rootTop,\n },\n },\n});\n"],"mappings":";;;;AAGA,MAAa,SAAS,oBAAoB,EAAE,YAAK,wBAAc;CAC7D,QAAQ,KAAG;;;;;;;;;;;qBAWQA,SAAO,eAAe;;;;;aAK9BA,SAAO,oBAAoB;;kBAEtBA,SAAO,aAAa;;;;;oBAKlBA,SAAO,kBAAkB;;;;oBAIzBA,SAAO,mBAAmB;;;;2BAInBA,SAAO,mBAAmB;;;;CAKnD,OAAO,KAAG;;;;;;;;;;;;;;;qBAeSA,SAAO,eAAe;;aAE9BA,SAAO,kBAAkB;;;;;;;eAOvBA,SAAO,UAAU;oBACZA,SAAO,mBAAmB;;;CAI5C,SAAS,KAAG;;;;;;;;;;;;;;CAeZ,aAAa,KAAG;;;;aAILA,SAAO,mBAAmB;;CAGrC,MAAM,KAAG;;;;;;CAOT,MAAM,KAAG;;;;;;;;;;;;;;;;;;;;qBAoBUA,SAAO,eAAe;;aAE9BA,SAAO,UAAU;;kBAEZA,SAAO,gBAAgB;;;qCAGJA,SAAO,aAAa;4CACbA,SAAO,aAAa;4CACpBA,SAAO,aAAa;0CACtBA,SAAO,aAAa;4CAClBA,SAAO,aAAa;6CACnBA,SAAO,aAAa;;;;;;;;;;;;;;;;;;;;;;;CAyB/D,YAAY,KAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCf,SAAS,KAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCZ,OAAO,KAAG;;;;;;aAMCA,SAAO,UAAU;;CAG5B,WAAW,KAAG;;;;;CAMd,UAAU,KAAG;;;;;;;;;;;;;CAcb,gBAAgB,KAAG;;;;;CAMnB,oBAAoB,KAAG;;;;CAKvB,qBAAqB,KAAG;;;;CAKxB,aAAa,KAAG;;;;;CAMhB,iBAAiB,KAAG;;;;CAKpB,kBAAkB,KAAG;;;;CAItB,EAAE;AAEH,MAAa,mBAAmB,IAAI,OAAO,UAAU;CACnD,iBAAiB,EACf,UAAU,gBACX;CACD,UAAU,EACR,UAAU;EACR,UAAU,OAAO;EACjB,eAAe,OAAO;EACtB,gBAAgB,OAAO;EACvB,OAAO,OAAO;EACd,YAAY,OAAO;EACnB,aAAa,OAAO;EACrB,EACF;CACF,CAAC;AAEF,MAAa,eAAe,IAAI,OAAO,MAAM;CAC3C,iBAAiB,EACf,UAAU,gBACX;CACD,UAAU,EACR,UAAU;EACR,UAAU,OAAO;EACjB,eAAe,OAAO;EACtB,gBAAgB,OAAO;EACvB,OAAO,OAAO;EACd,YAAY,OAAO;EACnB,aAAa,OAAO;EACrB,EACF;CACF,CAAC"}
1
+ {"version":3,"file":"style.mjs","names":["cssVar"],"sources":["../../src/Toast/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n action: css`\n cursor: pointer;\n\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n height: 28px;\n padding-inline: 12px;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n font-size: 12px;\n font-weight: 500;\n line-height: 1;\n\n transition:\n background 0.2s,\n color 0.2s;\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: 1px;\n }\n `,\n\n actionDanger: css`\n color: ${cssVar.colorTextLightSolid};\n background: ${cssVar.colorError};\n\n &:hover {\n background: ${cssVar.colorErrorHover};\n }\n\n &:active {\n background: ${cssVar.colorErrorActive};\n }\n\n &:focus-visible {\n outline-color: ${cssVar.colorErrorBorder};\n }\n `,\n\n actionGhost: css`\n border: 1px solid ${cssVar.colorBorder};\n color: ${cssVar.colorText};\n background: transparent;\n\n &:hover {\n border-color: ${cssVar.colorPrimary};\n color: ${cssVar.colorPrimary};\n }\n\n &:active {\n border-color: ${cssVar.colorPrimaryActive};\n color: ${cssVar.colorPrimaryActive};\n }\n `,\n\n actionPrimary: css`\n color: ${cssVar.colorTextLightSolid};\n background: ${cssVar.colorPrimary};\n\n &:hover {\n background: ${cssVar.colorPrimaryHover};\n }\n\n &:active {\n background: ${cssVar.colorPrimaryActive};\n }\n `,\n\n actionSecondary: css`\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n &:active {\n background: ${cssVar.colorFill};\n }\n `,\n\n actionText: css`\n color: ${cssVar.colorPrimary};\n background: transparent;\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n &:active {\n background: ${cssVar.colorFillSecondary};\n }\n `,\n\n actions: css`\n display: flex;\n flex-grow: 1;\n flex-shrink: 0;\n gap: 8px;\n align-items: center;\n align-self: flex-end;\n justify-content: flex-end;\n\n margin-block-start: 8px;\n `,\n\n close: css`\n cursor: pointer;\n\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n width: 20px;\n height: 20px;\n margin-inline-start: auto;\n padding: 0;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n color: ${cssVar.colorTextTertiary};\n\n background: transparent;\n\n transition: all 0.2s;\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n }\n `,\n\n content: css`\n overflow: hidden;\n transition: opacity 0.2s;\n\n &[data-behind] {\n pointer-events: none;\n opacity: 0;\n }\n\n &[data-expanded] {\n pointer-events: auto;\n opacity: 1;\n }\n `,\n\n contentArea: css`\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n `,\n\n description: css`\n margin: 0;\n font-size: 13px;\n line-height: 1.5;\n color: ${cssVar.colorTextSecondary};\n `,\n\n icon: css`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n `,\n\n root: css`\n --toast-gap: 12px;\n --toast-peek: 12px;\n --toast-scale: calc(1 - var(--toast-index) * 0.05);\n --toast-shrink: calc(1 - var(--toast-scale));\n --toast-collapsed-height: var(--toast-frontmost-height, var(--toast-height));\n\n cursor: default;\n user-select: none;\n\n position: absolute;\n z-index: calc(1000 - var(--toast-index));\n inset-inline: 0;\n\n box-sizing: border-box;\n width: 100%;\n height: var(--toast-collapsed-height);\n padding-block: 12px;\n padding-inline: 16px;\n border-radius: ${cssVar.borderRadiusLG};\n\n color: ${cssVar.colorText};\n\n background: ${cssVar.colorBgElevated};\n background-clip: padding-box;\n box-shadow:\n 0 0 0 1px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 1px 1px -0.5px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 3px 3px -1.5px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 6px 6px -3px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 12px 12px -6px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent),\n 0 24px 24px -12px color-mix(in srgb, ${cssVar.colorBgSolid} 3%, transparent);\n\n transition:\n transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),\n opacity 0.4s,\n height 0.15s;\n\n /* Fill gap between stacked toasts to prevent hover flicker */\n &::after {\n content: '';\n position: absolute;\n inset-inline: 0;\n height: calc(var(--toast-gap) + var(--toast-peek) + 8px);\n }\n\n &[data-limited] {\n opacity: 0;\n }\n\n &[data-swiping] {\n transition: none;\n }\n `,\n\n // Bottom positions - stack upward\n rootBottom: css`\n inset-block: auto 0;\n transform-origin: bottom center;\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) - (var(--toast-index) * var(--toast-peek)) -\n (var(--toast-shrink) * var(--toast-collapsed-height))\n )\n )\n scale(var(--toast-scale));\n\n &::after {\n inset-block-start: 100%;\n }\n\n &[data-expanded] {\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) + var(--toast-offset-y) * -1 + var(--toast-index) *\n var(--toast-gap) * -1\n )\n )\n scale(1);\n height: var(--toast-height);\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translateY(150%);\n opacity: 0;\n }\n `,\n\n // Top positions - stack downward\n rootTop: css`\n inset-block: 0 auto;\n transform-origin: top center;\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) + (var(--toast-index) * var(--toast-peek)) +\n (var(--toast-shrink) * var(--toast-collapsed-height))\n )\n )\n scale(var(--toast-scale));\n\n &::after {\n inset-block-end: 100%;\n }\n\n &[data-expanded] {\n transform: translateX(var(--toast-swipe-movement-x))\n translateY(\n calc(\n var(--toast-swipe-movement-y) + var(--toast-offset-y) + var(--toast-index) *\n var(--toast-gap)\n )\n )\n scale(1);\n height: var(--toast-height);\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translateY(-150%);\n opacity: 0;\n }\n `,\n\n title: css`\n margin: 0;\n\n font-size: 14px;\n font-weight: 500;\n line-height: 1.5;\n color: ${cssVar.colorText};\n `,\n\n titleRow: css`\n display: flex;\n gap: 8px;\n align-items: center;\n `,\n\n toastBody: css`\n display: flex;\n gap: 12px;\n align-items: flex-start;\n `,\n\n viewport: css`\n position: fixed;\n z-index: 1100;\n\n width: 360px;\n max-width: calc(100vw - 32px);\n\n outline: 0;\n\n @media (width <= 480px) {\n width: calc(100vw - 32px);\n }\n `,\n\n viewportBottom: css`\n inset-block-end: 16px;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n `,\n\n viewportBottomLeft: css`\n inset-block-end: 16px;\n inset-inline-start: 16px;\n `,\n\n viewportBottomRight: css`\n inset-block-end: 16px;\n inset-inline-end: 16px;\n `,\n\n viewportTop: css`\n inset-block-start: 16px;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n `,\n\n viewportTopLeft: css`\n inset-block-start: 16px;\n inset-inline-start: 16px;\n `,\n\n viewportTopRight: css`\n inset-block-start: 16px;\n inset-inline-end: 16px;\n `,\n}));\n\nexport const viewportVariants = cva(styles.viewport, {\n defaultVariants: {\n position: 'bottom-right',\n },\n variants: {\n position: {\n 'bottom': styles.viewportBottom,\n 'bottom-left': styles.viewportBottomLeft,\n 'bottom-right': styles.viewportBottomRight,\n 'top': styles.viewportTop,\n 'top-left': styles.viewportTopLeft,\n 'top-right': styles.viewportTopRight,\n },\n },\n});\n\nexport const rootVariants = cva(styles.root, {\n defaultVariants: {\n position: 'bottom-right',\n },\n variants: {\n position: {\n 'bottom': styles.rootBottom,\n 'bottom-left': styles.rootBottom,\n 'bottom-right': styles.rootBottom,\n 'top': styles.rootTop,\n 'top-left': styles.rootTop,\n 'top-right': styles.rootTop,\n },\n },\n});\n\nexport const actionVariants = cva(styles.action, {\n defaultVariants: {\n variant: 'primary',\n },\n variants: {\n variant: {\n danger: styles.actionDanger,\n ghost: styles.actionGhost,\n primary: styles.actionPrimary,\n secondary: styles.actionSecondary,\n text: styles.actionText,\n },\n },\n});\n"],"mappings":";;;;AAGA,MAAa,SAAS,oBAAoB,EAAE,YAAK,wBAAc;CAC7D,QAAQ,KAAG;;;;;;;;;;;qBAWQA,SAAO,eAAe;;;;;;;;;;;2BAWhBA,SAAO,mBAAmB;;;;CAKnD,cAAc,KAAG;aACNA,SAAO,oBAAoB;kBACtBA,SAAO,WAAW;;;oBAGhBA,SAAO,gBAAgB;;;;oBAIvBA,SAAO,iBAAiB;;;;uBAIrBA,SAAO,iBAAiB;;;CAI7C,aAAa,KAAG;wBACMA,SAAO,YAAY;aAC9BA,SAAO,UAAU;;;;sBAIRA,SAAO,aAAa;eAC3BA,SAAO,aAAa;;;;sBAIbA,SAAO,mBAAmB;eACjCA,SAAO,mBAAmB;;;CAIvC,eAAe,KAAG;aACPA,SAAO,oBAAoB;kBACtBA,SAAO,aAAa;;;oBAGlBA,SAAO,kBAAkB;;;;oBAIzBA,SAAO,mBAAmB;;;CAI5C,iBAAiB,KAAG;aACTA,SAAO,UAAU;kBACZA,SAAO,mBAAmB;;;oBAGxBA,SAAO,kBAAkB;;;;oBAIzBA,SAAO,UAAU;;;CAInC,YAAY,KAAG;aACJA,SAAO,aAAa;;;;oBAIbA,SAAO,kBAAkB;;;;oBAIzBA,SAAO,mBAAmB;;;CAI5C,SAAS,KAAG;;;;;;;;;;;CAYZ,OAAO,KAAG;;;;;;;;;;;;;qBAaSA,SAAO,eAAe;;aAE9BA,SAAO,kBAAkB;;;;;;;eAOvBA,SAAO,UAAU;oBACZA,SAAO,mBAAmB;;;CAI5C,SAAS,KAAG;;;;;;;;;;;;;;CAeZ,aAAa,KAAG;;;;;;CAOhB,aAAa,KAAG;;;;aAILA,SAAO,mBAAmB;;CAGrC,MAAM,KAAG;;;;;;CAOT,MAAM,KAAG;;;;;;;;;;;;;;;;;;;qBAmBUA,SAAO,eAAe;;aAE9BA,SAAO,UAAU;;kBAEZA,SAAO,gBAAgB;;;qCAGJA,SAAO,aAAa;4CACbA,SAAO,aAAa;4CACpBA,SAAO,aAAa;0CACtBA,SAAO,aAAa;4CAClBA,SAAO,aAAa;6CACnBA,SAAO,aAAa;;;;;;;;;;;;;;;;;;;;;;;CAyB/D,YAAY,KAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCf,SAAS,KAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCZ,OAAO,KAAG;;;;;;aAMCA,SAAO,UAAU;;CAG5B,UAAU,KAAG;;;;;CAMb,WAAW,KAAG;;;;;CAMd,UAAU,KAAG;;;;;;;;;;;;;CAcb,gBAAgB,KAAG;;;;;CAMnB,oBAAoB,KAAG;;;;CAKvB,qBAAqB,KAAG;;;;CAKxB,aAAa,KAAG;;;;;CAMhB,iBAAiB,KAAG;;;;CAKpB,kBAAkB,KAAG;;;;CAItB,EAAE;AAEH,MAAa,mBAAmB,IAAI,OAAO,UAAU;CACnD,iBAAiB,EACf,UAAU,gBACX;CACD,UAAU,EACR,UAAU;EACR,UAAU,OAAO;EACjB,eAAe,OAAO;EACtB,gBAAgB,OAAO;EACvB,OAAO,OAAO;EACd,YAAY,OAAO;EACnB,aAAa,OAAO;EACrB,EACF;CACF,CAAC;AAEF,MAAa,eAAe,IAAI,OAAO,MAAM;CAC3C,iBAAiB,EACf,UAAU,gBACX;CACD,UAAU,EACR,UAAU;EACR,UAAU,OAAO;EACjB,eAAe,OAAO;EACtB,gBAAgB,OAAO;EACvB,OAAO,OAAO;EACd,YAAY,OAAO;EACnB,aAAa,OAAO;EACrB,EACF;CACF,CAAC;AAEF,MAAa,iBAAiB,IAAI,OAAO,QAAQ;CAC/C,iBAAiB,EACf,SAAS,WACV;CACD,UAAU,EACR,SAAS;EACP,QAAQ,OAAO;EACf,OAAO,OAAO;EACd,SAAS,OAAO;EAChB,WAAW,OAAO;EAClB,MAAM,OAAO;EACd,EACF;CACF,CAAC"}