@oxyhq/bloom 0.3.12 → 0.5.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 (191) hide show
  1. package/README.md +133 -90
  2. package/lib/commonjs/bottom-sheet/index.js +341 -98
  3. package/lib/commonjs/bottom-sheet/index.js.map +1 -1
  4. package/lib/commonjs/context-menu/index.js +18 -19
  5. package/lib/commonjs/context-menu/index.js.map +1 -1
  6. package/lib/commonjs/dialog/BloomDialogProvider.js +61 -0
  7. package/lib/commonjs/dialog/BloomDialogProvider.js.map +1 -0
  8. package/lib/commonjs/dialog/BloomDialogProvider.web.js +45 -0
  9. package/lib/commonjs/dialog/BloomDialogProvider.web.js.map +1 -0
  10. package/lib/commonjs/dialog/Dialog.js +197 -100
  11. package/lib/commonjs/dialog/Dialog.js.map +1 -1
  12. package/lib/commonjs/dialog/Dialog.web.js +194 -84
  13. package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
  14. package/lib/commonjs/dialog/SheetShell.js +149 -0
  15. package/lib/commonjs/dialog/SheetShell.js.map +1 -0
  16. package/lib/commonjs/dialog/alert-store.js +116 -0
  17. package/lib/commonjs/dialog/alert-store.js.map +1 -0
  18. package/lib/commonjs/dialog/alert.js +38 -0
  19. package/lib/commonjs/dialog/alert.js.map +1 -0
  20. package/lib/commonjs/dialog/context.js +10 -2
  21. package/lib/commonjs/dialog/context.js.map +1 -1
  22. package/lib/commonjs/dialog/index.js +8 -24
  23. package/lib/commonjs/dialog/index.js.map +1 -1
  24. package/lib/commonjs/dialog/index.web.js +10 -20
  25. package/lib/commonjs/dialog/index.web.js.map +1 -1
  26. package/lib/commonjs/index.js +101 -66
  27. package/lib/commonjs/index.js.map +1 -1
  28. package/lib/commonjs/index.web.js +101 -66
  29. package/lib/commonjs/index.web.js.map +1 -1
  30. package/lib/commonjs/menu/index.js +21 -23
  31. package/lib/commonjs/menu/index.js.map +1 -1
  32. package/lib/commonjs/select/index.js +26 -27
  33. package/lib/commonjs/select/index.js.map +1 -1
  34. package/lib/commonjs/toast/index.js +42 -13
  35. package/lib/commonjs/toast/index.js.map +1 -1
  36. package/lib/commonjs/toast/index.web.js +19 -15
  37. package/lib/commonjs/toast/index.web.js.map +1 -1
  38. package/lib/module/bottom-sheet/index.js +341 -98
  39. package/lib/module/bottom-sheet/index.js.map +1 -1
  40. package/lib/module/context-menu/index.js +15 -16
  41. package/lib/module/context-menu/index.js.map +1 -1
  42. package/lib/module/dialog/BloomDialogProvider.js +57 -0
  43. package/lib/module/dialog/BloomDialogProvider.js.map +1 -0
  44. package/lib/module/dialog/BloomDialogProvider.web.js +41 -0
  45. package/lib/module/dialog/BloomDialogProvider.web.js.map +1 -0
  46. package/lib/module/dialog/Dialog.js +199 -87
  47. package/lib/module/dialog/Dialog.js.map +1 -1
  48. package/lib/module/dialog/Dialog.web.js +195 -70
  49. package/lib/module/dialog/Dialog.web.js.map +1 -1
  50. package/lib/module/dialog/SheetShell.js +143 -0
  51. package/lib/module/dialog/SheetShell.js.map +1 -0
  52. package/lib/module/dialog/alert-store.js +107 -0
  53. package/lib/module/dialog/alert-store.js.map +1 -0
  54. package/lib/module/dialog/alert.js +35 -0
  55. package/lib/module/dialog/alert.js.map +1 -0
  56. package/lib/module/dialog/context.js +10 -2
  57. package/lib/module/dialog/context.js.map +1 -1
  58. package/lib/module/dialog/index.js +3 -1
  59. package/lib/module/dialog/index.js.map +1 -1
  60. package/lib/module/dialog/index.web.js +9 -7
  61. package/lib/module/dialog/index.web.js.map +1 -1
  62. package/lib/module/index.js +2 -3
  63. package/lib/module/index.js.map +1 -1
  64. package/lib/module/index.web.js +2 -3
  65. package/lib/module/index.web.js.map +1 -1
  66. package/lib/module/menu/index.js +11 -13
  67. package/lib/module/menu/index.js.map +1 -1
  68. package/lib/module/select/index.js +27 -28
  69. package/lib/module/select/index.js.map +1 -1
  70. package/lib/module/toast/index.js +41 -11
  71. package/lib/module/toast/index.js.map +1 -1
  72. package/lib/module/toast/index.web.js +18 -13
  73. package/lib/module/toast/index.web.js.map +1 -1
  74. package/lib/typescript/commonjs/__tests__/Dialog.test.d.ts +2 -0
  75. package/lib/typescript/commonjs/__tests__/Dialog.test.d.ts.map +1 -0
  76. package/lib/typescript/commonjs/bottom-sheet/index.d.ts +47 -1
  77. package/lib/typescript/commonjs/bottom-sheet/index.d.ts.map +1 -1
  78. package/lib/typescript/commonjs/context-menu/index.d.ts +4 -3
  79. package/lib/typescript/commonjs/context-menu/index.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/dialog/BloomDialogProvider.d.ts +27 -0
  81. package/lib/typescript/commonjs/dialog/BloomDialogProvider.d.ts.map +1 -0
  82. package/lib/typescript/commonjs/dialog/BloomDialogProvider.web.d.ts +15 -0
  83. package/lib/typescript/commonjs/dialog/BloomDialogProvider.web.d.ts.map +1 -0
  84. package/lib/typescript/commonjs/dialog/Dialog.d.ts +37 -10
  85. package/lib/typescript/commonjs/dialog/Dialog.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts +26 -10
  87. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
  88. package/lib/typescript/commonjs/dialog/SheetShell.d.ts +31 -0
  89. package/lib/typescript/commonjs/dialog/SheetShell.d.ts.map +1 -0
  90. package/lib/typescript/commonjs/dialog/alert-store.d.ts +70 -0
  91. package/lib/typescript/commonjs/dialog/alert-store.d.ts.map +1 -0
  92. package/lib/typescript/commonjs/dialog/alert.d.ts +27 -0
  93. package/lib/typescript/commonjs/dialog/alert.d.ts.map +1 -0
  94. package/lib/typescript/commonjs/dialog/context.d.ts +7 -0
  95. package/lib/typescript/commonjs/dialog/context.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/dialog/index.d.ts +5 -2
  97. package/lib/typescript/commonjs/dialog/index.d.ts.map +1 -1
  98. package/lib/typescript/commonjs/dialog/index.web.d.ts +5 -2
  99. package/lib/typescript/commonjs/dialog/index.web.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/dialog/types.d.ts +70 -15
  101. package/lib/typescript/commonjs/dialog/types.d.ts.map +1 -1
  102. package/lib/typescript/commonjs/index.d.ts +3 -3
  103. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  104. package/lib/typescript/commonjs/index.web.d.ts +3 -3
  105. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/menu/index.d.ts +4 -4
  107. package/lib/typescript/commonjs/menu/index.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/select/index.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/toast/index.d.ts +32 -3
  110. package/lib/typescript/commonjs/toast/index.d.ts.map +1 -1
  111. package/lib/typescript/commonjs/toast/index.web.d.ts +14 -7
  112. package/lib/typescript/commonjs/toast/index.web.d.ts.map +1 -1
  113. package/lib/typescript/module/__tests__/Dialog.test.d.ts +2 -0
  114. package/lib/typescript/module/__tests__/Dialog.test.d.ts.map +1 -0
  115. package/lib/typescript/module/bottom-sheet/index.d.ts +47 -1
  116. package/lib/typescript/module/bottom-sheet/index.d.ts.map +1 -1
  117. package/lib/typescript/module/context-menu/index.d.ts +4 -3
  118. package/lib/typescript/module/context-menu/index.d.ts.map +1 -1
  119. package/lib/typescript/module/dialog/BloomDialogProvider.d.ts +27 -0
  120. package/lib/typescript/module/dialog/BloomDialogProvider.d.ts.map +1 -0
  121. package/lib/typescript/module/dialog/BloomDialogProvider.web.d.ts +15 -0
  122. package/lib/typescript/module/dialog/BloomDialogProvider.web.d.ts.map +1 -0
  123. package/lib/typescript/module/dialog/Dialog.d.ts +37 -10
  124. package/lib/typescript/module/dialog/Dialog.d.ts.map +1 -1
  125. package/lib/typescript/module/dialog/Dialog.web.d.ts +26 -10
  126. package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
  127. package/lib/typescript/module/dialog/SheetShell.d.ts +31 -0
  128. package/lib/typescript/module/dialog/SheetShell.d.ts.map +1 -0
  129. package/lib/typescript/module/dialog/alert-store.d.ts +70 -0
  130. package/lib/typescript/module/dialog/alert-store.d.ts.map +1 -0
  131. package/lib/typescript/module/dialog/alert.d.ts +27 -0
  132. package/lib/typescript/module/dialog/alert.d.ts.map +1 -0
  133. package/lib/typescript/module/dialog/context.d.ts +7 -0
  134. package/lib/typescript/module/dialog/context.d.ts.map +1 -1
  135. package/lib/typescript/module/dialog/index.d.ts +5 -2
  136. package/lib/typescript/module/dialog/index.d.ts.map +1 -1
  137. package/lib/typescript/module/dialog/index.web.d.ts +5 -2
  138. package/lib/typescript/module/dialog/index.web.d.ts.map +1 -1
  139. package/lib/typescript/module/dialog/types.d.ts +70 -15
  140. package/lib/typescript/module/dialog/types.d.ts.map +1 -1
  141. package/lib/typescript/module/index.d.ts +3 -3
  142. package/lib/typescript/module/index.d.ts.map +1 -1
  143. package/lib/typescript/module/index.web.d.ts +3 -3
  144. package/lib/typescript/module/index.web.d.ts.map +1 -1
  145. package/lib/typescript/module/menu/index.d.ts +4 -4
  146. package/lib/typescript/module/menu/index.d.ts.map +1 -1
  147. package/lib/typescript/module/select/index.d.ts.map +1 -1
  148. package/lib/typescript/module/toast/index.d.ts +32 -3
  149. package/lib/typescript/module/toast/index.d.ts.map +1 -1
  150. package/lib/typescript/module/toast/index.web.d.ts +14 -7
  151. package/lib/typescript/module/toast/index.web.d.ts.map +1 -1
  152. package/package.json +3 -14
  153. package/src/__tests__/BottomSheet.test.tsx +149 -2
  154. package/src/__tests__/Dialog.test.tsx +177 -0
  155. package/src/bottom-sheet/index.tsx +367 -83
  156. package/src/context-menu/index.tsx +12 -12
  157. package/src/dialog/BloomDialogProvider.tsx +61 -0
  158. package/src/dialog/BloomDialogProvider.web.tsx +46 -0
  159. package/src/dialog/Dialog.tsx +217 -64
  160. package/src/dialog/Dialog.web.tsx +240 -75
  161. package/src/dialog/SheetShell.tsx +154 -0
  162. package/src/dialog/alert-store.ts +126 -0
  163. package/src/dialog/alert.ts +42 -0
  164. package/src/dialog/context.ts +14 -3
  165. package/src/dialog/index.ts +14 -2
  166. package/src/dialog/index.web.ts +20 -8
  167. package/src/dialog/types.ts +73 -16
  168. package/src/index.ts +17 -3
  169. package/src/index.web.ts +17 -3
  170. package/src/menu/index.tsx +13 -17
  171. package/src/select/index.tsx +30 -30
  172. package/src/toast/index.tsx +55 -11
  173. package/src/toast/index.web.tsx +33 -13
  174. package/lib/commonjs/prompt/Prompt.js +0 -267
  175. package/lib/commonjs/prompt/Prompt.js.map +0 -1
  176. package/lib/commonjs/prompt/index.js +0 -61
  177. package/lib/commonjs/prompt/index.js.map +0 -1
  178. package/lib/module/prompt/Prompt.js +0 -250
  179. package/lib/module/prompt/Prompt.js.map +0 -1
  180. package/lib/module/prompt/index.js +0 -4
  181. package/lib/module/prompt/index.js.map +0 -1
  182. package/lib/typescript/commonjs/prompt/Prompt.d.ts +0 -42
  183. package/lib/typescript/commonjs/prompt/Prompt.d.ts.map +0 -1
  184. package/lib/typescript/commonjs/prompt/index.d.ts +0 -3
  185. package/lib/typescript/commonjs/prompt/index.d.ts.map +0 -1
  186. package/lib/typescript/module/prompt/Prompt.d.ts +0 -42
  187. package/lib/typescript/module/prompt/Prompt.d.ts.map +0 -1
  188. package/lib/typescript/module/prompt/index.d.ts +0 -3
  189. package/lib/typescript/module/prompt/index.d.ts.map +0 -1
  190. package/src/prompt/Prompt.tsx +0 -247
  191. package/src/prompt/index.ts +0 -13
@@ -15,17 +15,19 @@ var _react = _interopRequireWildcard(require("react"));
15
15
  var _reactNative = require("react-native");
16
16
  var _useTheme = require("../theme/use-theme.js");
17
17
  var _index = require("../typography/index.js");
18
- var Dialog = _interopRequireWildcard(require("../dialog"));
18
+ var _context = require("../dialog/context.js");
19
+ var _SheetShell = require("../dialog/SheetShell.js");
19
20
  var _useInteractionState = require("../hooks/useInteractionState.js");
20
- var _context = require("./context.js");
21
+ var _context2 = require("./context.js");
21
22
  var _jsxRuntime = require("react/jsx-runtime");
22
23
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
23
24
  /**
24
25
  * ContextMenu — Native implementation
25
26
  *
26
- * Opens a bottom-sheet menu via Bloom's Dialog when the user long-presses
27
- * the trigger. The menu body is rendered through Bloom's Menu component
28
- * pattern using Dialog.Outer / Dialog.ScrollableInner.
27
+ * Opens a bottom-sheet menu when the user long-presses the trigger. The
28
+ * menu body uses bloom's internal `SheetShell` (a `BottomSheet`
29
+ * presentation primitive with the same drag-handle + close-on-tap
30
+ * semantics shared by `Menu` and `Select`).
29
31
  */
30
32
 
31
33
  // ---------------------------------------------------------------------------
@@ -49,7 +51,7 @@ function useNativeContextMenuContext() {
49
51
  function Root({
50
52
  children
51
53
  }) {
52
- const control = Dialog.useDialogControl();
54
+ const control = (0, _context.useDialogControl)();
53
55
  const ctx = (0, _react.useMemo)(() => ({
54
56
  isOpen: false,
55
57
  open: () => control.open(),
@@ -112,24 +114,21 @@ function Outer({
112
114
  const {
113
115
  control
114
116
  } = useNativeContextMenuContext();
115
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Dialog.Outer, {
117
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SheetShell.SheetShell, {
116
118
  control: control,
117
- preventExpansion: true,
118
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Dialog.Handle, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(NativeContextMenuContext.Provider, {
119
+ label: "Context menu",
120
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(NativeContextMenuContext.Provider, {
119
121
  value: {
120
122
  isOpen: true,
121
123
  open: () => control.open(),
122
124
  close: () => control.close(),
123
125
  control
124
126
  },
125
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Dialog.ScrollableInner, {
126
- label: "Context menu",
127
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
128
- style: [styles.outerContent, style],
129
- children: children
130
- })
127
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
128
+ style: [styles.outerContent, style],
129
+ children: children
131
130
  })
132
- })]
131
+ })
133
132
  });
134
133
  }
135
134
 
@@ -184,7 +183,7 @@ function Item({
184
183
  }, isHighlighted && {
185
184
  backgroundColor: theme.colors.backgroundSecondary
186
185
  }, style],
187
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.ItemCtx.Provider, {
186
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_context2.ItemCtx.Provider, {
188
187
  value: itemCtx,
189
188
  children: children
190
189
  })
@@ -202,7 +201,7 @@ function ItemText({
202
201
  const theme = (0, _useTheme.useTheme)();
203
202
  const {
204
203
  disabled
205
- } = (0, _context.useItemContext)();
204
+ } = (0, _context2.useItemContext)();
206
205
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Text, {
207
206
  numberOfLines: 2,
208
207
  ellipsizeMode: "middle",
@@ -223,7 +222,7 @@ function ItemIcon({
223
222
  const theme = (0, _useTheme.useTheme)();
224
223
  const {
225
224
  disabled
226
- } = (0, _context.useItemContext)();
225
+ } = (0, _context2.useItemContext)();
227
226
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Comp, {
228
227
  size: "lg",
229
228
  fill: disabled ? theme.colors.textTertiary : theme.colors.textSecondary
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_index","Dialog","_useInteractionState","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NativeContextMenuContext","createContext","displayName","useNativeContextMenuContext","ctx","useContext","Error","Root","children","control","useDialogControl","useMemo","isOpen","open","close","jsx","Provider","value","Trigger","label","hint","style","state","focused","onIn","onFocus","onOut","onBlur","useInteractionState","View","hovered","pressed","props","onPress","onLongPress","accessibilityLabel","accessibilityHint","Outer","jsxs","preventExpansion","Handle","ScrollableInner","styles","outerContent","Item","disabled","theme","useTheme","onPressIn","onPressOut","isHighlighted","handlePress","useCallback","itemCtx","Pressable","accessibilityState","item","backgroundColor","colors","contrast50","borderColor","borderLight","backgroundSecondary","ItemCtx","ItemText","useItemContext","Text","numberOfLines","ellipsizeMode","itemText","color","textTertiary","text","ItemIcon","icon","Comp","size","fill","textSecondary","Group","Divider","divider","borderTopColor","StyleSheet","create","gap","flexDirection","alignItems","paddingHorizontal","borderRadius","overflow","borderWidth","minHeight","paddingVertical","flex","fontSize","fontWeight","borderTopWidth","hairlineWidth","marginVertical"],"sourceRoot":"../../../src","sources":["context-menu/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_index","_context","_SheetShell","_useInteractionState","_context2","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NativeContextMenuContext","createContext","displayName","useNativeContextMenuContext","ctx","useContext","Error","Root","children","control","useDialogControl","useMemo","isOpen","open","close","jsx","Provider","value","Trigger","label","hint","style","state","focused","onIn","onFocus","onOut","onBlur","useInteractionState","View","hovered","pressed","props","onPress","onLongPress","accessibilityLabel","accessibilityHint","Outer","SheetShell","styles","outerContent","Item","disabled","theme","useTheme","onPressIn","onPressOut","isHighlighted","handlePress","useCallback","itemCtx","Pressable","accessibilityState","item","backgroundColor","colors","contrast50","borderColor","borderLight","backgroundSecondary","ItemCtx","ItemText","useItemContext","Text","numberOfLines","ellipsizeMode","itemText","color","textTertiary","text","ItemIcon","icon","Comp","size","fill","textSecondary","Group","Divider","divider","borderTopColor","StyleSheet","create","gap","flexDirection","alignItems","paddingHorizontal","borderRadius","overflow","borderWidth","minHeight","paddingVertical","flex","fontSize","fontWeight","borderTopWidth","hairlineWidth","marginVertical"],"sourceRoot":"../../../src","sources":["context-menu/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BloomDialogProvider = BloomDialogProvider;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _Dialog = require("./Dialog");
9
+ var _alertStore = require("./alert-store.js");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ /**
13
+ * Mounts the imperative `alert()` host inside your app.
14
+ *
15
+ * Wrap your app root once (after `BloomThemeProvider`, so the dialog's
16
+ * colours come from the active theme) and you can call `alert()` from
17
+ * anywhere — including from code that runs before the provider mounts
18
+ * (alerts are queued and drained on subscribe).
19
+ *
20
+ * ```tsx
21
+ * import { BloomDialogProvider } from '@oxyhq/bloom';
22
+ *
23
+ * <BloomThemeProvider mode="system" colorPreset="oxy">
24
+ * <BloomDialogProvider>
25
+ * <App />
26
+ * </BloomDialogProvider>
27
+ * </BloomThemeProvider>
28
+ * ```
29
+ *
30
+ * Alerts are presented one at a time. While one is on screen, subsequent
31
+ * `alert()` calls enqueue and present in FIFO order once their predecessor
32
+ * has finished closing.
33
+ */
34
+ function BloomDialogProvider({
35
+ children
36
+ }) {
37
+ const [queue, setQueue] = (0, _react.useState)([]);
38
+ (0, _react.useEffect)(() => (0, _alertStore.subscribeAlerts)(setQueue), []);
39
+
40
+ // Only the head of the queue is presented; this keeps the bottom-sheet
41
+ // exit/enter animations clean and matches the platform `Alert.alert`
42
+ // behaviour our consumers expect.
43
+ const head = queue[0];
44
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
45
+ children: [children, head ? /*#__PURE__*/(0, _jsxRuntime.jsx)(AlertHost, {
46
+ entry: head
47
+ }, head.id) : null]
48
+ });
49
+ }
50
+ function AlertHost({
51
+ entry
52
+ }) {
53
+ const actions = entry.buttons.map(_alertStore.buttonToAction);
54
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.AutoMountedDialog, {
55
+ title: entry.title,
56
+ description: entry.message,
57
+ actions: actions,
58
+ onResolve: () => (0, _alertStore.dismissAlert)(entry.id)
59
+ });
60
+ }
61
+ //# sourceMappingURL=BloomDialogProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_Dialog","_alertStore","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BloomDialogProvider","children","queue","setQueue","useState","useEffect","subscribeAlerts","head","jsxs","Fragment","jsx","AlertHost","entry","id","actions","buttons","map","buttonToAction","AutoMountedDialog","title","description","message","onResolve","dismissAlert"],"sourceRoot":"../../../src","sources":["dialog/BloomDialogProvider.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAKuB,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASkB,mBAAmBA,CAAC;EAAEC;AAAwC,CAAC,EAAE;EAC/E,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAAwB,EAAE,CAAC;EAE7D,IAAAC,gBAAS,EAAC,MAAM,IAAAC,2BAAe,EAACH,QAAQ,CAAC,EAAE,EAAE,CAAC;;EAE9C;EACA;EACA;EACA,MAAMI,IAAI,GAAGL,KAAK,CAAC,CAAC,CAAC;EAErB,oBACE,IAAAtB,WAAA,CAAA4B,IAAA,EAAA5B,WAAA,CAAA6B,QAAA;IAAAR,QAAA,GACGA,QAAQ,EACRM,IAAI,gBAAG,IAAA3B,WAAA,CAAA8B,GAAA,EAACC,SAAS;MAAeC,KAAK,EAAEL;IAAK,GAArBA,IAAI,CAACM,EAAkB,CAAC,GAAG,IAAI;EAAA,CACvD,CAAC;AAEP;AAEA,SAASF,SAASA,CAAC;EAAEC;AAA6B,CAAC,EAAE;EACnD,MAAME,OAAO,GAAGF,KAAK,CAACG,OAAO,CAACC,GAAG,CAACC,0BAAc,CAAC;EACjD,oBACE,IAAArC,WAAA,CAAA8B,GAAA,EAAChC,OAAA,CAAAwC,iBAAiB;IAChBC,KAAK,EAAEP,KAAK,CAACO,KAAM;IACnBC,WAAW,EAAER,KAAK,CAACS,OAAQ;IAC3BP,OAAO,EAAEA,OAAQ;IACjBQ,SAAS,EAAEA,CAAA,KAAM,IAAAC,wBAAY,EAACX,KAAK,CAACC,EAAE;EAAE,CACzC,CAAC;AAEN","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BloomDialogProvider = BloomDialogProvider;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _DialogWeb = require("./Dialog.web.js");
9
+ var _alertStore = require("./alert-store.js");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ /**
13
+ * Web variant of `BloomDialogProvider`. Identical surface area to the
14
+ * native version — it just uses the web-fork `Dialog` (`Dialog.web.tsx`)
15
+ * underneath instead of the bottom-sheet variant.
16
+ *
17
+ * See the native file (`./BloomDialogProvider.tsx`) for the full design
18
+ * notes; this fork exists purely so the bundler's `browser` condition can
19
+ * resolve to a `Dialog` that doesn't pull in the native gesture-handler /
20
+ * reanimated stack.
21
+ */
22
+ function BloomDialogProvider({
23
+ children
24
+ }) {
25
+ const [queue, setQueue] = (0, _react.useState)([]);
26
+ (0, _react.useEffect)(() => (0, _alertStore.subscribeAlerts)(setQueue), []);
27
+ const head = queue[0];
28
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
29
+ children: [children, head ? /*#__PURE__*/(0, _jsxRuntime.jsx)(AlertHost, {
30
+ entry: head
31
+ }, head.id) : null]
32
+ });
33
+ }
34
+ function AlertHost({
35
+ entry
36
+ }) {
37
+ const actions = entry.buttons.map(_alertStore.buttonToAction);
38
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogWeb.AutoMountedDialog, {
39
+ title: entry.title,
40
+ description: entry.message,
41
+ actions: actions,
42
+ onResolve: () => (0, _alertStore.dismissAlert)(entry.id)
43
+ });
44
+ }
45
+ //# sourceMappingURL=BloomDialogProvider.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_DialogWeb","_alertStore","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BloomDialogProvider","children","queue","setQueue","useState","useEffect","subscribeAlerts","head","jsxs","Fragment","jsx","AlertHost","entry","id","actions","buttons","map","buttonToAction","AutoMountedDialog","title","description","message","onResolve","dismissAlert"],"sourceRoot":"../../../src","sources":["dialog/BloomDialogProvider.web.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAKuB,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASkB,mBAAmBA,CAAC;EAAEC;AAAwC,CAAC,EAAE;EAC/E,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAAwB,EAAE,CAAC;EAE7D,IAAAC,gBAAS,EAAC,MAAM,IAAAC,2BAAe,EAACH,QAAQ,CAAC,EAAE,EAAE,CAAC;EAE9C,MAAMI,IAAI,GAAGL,KAAK,CAAC,CAAC,CAAC;EAErB,oBACE,IAAAtB,WAAA,CAAA4B,IAAA,EAAA5B,WAAA,CAAA6B,QAAA;IAAAR,QAAA,GACGA,QAAQ,EACRM,IAAI,gBAAG,IAAA3B,WAAA,CAAA8B,GAAA,EAACC,SAAS;MAAeC,KAAK,EAAEL;IAAK,GAArBA,IAAI,CAACM,EAAkB,CAAC,GAAG,IAAI;EAAA,CACvD,CAAC;AAEP;AAEA,SAASF,SAASA,CAAC;EAAEC;AAA6B,CAAC,EAAE;EACnD,MAAME,OAAO,GAAGF,KAAK,CAACG,OAAO,CAACC,GAAG,CAACC,0BAAc,CAAC;EACjD,oBACE,IAAArC,WAAA,CAAA8B,GAAA,EAAChC,UAAA,CAAAwC,iBAAiB;IAChBC,KAAK,EAAEP,KAAK,CAACO,KAAM;IACnBC,WAAW,EAAER,KAAK,CAACS,OAAQ;IAC3BP,OAAO,EAAEA,OAAQ;IACjBQ,SAAS,EAAEA,CAAA,KAAM,IAAAC,wBAAY,EAACX,KAAK,CAACC,EAAE;EAAE,CACzC,CAAC;AAEN","ignoreList":[]}
@@ -3,24 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Backdrop = Backdrop;
7
- exports.Close = Close;
8
- exports.Handle = Handle;
9
- exports.Inner = Inner;
10
- exports.Outer = Outer;
11
- exports.ScrollableInner = ScrollableInner;
12
- Object.defineProperty(exports, "useDialogContext", {
13
- enumerable: true,
14
- get: function () {
15
- return _context.useDialogContext;
16
- }
17
- });
18
- Object.defineProperty(exports, "useDialogControl", {
19
- enumerable: true,
20
- get: function () {
21
- return _context.useDialogControl;
22
- }
23
- });
6
+ exports.AutoMountedDialog = AutoMountedDialog;
7
+ exports.Dialog = Dialog;
24
8
  var _react = _interopRequireWildcard(require("react"));
25
9
  var _reactNative = require("react-native");
26
10
  var _index = require("../bottom-sheet/index.js");
@@ -28,24 +12,60 @@ var _useTheme = require("../theme/use-theme.js");
28
12
  var _context = require("./context.js");
29
13
  var _jsxRuntime = require("react/jsx-runtime");
30
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
31
- function Outer({
32
- children,
15
+ /**
16
+ * Native variant of `<Dialog>`.
17
+ *
18
+ * Uses bloom's own `BottomSheet` in `detached` mode as the underlying
19
+ * surface — a floating, dynamically-sized, content-hugging card that
20
+ * gracefully degrades from sheet (phone) to centered card (tablet, via the
21
+ * 500px max-width cap).
22
+ *
23
+ * The component accepts three rendering modes simultaneously:
24
+ *
25
+ * 1. Declarative — `title`, `description`, `actions`. Bloom renders a
26
+ * standard confirm/destructive/cancel layout.
27
+ * 2. Custom children — caller passes JSX, bloom renders the chrome (title
28
+ * + close behaviour) and the children fill the body.
29
+ * 3. Pure children — no `title`/`description`/`actions`; caller owns
30
+ * every pixel.
31
+ *
32
+ * All three share the same dismissal semantics: tapping the backdrop, the
33
+ * drag handle, swiping down, or `control.close()` runs the queued close
34
+ * callbacks once the sheet's exit animation has settled.
35
+ */
36
+ function Dialog({
33
37
  control,
34
38
  onClose,
35
- testID
39
+ testID,
40
+ title,
41
+ description,
42
+ actions,
43
+ style,
44
+ label,
45
+ children
36
46
  }) {
37
47
  const theme = (0, _useTheme.useTheme)();
38
48
  const ref = (0, _react.useRef)(null);
39
49
  const closeCallbacks = (0, _react.useRef)([]);
50
+ const titleId = (0, _react.useId)();
51
+ const descriptionId = (0, _react.useId)();
52
+
53
+ // Drain queued close callbacks atomically — capturing the list and
54
+ // resetting it before invocation ensures a callback that synchronously
55
+ // re-opens the dialog (and queues fresh callbacks) does not see the old
56
+ // ones replayed against the new session.
40
57
  const callQueuedCallbacks = (0, _react.useCallback)(() => {
41
- for (const cb of closeCallbacks.current) {
58
+ const queued = closeCallbacks.current;
59
+ closeCallbacks.current = [];
60
+ for (const cb of queued) {
42
61
  try {
43
62
  cb();
44
63
  } catch (e) {
45
- console.error('Dialog close callback error:', e);
64
+ if (typeof console !== 'undefined' && console.error) {
65
+ console.error('Dialog close callback error:', e);
66
+ }
46
67
  }
47
68
  }
48
- closeCallbacks.current = [];
49
69
  }, []);
50
70
  const open = (0, _react.useCallback)(() => {
51
71
  ref.current?.present();
@@ -56,11 +76,6 @@ function Outer({
56
76
  }
57
77
  ref.current?.dismiss();
58
78
  }, []);
59
-
60
- // onDismiss fires after the BottomSheet's close animation finishes — this is
61
- // the integration point for the closeCallbacks queue. Consumers (e.g.
62
- // Prompt.Action) rely on the queued callback running AFTER the sheet has
63
- // visually closed so the screen transition feels natural.
64
79
  const handleDismiss = (0, _react.useCallback)(() => {
65
80
  callQueuedCallbacks();
66
81
  onClose?.();
@@ -76,9 +91,9 @@ function Outer({
76
91
  const sheetStyle = (0, _react.useMemo)(() => ({
77
92
  maxWidth: 500,
78
93
  backgroundColor: theme.colors.background,
79
- // All four corners rounded — Dialog uses BottomSheet in `detached` mode
80
- // (floating card with safe-area margins), so we round the bottom too
81
- // instead of leaving the default top-only radius.
94
+ // All four corners rounded — bloom's BottomSheet defaults to top-only
95
+ // radius in flush mode, but we use `detached` so the whole card is
96
+ // floating and rounded uniformly.
82
97
  borderRadius: 20
83
98
  }), [theme.colors.background]);
84
99
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.BottomSheet, {
@@ -86,95 +101,177 @@ function Outer({
86
101
  onDismiss: handleDismiss,
87
102
  enablePanDownToClose: true,
88
103
  detached: true
89
- // Stronger dim so the underlying bottom-sheet's handle/content doesn't
90
- // bleed through when a Dialog/Prompt is stacked over another sheet.
104
+ // Stronger dim when a Dialog is stacked over another sheet so the
105
+ // underlying sheet's handle/content doesn't bleed through.
91
106
  ,
92
107
  backdropOpacity: 0.7,
93
108
  style: sheetStyle,
94
109
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.Context.Provider, {
95
110
  value: context,
96
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
111
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
97
112
  testID: testID,
98
- style: {
113
+ accessibilityLabel: label,
114
+ "aria-labelledby": title ? titleId : undefined,
115
+ "aria-describedby": description ? descriptionId : undefined,
116
+ style: [
117
+ // Detached BottomSheet already adds `marginBottom: insets.bottom + 16`
118
+ // to the sheet container — the floating card sits ABOVE the
119
+ // system gesture bar, so we don't add `insets.bottom` here.
120
+ {
121
+ paddingTop: 20,
122
+ paddingHorizontal: 20,
123
+ paddingBottom: 20
124
+ }, {
99
125
  backgroundColor: theme.colors.background
100
- },
101
- children: children
126
+ }, style],
127
+ children: [title ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
128
+ nativeID: titleId,
129
+ style: {
130
+ fontSize: 22,
131
+ fontWeight: '600',
132
+ color: theme.colors.text,
133
+ paddingBottom: description ? 4 : 16,
134
+ lineHeight: 30
135
+ },
136
+ children: title
137
+ }) : null, description ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
138
+ nativeID: descriptionId,
139
+ style: {
140
+ fontSize: 16,
141
+ color: theme.colors.textSecondary,
142
+ paddingBottom: 16,
143
+ lineHeight: 22
144
+ },
145
+ children: description
146
+ }) : null, children, actions && actions.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionRow, {
147
+ actions: actions
148
+ }) : null]
102
149
  })
103
150
  })
104
151
  });
105
152
  }
106
- function Inner({
107
- children,
108
- style,
109
- header,
110
- contentContainerStyle
153
+ function ActionRow({
154
+ actions
111
155
  }) {
112
- // Dialog renders inside a `detached` BottomSheet, which already adds
113
- // `marginBottom: insets.bottom + 16` to the sheet container — the floating
114
- // card sits ABOVE the system gesture bar, so we don't add `insets.bottom`
115
- // here. Doing so double-padded the bottom on Android edge-to-edge displays.
116
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
117
- children: [header, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
118
- style: [{
119
- paddingTop: 20,
120
- paddingHorizontal: 20,
121
- paddingBottom: 20
122
- }, contentContainerStyle, style],
123
- children: children
124
- })]
125
- });
126
- }
127
- function ScrollableInner(props) {
128
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Inner, {
129
- ...props
156
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
157
+ style: {
158
+ width: '100%',
159
+ gap: 8,
160
+ justifyContent: 'flex-end'
161
+ },
162
+ children: actions.map((action, idx) => /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionButton, {
163
+ action: action
164
+ }, `${action.label}-${idx}`))
130
165
  });
131
166
  }
132
- const handleStyles = _reactNative.StyleSheet.create({
133
- container: {
134
- position: 'absolute',
135
- width: '100%',
136
- alignItems: 'center',
137
- zIndex: 10,
138
- height: 20
139
- },
140
- bar: {
141
- top: 8,
142
- width: 35,
143
- height: 5,
144
- borderRadius: 3,
145
- alignSelf: 'center',
146
- opacity: 0.5
147
- }
148
- });
149
- function Handle() {
150
- const theme = (0, _useTheme.useTheme)();
167
+ function ActionButton({
168
+ action
169
+ }) {
151
170
  const {
152
171
  close
153
172
  } = (0, _context.useDialogContext)();
154
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
155
- style: handleStyles.container,
156
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
157
- onPress: () => close(),
158
- accessibilityLabel: "Dismiss",
159
- accessibilityHint: "Tap to close the dialog",
160
- hitSlop: {
161
- top: 10,
162
- bottom: 10,
163
- left: 40,
164
- right: 40
173
+ const theme = (0, _useTheme.useTheme)();
174
+ const color = action.color ?? 'default';
175
+ const shouldCloseOnPress = action.shouldCloseOnPress ?? true;
176
+ const {
177
+ background,
178
+ foreground
179
+ } = getActionPalette(color, theme.colors);
180
+ const handlePress = (0, _react.useCallback)(e => {
181
+ const onPress = action.onPress;
182
+ if (color === 'cancel') {
183
+ // Cancel always dismisses; consumer's onPress (rare) runs after.
184
+ close(onPress ? () => onPress(e) : undefined);
185
+ return;
186
+ }
187
+ if (shouldCloseOnPress) {
188
+ close(onPress ? () => onPress(e) : undefined);
189
+ } else {
190
+ onPress?.(e);
191
+ }
192
+ }, [action.onPress, close, color, shouldCloseOnPress]);
193
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
194
+ style: {
195
+ borderRadius: 9999,
196
+ alignItems: 'center',
197
+ justifyContent: 'center',
198
+ backgroundColor: background,
199
+ opacity: action.disabled ? 0.5 : 1,
200
+ paddingVertical: 12,
201
+ paddingHorizontal: 24
202
+ },
203
+ onPress: handlePress,
204
+ disabled: action.disabled,
205
+ activeOpacity: 0.7,
206
+ testID: action.testID,
207
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
208
+ style: {
209
+ fontSize: 16,
210
+ fontWeight: '500',
211
+ color: foreground
165
212
  },
166
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
167
- style: [handleStyles.bar, {
168
- backgroundColor: theme.colors.text
169
- }]
170
- })
213
+ children: action.label
171
214
  })
172
215
  });
173
216
  }
174
- function Close() {
175
- return null;
217
+ function getActionPalette(color, colors) {
218
+ switch (color) {
219
+ case 'destructive':
220
+ return {
221
+ background: colors.negative,
222
+ foreground: colors.negativeForeground
223
+ };
224
+ case 'cancel':
225
+ return {
226
+ background: colors.contrast50,
227
+ foreground: colors.text
228
+ };
229
+ case 'default':
230
+ return {
231
+ background: colors.primary,
232
+ foreground: '#FFFFFF'
233
+ };
234
+ /* c8 ignore next 2 -- TS exhaustiveness check guards this branch */
235
+ default:
236
+ {
237
+ const _exhaustive = color;
238
+ return {
239
+ background: colors.primary,
240
+ foreground: '#FFFFFF'
241
+ };
242
+ }
243
+ }
176
244
  }
177
- function Backdrop() {
178
- return null;
245
+
246
+ /**
247
+ * Helper used by the imperative `alert()` API. Mounts a `<Dialog>` against
248
+ * a fresh control and presents it immediately. `onResolve` is invoked
249
+ * exactly once when the dialog finishes closing (regardless of how the
250
+ * dismissal happened).
251
+ *
252
+ * Kept private to the dialog module — `alert()` is the public surface.
253
+ */
254
+ function AutoMountedDialog({
255
+ title,
256
+ description,
257
+ actions,
258
+ onResolve
259
+ }) {
260
+ const control = (0, _context.useDialogControl)();
261
+
262
+ // `control` is referentially stable for the lifetime of the component
263
+ // (memoised by `useDialogControl` on `[id]`), so this effect runs exactly
264
+ // once per mount — present-on-mount semantics for an `alert()` call
265
+ // without re-presenting on subsequent renders.
266
+ (0, _react.useEffect)(() => {
267
+ control.open();
268
+ }, [control]);
269
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Dialog, {
270
+ control: control,
271
+ title: title,
272
+ description: description,
273
+ actions: actions,
274
+ onClose: onResolve
275
+ });
179
276
  }
180
277
  //# sourceMappingURL=Dialog.js.map