@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
@@ -1,30 +1,65 @@
1
1
  "use strict";
2
2
 
3
- import React, { useCallback, useImperativeHandle, useMemo, useRef } from 'react';
4
- import { Pressable, StyleSheet, View } from 'react-native';
3
+ import React, { useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef } from 'react';
4
+ import { Text, TouchableOpacity, View } from 'react-native';
5
5
  import { BottomSheet } from "../bottom-sheet/index.js";
6
6
  import { useTheme } from "../theme/use-theme.js";
7
- import { Context, useDialogContext } from "./context.js";
8
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
9
- export { useDialogContext, useDialogControl } from "./context.js";
10
- export function Outer({
11
- children,
7
+ import { Context, useDialogContext, useDialogControl } from "./context.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ /**
10
+ * Native variant of `<Dialog>`.
11
+ *
12
+ * Uses bloom's own `BottomSheet` in `detached` mode as the underlying
13
+ * surface — a floating, dynamically-sized, content-hugging card that
14
+ * gracefully degrades from sheet (phone) to centered card (tablet, via the
15
+ * 500px max-width cap).
16
+ *
17
+ * The component accepts three rendering modes simultaneously:
18
+ *
19
+ * 1. Declarative — `title`, `description`, `actions`. Bloom renders a
20
+ * standard confirm/destructive/cancel layout.
21
+ * 2. Custom children — caller passes JSX, bloom renders the chrome (title
22
+ * + close behaviour) and the children fill the body.
23
+ * 3. Pure children — no `title`/`description`/`actions`; caller owns
24
+ * every pixel.
25
+ *
26
+ * All three share the same dismissal semantics: tapping the backdrop, the
27
+ * drag handle, swiping down, or `control.close()` runs the queued close
28
+ * callbacks once the sheet's exit animation has settled.
29
+ */
30
+ export function Dialog({
12
31
  control,
13
32
  onClose,
14
- testID
33
+ testID,
34
+ title,
35
+ description,
36
+ actions,
37
+ style,
38
+ label,
39
+ children
15
40
  }) {
16
41
  const theme = useTheme();
17
42
  const ref = useRef(null);
18
43
  const closeCallbacks = useRef([]);
44
+ const titleId = useId();
45
+ const descriptionId = useId();
46
+
47
+ // Drain queued close callbacks atomically — capturing the list and
48
+ // resetting it before invocation ensures a callback that synchronously
49
+ // re-opens the dialog (and queues fresh callbacks) does not see the old
50
+ // ones replayed against the new session.
19
51
  const callQueuedCallbacks = useCallback(() => {
20
- for (const cb of closeCallbacks.current) {
52
+ const queued = closeCallbacks.current;
53
+ closeCallbacks.current = [];
54
+ for (const cb of queued) {
21
55
  try {
22
56
  cb();
23
57
  } catch (e) {
24
- console.error('Dialog close callback error:', e);
58
+ if (typeof console !== 'undefined' && console.error) {
59
+ console.error('Dialog close callback error:', e);
60
+ }
25
61
  }
26
62
  }
27
- closeCallbacks.current = [];
28
63
  }, []);
29
64
  const open = useCallback(() => {
30
65
  ref.current?.present();
@@ -35,11 +70,6 @@ export function Outer({
35
70
  }
36
71
  ref.current?.dismiss();
37
72
  }, []);
38
-
39
- // onDismiss fires after the BottomSheet's close animation finishes — this is
40
- // the integration point for the closeCallbacks queue. Consumers (e.g.
41
- // Prompt.Action) rely on the queued callback running AFTER the sheet has
42
- // visually closed so the screen transition feels natural.
43
73
  const handleDismiss = useCallback(() => {
44
74
  callQueuedCallbacks();
45
75
  onClose?.();
@@ -55,9 +85,9 @@ export function Outer({
55
85
  const sheetStyle = useMemo(() => ({
56
86
  maxWidth: 500,
57
87
  backgroundColor: theme.colors.background,
58
- // All four corners rounded — Dialog uses BottomSheet in `detached` mode
59
- // (floating card with safe-area margins), so we round the bottom too
60
- // instead of leaving the default top-only radius.
88
+ // All four corners rounded — bloom's BottomSheet defaults to top-only
89
+ // radius in flush mode, but we use `detached` so the whole card is
90
+ // floating and rounded uniformly.
61
91
  borderRadius: 20
62
92
  }), [theme.colors.background]);
63
93
  return /*#__PURE__*/_jsx(BottomSheet, {
@@ -65,95 +95,177 @@ export function Outer({
65
95
  onDismiss: handleDismiss,
66
96
  enablePanDownToClose: true,
67
97
  detached: true
68
- // Stronger dim so the underlying bottom-sheet's handle/content doesn't
69
- // bleed through when a Dialog/Prompt is stacked over another sheet.
98
+ // Stronger dim when a Dialog is stacked over another sheet so the
99
+ // underlying sheet's handle/content doesn't bleed through.
70
100
  ,
71
101
  backdropOpacity: 0.7,
72
102
  style: sheetStyle,
73
103
  children: /*#__PURE__*/_jsx(Context.Provider, {
74
104
  value: context,
75
- children: /*#__PURE__*/_jsx(View, {
105
+ children: /*#__PURE__*/_jsxs(View, {
76
106
  testID: testID,
77
- style: {
107
+ accessibilityLabel: label,
108
+ "aria-labelledby": title ? titleId : undefined,
109
+ "aria-describedby": description ? descriptionId : undefined,
110
+ style: [
111
+ // Detached BottomSheet already adds `marginBottom: insets.bottom + 16`
112
+ // to the sheet container — the floating card sits ABOVE the
113
+ // system gesture bar, so we don't add `insets.bottom` here.
114
+ {
115
+ paddingTop: 20,
116
+ paddingHorizontal: 20,
117
+ paddingBottom: 20
118
+ }, {
78
119
  backgroundColor: theme.colors.background
79
- },
80
- children: children
120
+ }, style],
121
+ children: [title ? /*#__PURE__*/_jsx(Text, {
122
+ nativeID: titleId,
123
+ style: {
124
+ fontSize: 22,
125
+ fontWeight: '600',
126
+ color: theme.colors.text,
127
+ paddingBottom: description ? 4 : 16,
128
+ lineHeight: 30
129
+ },
130
+ children: title
131
+ }) : null, description ? /*#__PURE__*/_jsx(Text, {
132
+ nativeID: descriptionId,
133
+ style: {
134
+ fontSize: 16,
135
+ color: theme.colors.textSecondary,
136
+ paddingBottom: 16,
137
+ lineHeight: 22
138
+ },
139
+ children: description
140
+ }) : null, children, actions && actions.length > 0 ? /*#__PURE__*/_jsx(ActionRow, {
141
+ actions: actions
142
+ }) : null]
81
143
  })
82
144
  })
83
145
  });
84
146
  }
85
- export function Inner({
86
- children,
87
- style,
88
- header,
89
- contentContainerStyle
147
+ function ActionRow({
148
+ actions
90
149
  }) {
91
- // Dialog renders inside a `detached` BottomSheet, which already adds
92
- // `marginBottom: insets.bottom + 16` to the sheet container — the floating
93
- // card sits ABOVE the system gesture bar, so we don't add `insets.bottom`
94
- // here. Doing so double-padded the bottom on Android edge-to-edge displays.
95
- return /*#__PURE__*/_jsxs(_Fragment, {
96
- children: [header, /*#__PURE__*/_jsx(View, {
97
- style: [{
98
- paddingTop: 20,
99
- paddingHorizontal: 20,
100
- paddingBottom: 20
101
- }, contentContainerStyle, style],
102
- children: children
103
- })]
104
- });
105
- }
106
- export function ScrollableInner(props) {
107
- return /*#__PURE__*/_jsx(Inner, {
108
- ...props
150
+ return /*#__PURE__*/_jsx(View, {
151
+ style: {
152
+ width: '100%',
153
+ gap: 8,
154
+ justifyContent: 'flex-end'
155
+ },
156
+ children: actions.map((action, idx) => /*#__PURE__*/_jsx(ActionButton, {
157
+ action: action
158
+ }, `${action.label}-${idx}`))
109
159
  });
110
160
  }
111
- const handleStyles = StyleSheet.create({
112
- container: {
113
- position: 'absolute',
114
- width: '100%',
115
- alignItems: 'center',
116
- zIndex: 10,
117
- height: 20
118
- },
119
- bar: {
120
- top: 8,
121
- width: 35,
122
- height: 5,
123
- borderRadius: 3,
124
- alignSelf: 'center',
125
- opacity: 0.5
126
- }
127
- });
128
- export function Handle() {
129
- const theme = useTheme();
161
+ function ActionButton({
162
+ action
163
+ }) {
130
164
  const {
131
165
  close
132
166
  } = useDialogContext();
133
- return /*#__PURE__*/_jsx(View, {
134
- style: handleStyles.container,
135
- children: /*#__PURE__*/_jsx(Pressable, {
136
- onPress: () => close(),
137
- accessibilityLabel: "Dismiss",
138
- accessibilityHint: "Tap to close the dialog",
139
- hitSlop: {
140
- top: 10,
141
- bottom: 10,
142
- left: 40,
143
- right: 40
167
+ const theme = useTheme();
168
+ const color = action.color ?? 'default';
169
+ const shouldCloseOnPress = action.shouldCloseOnPress ?? true;
170
+ const {
171
+ background,
172
+ foreground
173
+ } = getActionPalette(color, theme.colors);
174
+ const handlePress = useCallback(e => {
175
+ const onPress = action.onPress;
176
+ if (color === 'cancel') {
177
+ // Cancel always dismisses; consumer's onPress (rare) runs after.
178
+ close(onPress ? () => onPress(e) : undefined);
179
+ return;
180
+ }
181
+ if (shouldCloseOnPress) {
182
+ close(onPress ? () => onPress(e) : undefined);
183
+ } else {
184
+ onPress?.(e);
185
+ }
186
+ }, [action.onPress, close, color, shouldCloseOnPress]);
187
+ return /*#__PURE__*/_jsx(TouchableOpacity, {
188
+ style: {
189
+ borderRadius: 9999,
190
+ alignItems: 'center',
191
+ justifyContent: 'center',
192
+ backgroundColor: background,
193
+ opacity: action.disabled ? 0.5 : 1,
194
+ paddingVertical: 12,
195
+ paddingHorizontal: 24
196
+ },
197
+ onPress: handlePress,
198
+ disabled: action.disabled,
199
+ activeOpacity: 0.7,
200
+ testID: action.testID,
201
+ children: /*#__PURE__*/_jsx(Text, {
202
+ style: {
203
+ fontSize: 16,
204
+ fontWeight: '500',
205
+ color: foreground
144
206
  },
145
- children: /*#__PURE__*/_jsx(View, {
146
- style: [handleStyles.bar, {
147
- backgroundColor: theme.colors.text
148
- }]
149
- })
207
+ children: action.label
150
208
  })
151
209
  });
152
210
  }
153
- export function Close() {
154
- return null;
211
+ function getActionPalette(color, colors) {
212
+ switch (color) {
213
+ case 'destructive':
214
+ return {
215
+ background: colors.negative,
216
+ foreground: colors.negativeForeground
217
+ };
218
+ case 'cancel':
219
+ return {
220
+ background: colors.contrast50,
221
+ foreground: colors.text
222
+ };
223
+ case 'default':
224
+ return {
225
+ background: colors.primary,
226
+ foreground: '#FFFFFF'
227
+ };
228
+ /* c8 ignore next 2 -- TS exhaustiveness check guards this branch */
229
+ default:
230
+ {
231
+ const _exhaustive = color;
232
+ return {
233
+ background: colors.primary,
234
+ foreground: '#FFFFFF'
235
+ };
236
+ }
237
+ }
155
238
  }
156
- export function Backdrop() {
157
- return null;
239
+
240
+ /**
241
+ * Helper used by the imperative `alert()` API. Mounts a `<Dialog>` against
242
+ * a fresh control and presents it immediately. `onResolve` is invoked
243
+ * exactly once when the dialog finishes closing (regardless of how the
244
+ * dismissal happened).
245
+ *
246
+ * Kept private to the dialog module — `alert()` is the public surface.
247
+ */
248
+ export function AutoMountedDialog({
249
+ title,
250
+ description,
251
+ actions,
252
+ onResolve
253
+ }) {
254
+ const control = useDialogControl();
255
+
256
+ // `control` is referentially stable for the lifetime of the component
257
+ // (memoised by `useDialogControl` on `[id]`), so this effect runs exactly
258
+ // once per mount — present-on-mount semantics for an `alert()` call
259
+ // without re-presenting on subsequent renders.
260
+ useEffect(() => {
261
+ control.open();
262
+ }, [control]);
263
+ return /*#__PURE__*/_jsx(Dialog, {
264
+ control: control,
265
+ title: title,
266
+ description: description,
267
+ actions: actions,
268
+ onClose: onResolve
269
+ });
158
270
  }
159
271
  //# sourceMappingURL=Dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useImperativeHandle","useMemo","useRef","Pressable","StyleSheet","View","BottomSheet","useTheme","Context","useDialogContext","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","useDialogControl","Outer","children","control","onClose","testID","theme","ref","closeCallbacks","callQueuedCallbacks","cb","current","e","console","error","open","present","close","push","dismiss","handleDismiss","context","isWithinDialog","sheetStyle","maxWidth","backgroundColor","colors","background","borderRadius","onDismiss","enablePanDownToClose","detached","backdropOpacity","style","Provider","value","Inner","header","contentContainerStyle","paddingTop","paddingHorizontal","paddingBottom","ScrollableInner","props","handleStyles","create","container","position","width","alignItems","zIndex","height","bar","top","alignSelf","opacity","Handle","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","useCallback","useEffect","useId","useImperativeHandle","useMemo","useRef","Text","TouchableOpacity","View","BottomSheet","useTheme","Context","useDialogContext","useDialogControl","jsx","_jsx","jsxs","_jsxs","Dialog","control","onClose","testID","title","description","actions","style","label","children","theme","ref","closeCallbacks","titleId","descriptionId","callQueuedCallbacks","queued","current","cb","e","console","error","open","present","close","push","dismiss","handleDismiss","context","isWithinDialog","sheetStyle","maxWidth","backgroundColor","colors","background","borderRadius","onDismiss","enablePanDownToClose","detached","backdropOpacity","Provider","value","accessibilityLabel","undefined","paddingTop","paddingHorizontal","paddingBottom","nativeID","fontSize","fontWeight","color","text","lineHeight","textSecondary","length","ActionRow","width","gap","justifyContent","map","action","idx","ActionButton","shouldCloseOnPress","foreground","getActionPalette","handlePress","onPress","alignItems","opacity","disabled","paddingVertical","activeOpacity","negative","negativeForeground","contrast50","primary","_exhaustive","AutoMountedDialog","onResolve"],"sourceRoot":"../../../src","sources":["dialog/Dialog.tsx"],"mappings":"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","ignoreList":[]}