@oxyhq/bloom 0.4.0 → 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 (186) hide show
  1. package/README.md +105 -90
  2. package/lib/commonjs/bottom-sheet/index.js +2 -2
  3. package/lib/commonjs/context-menu/index.js +18 -19
  4. package/lib/commonjs/context-menu/index.js.map +1 -1
  5. package/lib/commonjs/dialog/BloomDialogProvider.js +61 -0
  6. package/lib/commonjs/dialog/BloomDialogProvider.js.map +1 -0
  7. package/lib/commonjs/dialog/BloomDialogProvider.web.js +45 -0
  8. package/lib/commonjs/dialog/BloomDialogProvider.web.js.map +1 -0
  9. package/lib/commonjs/dialog/Dialog.js +197 -100
  10. package/lib/commonjs/dialog/Dialog.js.map +1 -1
  11. package/lib/commonjs/dialog/Dialog.web.js +194 -84
  12. package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
  13. package/lib/commonjs/dialog/SheetShell.js +149 -0
  14. package/lib/commonjs/dialog/SheetShell.js.map +1 -0
  15. package/lib/commonjs/dialog/alert-store.js +116 -0
  16. package/lib/commonjs/dialog/alert-store.js.map +1 -0
  17. package/lib/commonjs/dialog/alert.js +38 -0
  18. package/lib/commonjs/dialog/alert.js.map +1 -0
  19. package/lib/commonjs/dialog/context.js +10 -2
  20. package/lib/commonjs/dialog/context.js.map +1 -1
  21. package/lib/commonjs/dialog/index.js +8 -24
  22. package/lib/commonjs/dialog/index.js.map +1 -1
  23. package/lib/commonjs/dialog/index.web.js +10 -20
  24. package/lib/commonjs/dialog/index.web.js.map +1 -1
  25. package/lib/commonjs/index.js +101 -66
  26. package/lib/commonjs/index.js.map +1 -1
  27. package/lib/commonjs/index.web.js +101 -66
  28. package/lib/commonjs/index.web.js.map +1 -1
  29. package/lib/commonjs/menu/index.js +21 -23
  30. package/lib/commonjs/menu/index.js.map +1 -1
  31. package/lib/commonjs/select/index.js +26 -27
  32. package/lib/commonjs/select/index.js.map +1 -1
  33. package/lib/commonjs/toast/index.js +42 -13
  34. package/lib/commonjs/toast/index.js.map +1 -1
  35. package/lib/commonjs/toast/index.web.js +19 -15
  36. package/lib/commonjs/toast/index.web.js.map +1 -1
  37. package/lib/module/bottom-sheet/index.js +2 -2
  38. package/lib/module/context-menu/index.js +15 -16
  39. package/lib/module/context-menu/index.js.map +1 -1
  40. package/lib/module/dialog/BloomDialogProvider.js +57 -0
  41. package/lib/module/dialog/BloomDialogProvider.js.map +1 -0
  42. package/lib/module/dialog/BloomDialogProvider.web.js +41 -0
  43. package/lib/module/dialog/BloomDialogProvider.web.js.map +1 -0
  44. package/lib/module/dialog/Dialog.js +199 -87
  45. package/lib/module/dialog/Dialog.js.map +1 -1
  46. package/lib/module/dialog/Dialog.web.js +195 -70
  47. package/lib/module/dialog/Dialog.web.js.map +1 -1
  48. package/lib/module/dialog/SheetShell.js +143 -0
  49. package/lib/module/dialog/SheetShell.js.map +1 -0
  50. package/lib/module/dialog/alert-store.js +107 -0
  51. package/lib/module/dialog/alert-store.js.map +1 -0
  52. package/lib/module/dialog/alert.js +35 -0
  53. package/lib/module/dialog/alert.js.map +1 -0
  54. package/lib/module/dialog/context.js +10 -2
  55. package/lib/module/dialog/context.js.map +1 -1
  56. package/lib/module/dialog/index.js +3 -1
  57. package/lib/module/dialog/index.js.map +1 -1
  58. package/lib/module/dialog/index.web.js +9 -7
  59. package/lib/module/dialog/index.web.js.map +1 -1
  60. package/lib/module/index.js +2 -3
  61. package/lib/module/index.js.map +1 -1
  62. package/lib/module/index.web.js +2 -3
  63. package/lib/module/index.web.js.map +1 -1
  64. package/lib/module/menu/index.js +11 -13
  65. package/lib/module/menu/index.js.map +1 -1
  66. package/lib/module/select/index.js +27 -28
  67. package/lib/module/select/index.js.map +1 -1
  68. package/lib/module/toast/index.js +41 -11
  69. package/lib/module/toast/index.js.map +1 -1
  70. package/lib/module/toast/index.web.js +18 -13
  71. package/lib/module/toast/index.web.js.map +1 -1
  72. package/lib/typescript/commonjs/__tests__/Dialog.test.d.ts +2 -0
  73. package/lib/typescript/commonjs/__tests__/Dialog.test.d.ts.map +1 -0
  74. package/lib/typescript/commonjs/bottom-sheet/index.d.ts +1 -1
  75. package/lib/typescript/commonjs/context-menu/index.d.ts +4 -3
  76. package/lib/typescript/commonjs/context-menu/index.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/dialog/BloomDialogProvider.d.ts +27 -0
  78. package/lib/typescript/commonjs/dialog/BloomDialogProvider.d.ts.map +1 -0
  79. package/lib/typescript/commonjs/dialog/BloomDialogProvider.web.d.ts +15 -0
  80. package/lib/typescript/commonjs/dialog/BloomDialogProvider.web.d.ts.map +1 -0
  81. package/lib/typescript/commonjs/dialog/Dialog.d.ts +37 -10
  82. package/lib/typescript/commonjs/dialog/Dialog.d.ts.map +1 -1
  83. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts +26 -10
  84. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
  85. package/lib/typescript/commonjs/dialog/SheetShell.d.ts +31 -0
  86. package/lib/typescript/commonjs/dialog/SheetShell.d.ts.map +1 -0
  87. package/lib/typescript/commonjs/dialog/alert-store.d.ts +70 -0
  88. package/lib/typescript/commonjs/dialog/alert-store.d.ts.map +1 -0
  89. package/lib/typescript/commonjs/dialog/alert.d.ts +27 -0
  90. package/lib/typescript/commonjs/dialog/alert.d.ts.map +1 -0
  91. package/lib/typescript/commonjs/dialog/context.d.ts +7 -0
  92. package/lib/typescript/commonjs/dialog/context.d.ts.map +1 -1
  93. package/lib/typescript/commonjs/dialog/index.d.ts +5 -2
  94. package/lib/typescript/commonjs/dialog/index.d.ts.map +1 -1
  95. package/lib/typescript/commonjs/dialog/index.web.d.ts +5 -2
  96. package/lib/typescript/commonjs/dialog/index.web.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/dialog/types.d.ts +70 -15
  98. package/lib/typescript/commonjs/dialog/types.d.ts.map +1 -1
  99. package/lib/typescript/commonjs/index.d.ts +3 -3
  100. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  101. package/lib/typescript/commonjs/index.web.d.ts +3 -3
  102. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  103. package/lib/typescript/commonjs/menu/index.d.ts +4 -4
  104. package/lib/typescript/commonjs/menu/index.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/select/index.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/toast/index.d.ts +32 -3
  107. package/lib/typescript/commonjs/toast/index.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/toast/index.web.d.ts +14 -7
  109. package/lib/typescript/commonjs/toast/index.web.d.ts.map +1 -1
  110. package/lib/typescript/module/__tests__/Dialog.test.d.ts +2 -0
  111. package/lib/typescript/module/__tests__/Dialog.test.d.ts.map +1 -0
  112. package/lib/typescript/module/bottom-sheet/index.d.ts +1 -1
  113. package/lib/typescript/module/context-menu/index.d.ts +4 -3
  114. package/lib/typescript/module/context-menu/index.d.ts.map +1 -1
  115. package/lib/typescript/module/dialog/BloomDialogProvider.d.ts +27 -0
  116. package/lib/typescript/module/dialog/BloomDialogProvider.d.ts.map +1 -0
  117. package/lib/typescript/module/dialog/BloomDialogProvider.web.d.ts +15 -0
  118. package/lib/typescript/module/dialog/BloomDialogProvider.web.d.ts.map +1 -0
  119. package/lib/typescript/module/dialog/Dialog.d.ts +37 -10
  120. package/lib/typescript/module/dialog/Dialog.d.ts.map +1 -1
  121. package/lib/typescript/module/dialog/Dialog.web.d.ts +26 -10
  122. package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
  123. package/lib/typescript/module/dialog/SheetShell.d.ts +31 -0
  124. package/lib/typescript/module/dialog/SheetShell.d.ts.map +1 -0
  125. package/lib/typescript/module/dialog/alert-store.d.ts +70 -0
  126. package/lib/typescript/module/dialog/alert-store.d.ts.map +1 -0
  127. package/lib/typescript/module/dialog/alert.d.ts +27 -0
  128. package/lib/typescript/module/dialog/alert.d.ts.map +1 -0
  129. package/lib/typescript/module/dialog/context.d.ts +7 -0
  130. package/lib/typescript/module/dialog/context.d.ts.map +1 -1
  131. package/lib/typescript/module/dialog/index.d.ts +5 -2
  132. package/lib/typescript/module/dialog/index.d.ts.map +1 -1
  133. package/lib/typescript/module/dialog/index.web.d.ts +5 -2
  134. package/lib/typescript/module/dialog/index.web.d.ts.map +1 -1
  135. package/lib/typescript/module/dialog/types.d.ts +70 -15
  136. package/lib/typescript/module/dialog/types.d.ts.map +1 -1
  137. package/lib/typescript/module/index.d.ts +3 -3
  138. package/lib/typescript/module/index.d.ts.map +1 -1
  139. package/lib/typescript/module/index.web.d.ts +3 -3
  140. package/lib/typescript/module/index.web.d.ts.map +1 -1
  141. package/lib/typescript/module/menu/index.d.ts +4 -4
  142. package/lib/typescript/module/menu/index.d.ts.map +1 -1
  143. package/lib/typescript/module/select/index.d.ts.map +1 -1
  144. package/lib/typescript/module/toast/index.d.ts +32 -3
  145. package/lib/typescript/module/toast/index.d.ts.map +1 -1
  146. package/lib/typescript/module/toast/index.web.d.ts +14 -7
  147. package/lib/typescript/module/toast/index.web.d.ts.map +1 -1
  148. package/package.json +3 -14
  149. package/src/__tests__/Dialog.test.tsx +177 -0
  150. package/src/bottom-sheet/index.tsx +3 -3
  151. package/src/context-menu/index.tsx +12 -12
  152. package/src/dialog/BloomDialogProvider.tsx +61 -0
  153. package/src/dialog/BloomDialogProvider.web.tsx +46 -0
  154. package/src/dialog/Dialog.tsx +217 -64
  155. package/src/dialog/Dialog.web.tsx +240 -75
  156. package/src/dialog/SheetShell.tsx +154 -0
  157. package/src/dialog/alert-store.ts +126 -0
  158. package/src/dialog/alert.ts +42 -0
  159. package/src/dialog/context.ts +14 -3
  160. package/src/dialog/index.ts +14 -2
  161. package/src/dialog/index.web.ts +20 -8
  162. package/src/dialog/types.ts +73 -16
  163. package/src/index.ts +17 -3
  164. package/src/index.web.ts +17 -3
  165. package/src/menu/index.tsx +13 -17
  166. package/src/select/index.tsx +30 -30
  167. package/src/toast/index.tsx +55 -11
  168. package/src/toast/index.web.tsx +33 -13
  169. package/lib/commonjs/prompt/Prompt.js +0 -267
  170. package/lib/commonjs/prompt/Prompt.js.map +0 -1
  171. package/lib/commonjs/prompt/index.js +0 -61
  172. package/lib/commonjs/prompt/index.js.map +0 -1
  173. package/lib/module/prompt/Prompt.js +0 -250
  174. package/lib/module/prompt/Prompt.js.map +0 -1
  175. package/lib/module/prompt/index.js +0 -4
  176. package/lib/module/prompt/index.js.map +0 -1
  177. package/lib/typescript/commonjs/prompt/Prompt.d.ts +0 -42
  178. package/lib/typescript/commonjs/prompt/Prompt.d.ts.map +0 -1
  179. package/lib/typescript/commonjs/prompt/index.d.ts +0 -3
  180. package/lib/typescript/commonjs/prompt/index.d.ts.map +0 -1
  181. package/lib/typescript/module/prompt/Prompt.d.ts +0 -42
  182. package/lib/typescript/module/prompt/Prompt.d.ts.map +0 -1
  183. package/lib/typescript/module/prompt/index.d.ts +0 -3
  184. package/lib/typescript/module/prompt/index.d.ts.map +0 -1
  185. package/src/prompt/Prompt.tsx +0 -247
  186. package/src/prompt/index.ts +0 -13
@@ -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
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_index","_useTheme","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Outer","children","control","onClose","testID","theme","useTheme","ref","useRef","closeCallbacks","callQueuedCallbacks","useCallback","cb","current","console","error","open","present","close","push","dismiss","handleDismiss","useImperativeHandle","context","useMemo","isWithinDialog","sheetStyle","maxWidth","backgroundColor","colors","background","borderRadius","jsx","BottomSheet","onDismiss","enablePanDownToClose","detached","backdropOpacity","style","Context","Provider","value","View","Inner","header","contentContainerStyle","jsxs","Fragment","paddingTop","paddingHorizontal","paddingBottom","ScrollableInner","props","handleStyles","StyleSheet","create","container","position","width","alignItems","zIndex","height","bar","top","alignSelf","opacity","Handle","useDialogContext","Pressable","onPress","accessibilityLabel","accessibilityHint","hitSlop","bottom","left","right","text","Close","Backdrop"],"sourceRoot":"../../../src","sources":["dialog/Dialog.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_index","_useTheme","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Dialog","control","onClose","testID","title","description","actions","style","label","children","theme","useTheme","ref","useRef","closeCallbacks","titleId","useId","descriptionId","callQueuedCallbacks","useCallback","queued","current","cb","console","error","open","present","close","push","dismiss","handleDismiss","useImperativeHandle","context","useMemo","isWithinDialog","sheetStyle","maxWidth","backgroundColor","colors","background","borderRadius","jsx","BottomSheet","onDismiss","enablePanDownToClose","detached","backdropOpacity","Context","Provider","value","jsxs","View","accessibilityLabel","undefined","paddingTop","paddingHorizontal","paddingBottom","Text","nativeID","fontSize","fontWeight","color","text","lineHeight","textSecondary","length","ActionRow","width","gap","justifyContent","map","action","idx","ActionButton","useDialogContext","shouldCloseOnPress","foreground","getActionPalette","handlePress","onPress","TouchableOpacity","alignItems","opacity","disabled","paddingVertical","activeOpacity","negative","negativeForeground","contrast50","primary","_exhaustive","AutoMountedDialog","onResolve","useDialogControl","useEffect"],"sourceRoot":"../../../src","sources":["dialog/Dialog.tsx"],"mappings":"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","ignoreList":[]}