@tamagui/v2-toast 2.0.0-1769464493958

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 (307) hide show
  1. package/dist/cjs/Toast.cjs +170 -0
  2. package/dist/cjs/Toast.js +119 -0
  3. package/dist/cjs/Toast.js.map +6 -0
  4. package/dist/cjs/Toast.native.js +174 -0
  5. package/dist/cjs/Toast.native.js.map +1 -0
  6. package/dist/cjs/ToastAnnounce.cjs +97 -0
  7. package/dist/cjs/ToastAnnounce.js +72 -0
  8. package/dist/cjs/ToastAnnounce.js.map +6 -0
  9. package/dist/cjs/ToastAnnounce.native.js +105 -0
  10. package/dist/cjs/ToastAnnounce.native.js.map +1 -0
  11. package/dist/cjs/ToastImperative.cjs +100 -0
  12. package/dist/cjs/ToastImperative.js +71 -0
  13. package/dist/cjs/ToastImperative.js.map +6 -0
  14. package/dist/cjs/ToastImperative.native.js +122 -0
  15. package/dist/cjs/ToastImperative.native.js.map +1 -0
  16. package/dist/cjs/ToastImpl.cjs +292 -0
  17. package/dist/cjs/ToastImpl.js +227 -0
  18. package/dist/cjs/ToastImpl.js.map +6 -0
  19. package/dist/cjs/ToastImpl.native.js +327 -0
  20. package/dist/cjs/ToastImpl.native.js.map +1 -0
  21. package/dist/cjs/ToastItem.cjs +466 -0
  22. package/dist/cjs/ToastItem.js +356 -0
  23. package/dist/cjs/ToastItem.js.map +6 -0
  24. package/dist/cjs/ToastItem.native.js +547 -0
  25. package/dist/cjs/ToastItem.native.js.map +1 -0
  26. package/dist/cjs/ToastPortal.cjs +44 -0
  27. package/dist/cjs/ToastPortal.js +26 -0
  28. package/dist/cjs/ToastPortal.js.map +6 -0
  29. package/dist/cjs/ToastPortal.native.js +47 -0
  30. package/dist/cjs/ToastPortal.native.js.map +1 -0
  31. package/dist/cjs/ToastProvider.cjs +146 -0
  32. package/dist/cjs/ToastProvider.js +105 -0
  33. package/dist/cjs/ToastProvider.js.map +6 -0
  34. package/dist/cjs/ToastProvider.native.js +159 -0
  35. package/dist/cjs/ToastProvider.native.js.map +1 -0
  36. package/dist/cjs/ToastState.cjs +248 -0
  37. package/dist/cjs/ToastState.js +160 -0
  38. package/dist/cjs/ToastState.js.map +6 -0
  39. package/dist/cjs/ToastState.native.js +257 -0
  40. package/dist/cjs/ToastState.native.js.map +1 -0
  41. package/dist/cjs/ToastViewport.cjs +278 -0
  42. package/dist/cjs/ToastViewport.js +263 -0
  43. package/dist/cjs/ToastViewport.js.map +6 -0
  44. package/dist/cjs/ToastViewport.native.js +316 -0
  45. package/dist/cjs/ToastViewport.native.js.map +1 -0
  46. package/dist/cjs/Toaster.cjs +219 -0
  47. package/dist/cjs/Toaster.js +177 -0
  48. package/dist/cjs/Toaster.js.map +6 -0
  49. package/dist/cjs/Toaster.native.js +279 -0
  50. package/dist/cjs/Toaster.native.js.map +1 -0
  51. package/dist/cjs/constants.cjs +28 -0
  52. package/dist/cjs/constants.js +22 -0
  53. package/dist/cjs/constants.js.map +6 -0
  54. package/dist/cjs/constants.native.js +31 -0
  55. package/dist/cjs/constants.native.js.map +1 -0
  56. package/dist/cjs/createNativeToast.cjs +51 -0
  57. package/dist/cjs/createNativeToast.js +44 -0
  58. package/dist/cjs/createNativeToast.js.map +6 -0
  59. package/dist/cjs/createNativeToast.native.js +47 -0
  60. package/dist/cjs/createNativeToast.native.js.map +1 -0
  61. package/dist/cjs/index.cjs +28 -0
  62. package/dist/cjs/index.js +22 -0
  63. package/dist/cjs/index.js.map +6 -0
  64. package/dist/cjs/index.native.js +31 -0
  65. package/dist/cjs/index.native.js.map +1 -0
  66. package/dist/cjs/types.cjs +16 -0
  67. package/dist/cjs/types.js +14 -0
  68. package/dist/cjs/types.js.map +6 -0
  69. package/dist/cjs/types.native.js +19 -0
  70. package/dist/cjs/types.native.js.map +1 -0
  71. package/dist/cjs/useDragGesture.cjs +129 -0
  72. package/dist/cjs/useDragGesture.js +100 -0
  73. package/dist/cjs/useDragGesture.js.map +6 -0
  74. package/dist/cjs/useDragGesture.native.js +146 -0
  75. package/dist/cjs/useDragGesture.native.js.map +1 -0
  76. package/dist/esm/Toast.js +107 -0
  77. package/dist/esm/Toast.js.map +6 -0
  78. package/dist/esm/Toast.mjs +131 -0
  79. package/dist/esm/Toast.mjs.map +1 -0
  80. package/dist/esm/Toast.native.js +132 -0
  81. package/dist/esm/Toast.native.js.map +1 -0
  82. package/dist/esm/ToastAnnounce.js +55 -0
  83. package/dist/esm/ToastAnnounce.js.map +6 -0
  84. package/dist/esm/ToastAnnounce.mjs +62 -0
  85. package/dist/esm/ToastAnnounce.mjs.map +1 -0
  86. package/dist/esm/ToastAnnounce.native.js +67 -0
  87. package/dist/esm/ToastAnnounce.native.js.map +1 -0
  88. package/dist/esm/ToastImperative.js +50 -0
  89. package/dist/esm/ToastImperative.js.map +6 -0
  90. package/dist/esm/ToastImperative.mjs +63 -0
  91. package/dist/esm/ToastImperative.mjs.map +1 -0
  92. package/dist/esm/ToastImperative.native.js +82 -0
  93. package/dist/esm/ToastImperative.native.js.map +1 -0
  94. package/dist/esm/ToastImpl.js +225 -0
  95. package/dist/esm/ToastImpl.js.map +6 -0
  96. package/dist/esm/ToastImpl.mjs +256 -0
  97. package/dist/esm/ToastImpl.mjs.map +1 -0
  98. package/dist/esm/ToastImpl.native.js +288 -0
  99. package/dist/esm/ToastImpl.native.js.map +1 -0
  100. package/dist/esm/ToastItem.js +339 -0
  101. package/dist/esm/ToastItem.js.map +6 -0
  102. package/dist/esm/ToastItem.mjs +432 -0
  103. package/dist/esm/ToastItem.mjs.map +1 -0
  104. package/dist/esm/ToastItem.native.js +510 -0
  105. package/dist/esm/ToastItem.native.js.map +1 -0
  106. package/dist/esm/ToastPortal.js +13 -0
  107. package/dist/esm/ToastPortal.js.map +6 -0
  108. package/dist/esm/ToastPortal.mjs +21 -0
  109. package/dist/esm/ToastPortal.mjs.map +1 -0
  110. package/dist/esm/ToastPortal.native.js +21 -0
  111. package/dist/esm/ToastPortal.native.js.map +1 -0
  112. package/dist/esm/ToastProvider.js +87 -0
  113. package/dist/esm/ToastProvider.js.map +6 -0
  114. package/dist/esm/ToastProvider.mjs +108 -0
  115. package/dist/esm/ToastProvider.mjs.map +1 -0
  116. package/dist/esm/ToastProvider.native.js +118 -0
  117. package/dist/esm/ToastProvider.native.js.map +1 -0
  118. package/dist/esm/ToastState.js +144 -0
  119. package/dist/esm/ToastState.js.map +6 -0
  120. package/dist/esm/ToastState.mjs +224 -0
  121. package/dist/esm/ToastState.mjs.map +1 -0
  122. package/dist/esm/ToastState.native.js +230 -0
  123. package/dist/esm/ToastState.native.js.map +1 -0
  124. package/dist/esm/ToastViewport.js +250 -0
  125. package/dist/esm/ToastViewport.js.map +6 -0
  126. package/dist/esm/ToastViewport.mjs +241 -0
  127. package/dist/esm/ToastViewport.mjs.map +1 -0
  128. package/dist/esm/ToastViewport.native.js +276 -0
  129. package/dist/esm/ToastViewport.native.js.map +1 -0
  130. package/dist/esm/Toaster.js +160 -0
  131. package/dist/esm/Toaster.js.map +6 -0
  132. package/dist/esm/Toaster.mjs +185 -0
  133. package/dist/esm/Toaster.mjs.map +1 -0
  134. package/dist/esm/Toaster.native.js +242 -0
  135. package/dist/esm/Toaster.native.js.map +1 -0
  136. package/dist/esm/constants.js +6 -0
  137. package/dist/esm/constants.js.map +6 -0
  138. package/dist/esm/constants.mjs +4 -0
  139. package/dist/esm/constants.mjs.map +1 -0
  140. package/dist/esm/constants.native.js +4 -0
  141. package/dist/esm/constants.native.js.map +1 -0
  142. package/dist/esm/createNativeToast.js +28 -0
  143. package/dist/esm/createNativeToast.js.map +6 -0
  144. package/dist/esm/createNativeToast.mjs +27 -0
  145. package/dist/esm/createNativeToast.mjs.map +1 -0
  146. package/dist/esm/createNativeToast.native.js +20 -0
  147. package/dist/esm/createNativeToast.native.js.map +1 -0
  148. package/dist/esm/index.js +7 -0
  149. package/dist/esm/index.js.map +6 -0
  150. package/dist/esm/index.mjs +4 -0
  151. package/dist/esm/index.mjs.map +1 -0
  152. package/dist/esm/index.native.js +4 -0
  153. package/dist/esm/index.native.js.map +1 -0
  154. package/dist/esm/types.js +1 -0
  155. package/dist/esm/types.js.map +6 -0
  156. package/dist/esm/types.mjs +2 -0
  157. package/dist/esm/types.mjs.map +1 -0
  158. package/dist/esm/types.native.js +2 -0
  159. package/dist/esm/types.native.js.map +1 -0
  160. package/dist/esm/useDragGesture.js +76 -0
  161. package/dist/esm/useDragGesture.js.map +6 -0
  162. package/dist/esm/useDragGesture.mjs +95 -0
  163. package/dist/esm/useDragGesture.mjs.map +1 -0
  164. package/dist/esm/useDragGesture.native.js +109 -0
  165. package/dist/esm/useDragGesture.native.js.map +1 -0
  166. package/dist/jsx/Toast.js +107 -0
  167. package/dist/jsx/Toast.js.map +6 -0
  168. package/dist/jsx/Toast.mjs +131 -0
  169. package/dist/jsx/Toast.mjs.map +1 -0
  170. package/dist/jsx/Toast.native.js +174 -0
  171. package/dist/jsx/Toast.native.js.map +1 -0
  172. package/dist/jsx/ToastAnnounce.js +55 -0
  173. package/dist/jsx/ToastAnnounce.js.map +6 -0
  174. package/dist/jsx/ToastAnnounce.mjs +62 -0
  175. package/dist/jsx/ToastAnnounce.mjs.map +1 -0
  176. package/dist/jsx/ToastAnnounce.native.js +105 -0
  177. package/dist/jsx/ToastAnnounce.native.js.map +1 -0
  178. package/dist/jsx/ToastImperative.js +50 -0
  179. package/dist/jsx/ToastImperative.js.map +6 -0
  180. package/dist/jsx/ToastImperative.mjs +63 -0
  181. package/dist/jsx/ToastImperative.mjs.map +1 -0
  182. package/dist/jsx/ToastImperative.native.js +122 -0
  183. package/dist/jsx/ToastImperative.native.js.map +1 -0
  184. package/dist/jsx/ToastImpl.js +225 -0
  185. package/dist/jsx/ToastImpl.js.map +6 -0
  186. package/dist/jsx/ToastImpl.mjs +256 -0
  187. package/dist/jsx/ToastImpl.mjs.map +1 -0
  188. package/dist/jsx/ToastImpl.native.js +327 -0
  189. package/dist/jsx/ToastImpl.native.js.map +1 -0
  190. package/dist/jsx/ToastItem.js +339 -0
  191. package/dist/jsx/ToastItem.js.map +6 -0
  192. package/dist/jsx/ToastItem.mjs +432 -0
  193. package/dist/jsx/ToastItem.mjs.map +1 -0
  194. package/dist/jsx/ToastItem.native.js +547 -0
  195. package/dist/jsx/ToastItem.native.js.map +1 -0
  196. package/dist/jsx/ToastPortal.js +13 -0
  197. package/dist/jsx/ToastPortal.js.map +6 -0
  198. package/dist/jsx/ToastPortal.mjs +21 -0
  199. package/dist/jsx/ToastPortal.mjs.map +1 -0
  200. package/dist/jsx/ToastPortal.native.js +47 -0
  201. package/dist/jsx/ToastPortal.native.js.map +1 -0
  202. package/dist/jsx/ToastProvider.js +87 -0
  203. package/dist/jsx/ToastProvider.js.map +6 -0
  204. package/dist/jsx/ToastProvider.mjs +108 -0
  205. package/dist/jsx/ToastProvider.mjs.map +1 -0
  206. package/dist/jsx/ToastProvider.native.js +159 -0
  207. package/dist/jsx/ToastProvider.native.js.map +1 -0
  208. package/dist/jsx/ToastState.js +144 -0
  209. package/dist/jsx/ToastState.js.map +6 -0
  210. package/dist/jsx/ToastState.mjs +224 -0
  211. package/dist/jsx/ToastState.mjs.map +1 -0
  212. package/dist/jsx/ToastState.native.js +257 -0
  213. package/dist/jsx/ToastState.native.js.map +1 -0
  214. package/dist/jsx/ToastViewport.js +250 -0
  215. package/dist/jsx/ToastViewport.js.map +6 -0
  216. package/dist/jsx/ToastViewport.mjs +241 -0
  217. package/dist/jsx/ToastViewport.mjs.map +1 -0
  218. package/dist/jsx/ToastViewport.native.js +316 -0
  219. package/dist/jsx/ToastViewport.native.js.map +1 -0
  220. package/dist/jsx/Toaster.js +160 -0
  221. package/dist/jsx/Toaster.js.map +6 -0
  222. package/dist/jsx/Toaster.mjs +185 -0
  223. package/dist/jsx/Toaster.mjs.map +1 -0
  224. package/dist/jsx/Toaster.native.js +279 -0
  225. package/dist/jsx/Toaster.native.js.map +1 -0
  226. package/dist/jsx/constants.js +6 -0
  227. package/dist/jsx/constants.js.map +6 -0
  228. package/dist/jsx/constants.mjs +4 -0
  229. package/dist/jsx/constants.mjs.map +1 -0
  230. package/dist/jsx/constants.native.js +31 -0
  231. package/dist/jsx/constants.native.js.map +1 -0
  232. package/dist/jsx/createNativeToast.js +28 -0
  233. package/dist/jsx/createNativeToast.js.map +6 -0
  234. package/dist/jsx/createNativeToast.mjs +27 -0
  235. package/dist/jsx/createNativeToast.mjs.map +1 -0
  236. package/dist/jsx/createNativeToast.native.js +47 -0
  237. package/dist/jsx/createNativeToast.native.js.map +1 -0
  238. package/dist/jsx/index.js +7 -0
  239. package/dist/jsx/index.js.map +6 -0
  240. package/dist/jsx/index.mjs +4 -0
  241. package/dist/jsx/index.mjs.map +1 -0
  242. package/dist/jsx/index.native.js +31 -0
  243. package/dist/jsx/index.native.js.map +1 -0
  244. package/dist/jsx/types.js +1 -0
  245. package/dist/jsx/types.js.map +6 -0
  246. package/dist/jsx/types.mjs +2 -0
  247. package/dist/jsx/types.mjs.map +1 -0
  248. package/dist/jsx/types.native.js +19 -0
  249. package/dist/jsx/types.native.js.map +1 -0
  250. package/dist/jsx/useDragGesture.js +76 -0
  251. package/dist/jsx/useDragGesture.js.map +6 -0
  252. package/dist/jsx/useDragGesture.mjs +95 -0
  253. package/dist/jsx/useDragGesture.mjs.map +1 -0
  254. package/dist/jsx/useDragGesture.native.js +146 -0
  255. package/dist/jsx/useDragGesture.native.js.map +1 -0
  256. package/package.json +77 -0
  257. package/src/Toast.tsx +219 -0
  258. package/src/ToastAnnounce.tsx +102 -0
  259. package/src/ToastImperative.tsx +190 -0
  260. package/src/ToastImpl.tsx +503 -0
  261. package/src/ToastItem.tsx +694 -0
  262. package/src/ToastPortal.tsx +19 -0
  263. package/src/ToastProvider.tsx +197 -0
  264. package/src/ToastState.ts +397 -0
  265. package/src/ToastViewport.tsx +430 -0
  266. package/src/Toaster.tsx +445 -0
  267. package/src/constants.ts +2 -0
  268. package/src/createNativeToast.native.tsx +22 -0
  269. package/src/createNativeToast.tsx +48 -0
  270. package/src/index.ts +17 -0
  271. package/src/types.ts +71 -0
  272. package/src/useDragGesture.native.ts +199 -0
  273. package/src/useDragGesture.ts +218 -0
  274. package/types/Toast.d.ts +84 -0
  275. package/types/Toast.d.ts.map +1 -0
  276. package/types/ToastAnnounce.d.ts +18 -0
  277. package/types/ToastAnnounce.d.ts.map +1 -0
  278. package/types/ToastImperative.d.ts +95 -0
  279. package/types/ToastImperative.d.ts.map +1 -0
  280. package/types/ToastImpl.d.ts +109 -0
  281. package/types/ToastImpl.d.ts.map +1 -0
  282. package/types/ToastItem.d.ts +34 -0
  283. package/types/ToastItem.d.ts.map +1 -0
  284. package/types/ToastPortal.d.ts +8 -0
  285. package/types/ToastPortal.d.ts.map +1 -0
  286. package/types/ToastProvider.d.ts +92 -0
  287. package/types/ToastProvider.d.ts.map +1 -0
  288. package/types/ToastState.d.ts +177 -0
  289. package/types/ToastState.d.ts.map +1 -0
  290. package/types/ToastViewport.d.ts +75 -0
  291. package/types/ToastViewport.d.ts.map +1 -0
  292. package/types/Toaster.d.ts +120 -0
  293. package/types/Toaster.d.ts.map +1 -0
  294. package/types/constants.d.ts +3 -0
  295. package/types/constants.d.ts.map +1 -0
  296. package/types/createNativeToast.d.ts +4 -0
  297. package/types/createNativeToast.d.ts.map +1 -0
  298. package/types/createNativeToast.native.d.ts +4 -0
  299. package/types/createNativeToast.native.d.ts.map +1 -0
  300. package/types/index.d.ts +7 -0
  301. package/types/index.d.ts.map +1 -0
  302. package/types/types.d.ts +61 -0
  303. package/types/types.d.ts.map +1 -0
  304. package/types/useDragGesture.d.ts +32 -0
  305. package/types/useDragGesture.d.ts.map +1 -0
  306. package/types/useDragGesture.native.d.ts +26 -0
  307. package/types/useDragGesture.native.d.ts.map +1 -0
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf,
8
+ __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: !0
13
+ });
14
+ },
15
+ __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
17
+ get: () => from[key],
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: !0
30
+ }) : target, mod)),
31
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: !0
33
+ }), mod);
34
+ var ToastViewport_exports = {};
35
+ __export(ToastViewport_exports, {
36
+ ToastViewport: () => ToastViewport,
37
+ VIEWPORT_DEFAULT_HOTKEY: () => VIEWPORT_DEFAULT_HOTKEY,
38
+ VIEWPORT_PAUSE: () => VIEWPORT_PAUSE,
39
+ VIEWPORT_RESUME: () => VIEWPORT_RESUME
40
+ });
41
+ module.exports = __toCommonJS(ToastViewport_exports);
42
+ var import_jsx_runtime = require("react/jsx-runtime"),
43
+ import_animate_presence = require("@tamagui/animate-presence"),
44
+ import_compose_refs = require("@tamagui/compose-refs"),
45
+ import_constants = require("@tamagui/constants"),
46
+ import_core = require("@tamagui/core"),
47
+ import_portal = require("@tamagui/portal"),
48
+ import_stacks = require("@tamagui/stacks"),
49
+ import_visually_hidden = require("@tamagui/visually-hidden"),
50
+ React = __toESM(require("react"), 1),
51
+ import_constants2 = require("./constants.native.js"),
52
+ import_ToastPortal = require("./ToastPortal.native.js"),
53
+ import_ToastProvider = require("./ToastProvider.native.js"),
54
+ VIEWPORT_NAME = "ToastViewport",
55
+ VIEWPORT_DEFAULT_HOTKEY = ["F8"],
56
+ VIEWPORT_PAUSE = "toast.viewportPause",
57
+ VIEWPORT_RESUME = "toast.viewportResume",
58
+ ToastViewportWrapperFrame = (0, import_core.styled)(import_stacks.YStack, {
59
+ name: "ViewportWrapper",
60
+ variants: {
61
+ unstyled: {
62
+ false: {
63
+ pointerEvents: "box-none",
64
+ top: 0,
65
+ bottom: 0,
66
+ left: 0,
67
+ right: 0,
68
+ position: import_constants.isWeb ? "fixed" : "absolute",
69
+ maxWidth: "100%",
70
+ tabIndex: 0,
71
+ zIndex: 1e5
72
+ }
73
+ }
74
+ },
75
+ defaultVariants: {
76
+ unstyled: process.env.TAMAGUI_HEADLESS === "1"
77
+ }
78
+ }),
79
+ ToastViewportFrame = (0, import_core.styled)(import_stacks.YStack, {
80
+ name: VIEWPORT_NAME,
81
+ variants: {
82
+ unstyled: {
83
+ false: {
84
+ pointerEvents: "box-none",
85
+ position: import_constants.isWeb ? "fixed" : "absolute",
86
+ maxWidth: "100%"
87
+ }
88
+ }
89
+ },
90
+ defaultVariants: {
91
+ unstyled: process.env.TAMAGUI_HEADLESS === "1"
92
+ }
93
+ }),
94
+ ToastViewport = /* @__PURE__ */React.memo(/* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
95
+ var {
96
+ scope,
97
+ hotkey = VIEWPORT_DEFAULT_HOTKEY,
98
+ label = "Notifications ({hotkey})",
99
+ name = "default",
100
+ multipleToasts,
101
+ zIndex,
102
+ portalToRoot,
103
+ ...viewportProps
104
+ } = props,
105
+ context = (0, import_ToastProvider.useToastProviderContext)(scope),
106
+ getItems = (0, import_ToastProvider.useCollection)(scope || import_constants2.TOAST_CONTEXT),
107
+ headFocusProxyRef = React.useRef(null),
108
+ tailFocusProxyRef = React.useRef(null),
109
+ wrapperRef = React.useRef(null),
110
+ ref = React.useRef(null),
111
+ onViewportChange = React.useCallback(function (el) {
112
+ context.viewports[name] !== el && context.onViewportChange(name, el);
113
+ }, [name, context.viewports]),
114
+ composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, ref, onViewportChange),
115
+ hotkeyLabel = hotkey.join("+").replace(/Key/g, "").replace(/Digit/g, ""),
116
+ hasToasts = context.toastCount > 0;
117
+ React.useEffect(function () {
118
+ if (import_constants.isWeb && context.toastCount !== 0) {
119
+ var handleKeyDown = function (event) {
120
+ var _ref_current,
121
+ isHotkeyPressed = hotkey.every(function (key) {
122
+ return event[key] || event.code === key;
123
+ });
124
+ isHotkeyPressed && ((_ref_current = ref.current) === null || _ref_current === void 0 || _ref_current.focus());
125
+ };
126
+ return document.addEventListener("keydown", handleKeyDown), function () {
127
+ document.removeEventListener("keydown", handleKeyDown);
128
+ };
129
+ }
130
+ }, [hotkey, context.toastCount]), React.useEffect(function () {
131
+ if (import_constants.isWeb && context.toastCount !== 0) {
132
+ var wrapper = wrapperRef.current,
133
+ viewport = ref.current;
134
+ if (hasToasts && wrapper && viewport) {
135
+ var handlePause = function () {
136
+ if (!context.isClosePausedRef.current) {
137
+ var pauseEvent = new CustomEvent(VIEWPORT_PAUSE);
138
+ viewport.dispatchEvent(pauseEvent), context.isClosePausedRef.current = !0;
139
+ }
140
+ },
141
+ handleResume = function () {
142
+ if (context.isClosePausedRef.current) {
143
+ var resumeEvent = new CustomEvent(VIEWPORT_RESUME);
144
+ viewport.dispatchEvent(resumeEvent), context.isClosePausedRef.current = !1;
145
+ }
146
+ },
147
+ handleFocusOutResume = function (event) {
148
+ var isFocusMovingOutside = !wrapper.contains(event.relatedTarget);
149
+ isFocusMovingOutside && handleResume();
150
+ },
151
+ handlePointerLeaveResume = function () {
152
+ var isFocusInside = wrapper.contains(document.activeElement);
153
+ isFocusInside || handleResume();
154
+ };
155
+ return wrapper.addEventListener("focusin", handlePause), wrapper.addEventListener("focusout", handleFocusOutResume), wrapper.addEventListener("pointermove", handlePause), wrapper.addEventListener("pointerleave", handlePointerLeaveResume), window.addEventListener("blur", handlePause), window.addEventListener("focus", handleResume), function () {
156
+ wrapper.removeEventListener("focusin", handlePause), wrapper.removeEventListener("focusout", handleFocusOutResume), wrapper.removeEventListener("pointermove", handlePause), wrapper.removeEventListener("pointerleave", handlePointerLeaveResume), window.removeEventListener("blur", handlePause), window.removeEventListener("focus", handleResume);
157
+ };
158
+ }
159
+ }
160
+ }, [hasToasts, context.isClosePausedRef, context.toastCount]);
161
+ var getSortedTabbableCandidates = React.useCallback(function (param) {
162
+ var {
163
+ tabbingDirection
164
+ } = param,
165
+ toastItems = getItems(),
166
+ tabbableCandidates = toastItems.map(function (toastItem) {
167
+ var toastNode = toastItem.ref.current,
168
+ toastTabbableCandidates = [toastNode, ...getTabbableCandidates(toastNode)];
169
+ return tabbingDirection === "forwards" ? toastTabbableCandidates : toastTabbableCandidates.reverse();
170
+ });
171
+ return (tabbingDirection === "forwards" ? tabbableCandidates.reverse() : tabbableCandidates).flat();
172
+ }, [getItems]);
173
+ React.useEffect(function () {
174
+ if (import_constants.isWeb && context.toastCount !== 0) {
175
+ var viewport = ref.current;
176
+ if (viewport) {
177
+ var handleKeyDown = function (event) {
178
+ var isMetaKey = event.altKey || event.ctrlKey || event.metaKey,
179
+ isTabKey = event.key === "Tab" && !isMetaKey;
180
+ if (isTabKey) {
181
+ var focusedElement = document.activeElement,
182
+ isTabbingBackwards = event.shiftKey,
183
+ targetIsViewport = event.target === viewport;
184
+ if (targetIsViewport && isTabbingBackwards) {
185
+ var _headFocusProxyRef_current;
186
+ (_headFocusProxyRef_current = headFocusProxyRef.current) === null || _headFocusProxyRef_current === void 0 || _headFocusProxyRef_current.focus();
187
+ return;
188
+ }
189
+ var tabbingDirection = isTabbingBackwards ? "backwards" : "forwards",
190
+ sortedCandidates = getSortedTabbableCandidates({
191
+ tabbingDirection
192
+ }),
193
+ index = sortedCandidates.findIndex(function (candidate) {
194
+ return candidate === focusedElement;
195
+ });
196
+ if (focusFirst(sortedCandidates.slice(index + 1))) event.preventDefault();else {
197
+ var _headFocusProxyRef_current1, _tailFocusProxyRef_current;
198
+ isTabbingBackwards ? (_headFocusProxyRef_current1 = headFocusProxyRef.current) === null || _headFocusProxyRef_current1 === void 0 || _headFocusProxyRef_current1.focus() : (_tailFocusProxyRef_current = tailFocusProxyRef.current) === null || _tailFocusProxyRef_current === void 0 || _tailFocusProxyRef_current.focus();
199
+ }
200
+ }
201
+ };
202
+ return viewport.addEventListener("keydown", handleKeyDown), function () {
203
+ return viewport.removeEventListener("keydown", handleKeyDown);
204
+ };
205
+ }
206
+ }
207
+ }, [getItems, getSortedTabbableCandidates, context.toastCount]);
208
+ var contents = /* @__PURE__ */(0, import_jsx_runtime.jsxs)(ToastViewportWrapperFrame, {
209
+ ref: wrapperRef,
210
+ // biome-ignore lint/a11y/useSemanticElements: <explanation>
211
+ role: "region",
212
+ "aria-label": label.replace("{hotkey}", hotkeyLabel),
213
+ // // Ensure virtual cursor from landmarks menus triggers focus/blur for pause/resume
214
+ tabIndex: -1,
215
+ children: [
216
+ // // incase list has size when empty (e.g. padding), we remove pointer events so
217
+ // // it doesn't prevent interactions with page elements that it overlays
218
+ // pointerEvents={hasToasts ? undefined : 'none'}
219
+ hasToasts && /* @__PURE__ */(0, import_jsx_runtime.jsx)(FocusProxy, {
220
+ context,
221
+ viewportName: name,
222
+ ref: headFocusProxyRef,
223
+ onFocusFromOutsideViewport: function () {
224
+ var tabbableCandidates = getSortedTabbableCandidates({
225
+ tabbingDirection: "forwards"
226
+ });
227
+ focusFirst(tabbableCandidates);
228
+ }
229
+ }),
230
+ /**
231
+ * tabindex on the the list so that it can be focused when items are removed. we focus
232
+ * the list instead of the viewport so it announces number of items remaining.
233
+ */
234
+ /* @__PURE__ */
235
+ (0, import_jsx_runtime.jsx)(import_ToastProvider.Collection.Slot, {
236
+ scope: context.toastScope,
237
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToastViewportFrame, {
238
+ focusable: context.toastCount > 0,
239
+ ref: composedRefs,
240
+ ...viewportProps,
241
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_portal.PortalHost, {
242
+ render: function (children) {
243
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_animate_presence.AnimatePresence, {
244
+ exitBeforeEnter: !multipleToasts,
245
+ children
246
+ });
247
+ },
248
+ name: name ?? "default"
249
+ })
250
+ })
251
+ }), hasToasts && /* @__PURE__ */(0, import_jsx_runtime.jsx)(FocusProxy, {
252
+ context,
253
+ viewportName: name,
254
+ ref: tailFocusProxyRef,
255
+ onFocusFromOutsideViewport: function () {
256
+ var tabbableCandidates = getSortedTabbableCandidates({
257
+ tabbingDirection: "backwards"
258
+ });
259
+ focusFirst(tabbableCandidates);
260
+ }
261
+ })]
262
+ });
263
+ return portalToRoot ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_ToastPortal.ToastPortal, {
264
+ context,
265
+ ...(typeof zIndex == "number" ? {
266
+ zIndex
267
+ } : {}),
268
+ children: contents
269
+ }) : contents;
270
+ }));
271
+ ToastViewport.displayName = VIEWPORT_NAME;
272
+ var FOCUS_PROXY_NAME = "ToastFocusProxy",
273
+ FocusProxy = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
274
+ var {
275
+ onFocusFromOutsideViewport,
276
+ viewportName,
277
+ context,
278
+ ...proxyProps
279
+ } = props,
280
+ viewport = context.viewports[viewportName];
281
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_visually_hidden.VisuallyHidden, {
282
+ "aria-hidden": !0,
283
+ tabIndex: 0,
284
+ ...proxyProps,
285
+ ref: forwardedRef,
286
+ // Avoid page scrolling when focus is on the focus proxy
287
+ position: import_constants.isWeb ? "fixed" : "absolute",
288
+ onFocus: function (event) {
289
+ if (import_constants.isWeb) {
290
+ var prevFocusedElement = event.relatedTarget,
291
+ isFocusFromOutsideViewport = !viewport?.contains(prevFocusedElement);
292
+ isFocusFromOutsideViewport && onFocusFromOutsideViewport();
293
+ }
294
+ }
295
+ });
296
+ });
297
+ FocusProxy.displayName = FOCUS_PROXY_NAME;
298
+ function focusFirst(candidates) {
299
+ if (import_constants.isWeb) {
300
+ var previouslyFocusedElement = document.activeElement;
301
+ return candidates.some(function (candidate) {
302
+ return candidate === previouslyFocusedElement ? !0 : (candidate.focus(), document.activeElement !== previouslyFocusedElement);
303
+ });
304
+ }
305
+ }
306
+ function getTabbableCandidates(container) {
307
+ if (!import_constants.isWeb) return [];
308
+ for (var containerHtml = container, nodes = [], walker = document.createTreeWalker(containerHtml, NodeFilter.SHOW_ELEMENT, {
309
+ acceptNode: function (node) {
310
+ var isHiddenInput = node.tagName === "INPUT" && node.type === "hidden";
311
+ return node.disabled || node.hidden || isHiddenInput ? NodeFilter.FILTER_SKIP : node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
312
+ }
313
+ }); walker.nextNode();) nodes.push(walker.currentNode);
314
+ return nodes;
315
+ }
316
+ //# sourceMappingURL=ToastViewport.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","ToastViewport_exports","__export","ToastViewport","VIEWPORT_DEFAULT_HOTKEY","VIEWPORT_PAUSE","VIEWPORT_RESUME","module","exports","import_jsx_runtime","require","import_animate_presence","import_compose_refs","import_constants","import_core","import_portal","import_stacks","import_visually_hidden","React","__toESM","import_constants2","import_ToastPortal","import_ToastProvider","VIEWPORT_NAME","ToastViewportWrapperFrame","styled","YStack","name","variants","unstyled","false","pointerEvents","top","bottom","left","right","position","isWeb","maxWidth","tabIndex","zIndex","defaultVariants","process","env","TAMAGUI_HEADLESS","ToastViewportFrame","memo","forwardRef","props","forwardedRef","scope","hotkey","label","multipleToasts","portalToRoot","viewportProps","context","useToastProviderContext","getItems","useCollection","TOAST_CONTEXT","headFocusProxyRef","useRef","tailFocusProxyRef","wrapperRef","ref","onViewportChange","useCallback","el","viewports","composedRefs","useComposedRefs","hotkeyLabel","join","replace","hasToasts","toastCount","useEffect","handleKeyDown","event","_ref_current","isHotkeyPressed","every","key","code","current","focus","document","addEventListener","removeEventListener","wrapper","viewport","handlePause","isClosePausedRef","pauseEvent","CustomEvent","dispatchEvent","handleResume","resumeEvent","handleFocusOutResume","isFocusMovingOutside","contains","relatedTarget","handlePointerLeaveResume","isFocusInside","activeElement","window","getSortedTabbableCandidates","param","tabbingDirection","toastItems","tabbableCandidates","map","toastItem","toastNode","toastTabbableCandidates","getTabbableCandidates","reverse","flat","isMetaKey","altKey","ctrlKey","metaKey","isTabKey","focusedElement","isTabbingBackwards","shiftKey","targetIsViewport","target","_headFocusProxyRef_current","sortedCandidates","index","findIndex","candidate","focusFirst","slice","preventDefault","_headFocusProxyRef_current1","_tailFocusProxyRef_current","contents","jsxs","role","children","jsx","FocusProxy","viewportName","onFocusFromOutsideViewport","Collection","Slot","toastScope","focusable","PortalHost","render","AnimatePresence","exitBeforeEnter","ToastPortal","displayName","FOCUS_PROXY_NAME","proxyProps","VisuallyHidden","onFocus","prevFocusedElement","isFocusFromOutsideViewport","candidates","previouslyFocusedElement","some","container","containerHtml","nodes","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT"],"sources":["../../src/ToastViewport.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,219 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf,
6
+ __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
+ value: mod,
27
+ enumerable: !0
28
+ }) : target, mod)),
29
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
30
+ value: !0
31
+ }), mod);
32
+ var Toaster_exports = {};
33
+ __export(Toaster_exports, {
34
+ Toaster: () => Toaster
35
+ });
36
+ module.exports = __toCommonJS(Toaster_exports);
37
+ var import_animate_presence = require("@tamagui/animate-presence"),
38
+ import_constants = require("@tamagui/constants"),
39
+ import_core = require("@tamagui/core"),
40
+ import_portal = require("@tamagui/portal"),
41
+ React = __toESM(require("react"), 1),
42
+ import_ToastItem = require("./ToastItem.cjs"),
43
+ import_ToastState = require("./ToastState.cjs"),
44
+ import_jsx_runtime = require("react/jsx-runtime");
45
+ const VISIBLE_TOASTS_AMOUNT = 4,
46
+ VIEWPORT_OFFSET = 24,
47
+ TOAST_GAP = 14,
48
+ TOAST_LIFETIME = 4e3,
49
+ TOAST_WIDTH = 356,
50
+ ToasterFrame = (0, import_core.styled)(import_core.View, {
51
+ name: "Toaster",
52
+ variants: {
53
+ unstyled: {
54
+ false: {
55
+ position: "fixed",
56
+ zIndex: 1e5,
57
+ pointerEvents: "box-none",
58
+ maxWidth: "100%",
59
+ // need min-height to contain absolutely positioned toasts
60
+ // toasts will overflow upward/downward from their anchor position
61
+ minHeight: 1
62
+ }
63
+ }
64
+ },
65
+ defaultVariants: {
66
+ unstyled: process.env.TAMAGUI_HEADLESS === "1"
67
+ }
68
+ }),
69
+ Toaster = React.forwardRef(function (props, _ref) {
70
+ const {
71
+ position = "bottom-right",
72
+ width = TOAST_WIDTH,
73
+ expand = !1,
74
+ visibleToasts = VISIBLE_TOASTS_AMOUNT,
75
+ gap = TOAST_GAP,
76
+ duration = TOAST_LIFETIME,
77
+ offset = VIEWPORT_OFFSET,
78
+ hotkey = ["altKey", "KeyT"],
79
+ swipeDirection = "right",
80
+ swipeThreshold = 50,
81
+ closeButton = !1,
82
+ theme: themeProp,
83
+ icons,
84
+ toastOptions,
85
+ containerAriaLabel = "Notifications",
86
+ disableNative = !1,
87
+ burntOptions,
88
+ notificationOptions,
89
+ className,
90
+ style
91
+ } = props,
92
+ [toasts, setToasts] = React.useState([]),
93
+ [heights, setHeights] = React.useState([]),
94
+ [expanded, setExpanded] = React.useState(!1),
95
+ [interacting, setInteracting] = React.useState(!1),
96
+ listRef = React.useRef(null),
97
+ lastFocusedElementRef = React.useRef(null),
98
+ isFocusWithinRef = React.useRef(!1);
99
+ React.useEffect(() => import_ToastState.ToastState.subscribe(toast => {
100
+ if (toast.dismiss) {
101
+ setToasts(toasts2 => toasts2.map(t => t.id === toast.id ? {
102
+ ...t,
103
+ delete: !0
104
+ } : t));
105
+ return;
106
+ }
107
+ setToasts(toasts2 => {
108
+ const indexOfExistingToast = toasts2.findIndex(t => t.id === toast.id);
109
+ return indexOfExistingToast !== -1 ? [...toasts2.slice(0, indexOfExistingToast), {
110
+ ...toasts2[indexOfExistingToast],
111
+ ...toast
112
+ }, ...toasts2.slice(indexOfExistingToast + 1)] : [toast, ...toasts2];
113
+ });
114
+ }), []), React.useEffect(() => {
115
+ toasts.length <= 1 && setExpanded(!1);
116
+ }, [toasts.length]), React.useEffect(() => {
117
+ if (!import_constants.isWeb) return;
118
+ const handleKeyDown = event => {
119
+ hotkey.length > 0 && hotkey.every(key => event[key] || event.code === key) && (setExpanded(!0), listRef.current?.focus()), event.code === "Escape" && (document.activeElement === listRef.current || listRef.current?.contains(document.activeElement)) && setExpanded(!1);
120
+ };
121
+ return document.addEventListener("keydown", handleKeyDown), () => document.removeEventListener("keydown", handleKeyDown);
122
+ }, [hotkey]), React.useEffect(() => {
123
+ if (!(!import_constants.isWeb || !listRef.current)) return () => {
124
+ lastFocusedElementRef.current && (lastFocusedElementRef.current.focus({
125
+ preventScroll: !0
126
+ }), lastFocusedElementRef.current = null, isFocusWithinRef.current = !1);
127
+ };
128
+ }, []);
129
+ const removeToast = React.useCallback(toastToRemove => {
130
+ setToasts(toasts2 => (toasts2.find(toast => toast.id === toastToRemove.id)?.delete || import_ToastState.ToastState.dismiss(toastToRemove.id), toasts2.filter(({
131
+ id
132
+ }) => id !== toastToRemove.id)));
133
+ }, []),
134
+ [yPosition, xPosition] = position.split("-"),
135
+ offsetStyles = React.useMemo(() => {
136
+ const styles = {},
137
+ defaultOffset = typeof offset == "number" ? offset : VIEWPORT_OFFSET,
138
+ offsetObj = typeof offset == "object" ? offset : {
139
+ top: defaultOffset,
140
+ right: defaultOffset,
141
+ bottom: defaultOffset,
142
+ left: defaultOffset
143
+ };
144
+ return yPosition === "top" ? styles.top = offsetObj.top ?? defaultOffset : styles.bottom = offsetObj.bottom ?? defaultOffset, xPosition === "left" ? styles.left = offsetObj.left ?? defaultOffset : xPosition === "right" ? styles.right = offsetObj.right ?? defaultOffset : (styles.left = "50%", styles.transform = "translateX(-50%)"), styles;
145
+ }, [offset, yPosition, xPosition]),
146
+ currentTheme = (0, import_core.useThemeName)(),
147
+ resolvedTheme = themeProp === "system" || !themeProp ? currentTheme?.includes("dark") ? "dark" : "light" : themeProp,
148
+ hotkeyLabel = hotkey.join("+").replace(/Key/g, "").replace(/Digit/g, "");
149
+ if (toasts.length === 0) return null;
150
+ const content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToasterFrame, {
151
+ ref: listRef,
152
+ width,
153
+ "aria-label": `${containerAriaLabel} ${hotkeyLabel}`,
154
+ tabIndex: -1,
155
+ "aria-live": "polite",
156
+ "aria-relevant": "additions text",
157
+ "aria-atomic": !1,
158
+ style: {
159
+ ...offsetStyles,
160
+ ...style
161
+ },
162
+ className,
163
+ "data-y-position": yPosition,
164
+ "data-x-position": xPosition,
165
+ onMouseEnter: () => setExpanded(!0),
166
+ onMouseMove: () => setExpanded(!0),
167
+ onMouseLeave: () => {
168
+ interacting || setExpanded(!1);
169
+ },
170
+ onPointerDown: () => setInteracting(!0),
171
+ onPointerUp: () => setInteracting(!1),
172
+ ...(import_constants.isWeb && {
173
+ onBlur: event => {
174
+ isFocusWithinRef.current && !event.currentTarget.contains(event.relatedTarget) && (isFocusWithinRef.current = !1, lastFocusedElementRef.current && (lastFocusedElementRef.current.focus({
175
+ preventScroll: !0
176
+ }), lastFocusedElementRef.current = null));
177
+ },
178
+ onFocus: event => {
179
+ isFocusWithinRef.current || (isFocusWithinRef.current = !0, lastFocusedElementRef.current = event.relatedTarget);
180
+ }
181
+ }),
182
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_animate_presence.AnimatePresence, {
183
+ children: toasts.map((toast, index) => {
184
+ const isVisible = index < visibleToasts,
185
+ isFront = index === 0;
186
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_ToastItem.ToastItem, {
187
+ toast,
188
+ index,
189
+ expanded: expanded || expand,
190
+ interacting,
191
+ position,
192
+ visibleToasts,
193
+ removeToast,
194
+ heights,
195
+ setHeights,
196
+ duration: toast.duration ?? toastOptions?.duration ?? duration,
197
+ gap,
198
+ swipeDirection,
199
+ swipeThreshold,
200
+ closeButton: toast.closeButton ?? closeButton,
201
+ icons,
202
+ disableNative,
203
+ burntOptions,
204
+ notificationOptions
205
+ }, toast.id);
206
+ })
207
+ })
208
+ });
209
+ return import_constants.isWeb ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_portal.Portal, {
210
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.Theme, {
211
+ name: resolvedTheme,
212
+ children: content
213
+ })
214
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.Theme, {
215
+ name: resolvedTheme,
216
+ children: content
217
+ });
218
+ });
219
+ Toaster.displayName = "Toaster";