@oxyhq/bloom 0.6.9 → 0.6.10

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 (75) hide show
  1. package/lib/commonjs/dialog/CenteredDialog.js +242 -0
  2. package/lib/commonjs/dialog/CenteredDialog.js.map +1 -0
  3. package/lib/commonjs/dialog/CenteredDialog.web.js +326 -0
  4. package/lib/commonjs/dialog/CenteredDialog.web.js.map +1 -0
  5. package/lib/commonjs/dialog/centered-dialog-tokens.js +62 -0
  6. package/lib/commonjs/dialog/centered-dialog-tokens.js.map +1 -0
  7. package/lib/commonjs/dialog/centered-dialog-types.js +6 -0
  8. package/lib/commonjs/dialog/centered-dialog-types.js.map +1 -0
  9. package/lib/commonjs/dialog/index.js +13 -0
  10. package/lib/commonjs/dialog/index.js.map +1 -1
  11. package/lib/commonjs/dialog/index.web.js +19 -0
  12. package/lib/commonjs/dialog/index.web.js.map +1 -1
  13. package/lib/commonjs/index.js +14 -0
  14. package/lib/commonjs/index.js.map +1 -1
  15. package/lib/commonjs/index.web.js +14 -0
  16. package/lib/commonjs/index.web.js.map +1 -1
  17. package/lib/module/dialog/CenteredDialog.js +236 -0
  18. package/lib/module/dialog/CenteredDialog.js.map +1 -0
  19. package/lib/module/dialog/CenteredDialog.web.js +320 -0
  20. package/lib/module/dialog/CenteredDialog.web.js.map +1 -0
  21. package/lib/module/dialog/centered-dialog-tokens.js +58 -0
  22. package/lib/module/dialog/centered-dialog-tokens.js.map +1 -0
  23. package/lib/module/dialog/centered-dialog-types.js +4 -0
  24. package/lib/module/dialog/centered-dialog-types.js.map +1 -0
  25. package/lib/module/dialog/index.js +1 -0
  26. package/lib/module/dialog/index.js.map +1 -1
  27. package/lib/module/dialog/index.web.js +1 -0
  28. package/lib/module/dialog/index.web.js.map +1 -1
  29. package/lib/module/index.js +1 -1
  30. package/lib/module/index.js.map +1 -1
  31. package/lib/module/index.web.js +1 -1
  32. package/lib/module/index.web.js.map +1 -1
  33. package/lib/typescript/commonjs/dialog/CenteredDialog.d.ts +20 -0
  34. package/lib/typescript/commonjs/dialog/CenteredDialog.d.ts.map +1 -0
  35. package/lib/typescript/commonjs/dialog/CenteredDialog.web.d.ts +29 -0
  36. package/lib/typescript/commonjs/dialog/CenteredDialog.web.d.ts.map +1 -0
  37. package/lib/typescript/commonjs/dialog/centered-dialog-tokens.d.ts +47 -0
  38. package/lib/typescript/commonjs/dialog/centered-dialog-tokens.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/dialog/centered-dialog-types.d.ts +70 -0
  40. package/lib/typescript/commonjs/dialog/centered-dialog-types.d.ts.map +1 -0
  41. package/lib/typescript/commonjs/dialog/index.d.ts +2 -0
  42. package/lib/typescript/commonjs/dialog/index.d.ts.map +1 -1
  43. package/lib/typescript/commonjs/dialog/index.web.d.ts +2 -0
  44. package/lib/typescript/commonjs/dialog/index.web.d.ts.map +1 -1
  45. package/lib/typescript/commonjs/index.d.ts +2 -2
  46. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  47. package/lib/typescript/commonjs/index.web.d.ts +2 -2
  48. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  49. package/lib/typescript/module/dialog/CenteredDialog.d.ts +20 -0
  50. package/lib/typescript/module/dialog/CenteredDialog.d.ts.map +1 -0
  51. package/lib/typescript/module/dialog/CenteredDialog.web.d.ts +29 -0
  52. package/lib/typescript/module/dialog/CenteredDialog.web.d.ts.map +1 -0
  53. package/lib/typescript/module/dialog/centered-dialog-tokens.d.ts +47 -0
  54. package/lib/typescript/module/dialog/centered-dialog-tokens.d.ts.map +1 -0
  55. package/lib/typescript/module/dialog/centered-dialog-types.d.ts +70 -0
  56. package/lib/typescript/module/dialog/centered-dialog-types.d.ts.map +1 -0
  57. package/lib/typescript/module/dialog/index.d.ts +2 -0
  58. package/lib/typescript/module/dialog/index.d.ts.map +1 -1
  59. package/lib/typescript/module/dialog/index.web.d.ts +2 -0
  60. package/lib/typescript/module/dialog/index.web.d.ts.map +1 -1
  61. package/lib/typescript/module/index.d.ts +2 -2
  62. package/lib/typescript/module/index.d.ts.map +1 -1
  63. package/lib/typescript/module/index.web.d.ts +2 -2
  64. package/lib/typescript/module/index.web.d.ts.map +1 -1
  65. package/package.json +1 -1
  66. package/src/__tests__/CenteredDialog.test.tsx +108 -0
  67. package/src/dialog/CenteredDialog.stories.tsx +125 -0
  68. package/src/dialog/CenteredDialog.tsx +295 -0
  69. package/src/dialog/CenteredDialog.web.tsx +370 -0
  70. package/src/dialog/centered-dialog-tokens.ts +68 -0
  71. package/src/dialog/centered-dialog-types.ts +70 -0
  72. package/src/dialog/index.ts +2 -0
  73. package/src/dialog/index.web.ts +6 -0
  74. package/src/index.ts +3 -0
  75. package/src/index.web.ts +3 -0
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+
3
+ import React, { useEffect, useMemo, useState } from 'react';
4
+ import { Pressable, ScrollView, StyleSheet, View } from 'react-native';
5
+ import { RemoveScrollBar } from 'react-remove-scroll-bar';
6
+ import { useInteractionStates } from "../hooks/useInteractionState.js";
7
+ import { TimesLarge_Stroke2_Corner0_Rounded as CloseIcon } from "../icons/Times.js";
8
+ import { Portal } from "../portal/index.web.js";
9
+ import { useTheme } from "../theme/use-theme.js";
10
+ import { Text } from "../typography/index.js";
11
+ import { CARD_RADIUS, DEFAULT_MAX_WIDTH, MAX_HEIGHT_FRACTION, resolveSpacing, VIEWPORT_GUTTER } from "./centered-dialog-tokens.js";
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ const FADE_OUT_DURATION = 150;
14
+ const CLOSE_HIT_SLOP = {
15
+ top: 8,
16
+ bottom: 8,
17
+ left: 8,
18
+ right: 8
19
+ };
20
+
21
+ /** Stable testID for the dimmed backdrop. Overridden when a `testID` is set. */
22
+ export const CENTERED_DIALOG_BACKDROP_TESTID = 'bloom-centered-dialog-backdrop';
23
+ const stopPropagation = e => e.stopPropagation();
24
+
25
+ /**
26
+ * Web variant of `<CenteredDialog>`.
27
+ *
28
+ * A centered modal card rendered into the Bloom Portal at the end of
29
+ * `document.body`. Identical prop surface to native — `visible`, `onClose`,
30
+ * `title`, `compact`, etc. — so call sites are platform agnostic.
31
+ *
32
+ * Differences from the native fork (necessary, not behavioural):
33
+ * - Portal + `RemoveScrollBar` lock the underlying page while open.
34
+ * - `Escape` dismisses (when `dismissible`).
35
+ * - A `role="dialog"` panel with `aria-label`/`aria-modal` for a11y.
36
+ * - A CSS fade/zoom keyframe matches the native modal's `fade` animation;
37
+ * the keyframes are injected once (idempotent) into `<head>`.
38
+ *
39
+ * The backdrop is a sibling element BEHIND the card, and the card stops
40
+ * click/press propagation so a tap on the card never dismisses.
41
+ */
42
+ export function CenteredDialog({
43
+ visible,
44
+ onClose,
45
+ title,
46
+ dismissible = true,
47
+ maxWidth = DEFAULT_MAX_WIDTH,
48
+ compact = true,
49
+ showClose,
50
+ children,
51
+ footer,
52
+ accessibilityLabel,
53
+ closeAccessibilityLabel = 'Close dialog',
54
+ backdropAccessibilityLabel = 'Dismiss dialog',
55
+ cardStyle,
56
+ contentStyle,
57
+ testID
58
+ }) {
59
+ const theme = useTheme();
60
+ // `rendered` keeps the dialog mounted through its fade-out so a controlled
61
+ // `visible` flip to `false` still plays an exit animation (matching the
62
+ // native `Modal animationType="fade"`, which animates both directions).
63
+ const [rendered, setRendered] = useState(visible);
64
+ const isClosing = rendered && !visible;
65
+ useKeyframes();
66
+
67
+ // Mount immediately when opened; defer unmount until the exit animation
68
+ // has played when closed.
69
+ useEffect(() => {
70
+ if (visible) {
71
+ setRendered(true);
72
+ return;
73
+ }
74
+ if (!rendered) return;
75
+ const timer = setTimeout(() => setRendered(false), FADE_OUT_DURATION);
76
+ return () => clearTimeout(timer);
77
+ }, [visible, rendered]);
78
+
79
+ // Escape-to-close while open. Scoped to the open lifetime so stacked
80
+ // dialogs don't fight for the keydown — the top-most one wins via
81
+ // document-level event order.
82
+ useEffect(() => {
83
+ if (!visible || !dismissible || typeof document === 'undefined') return;
84
+ const handler = e => {
85
+ if (e.key === 'Escape') {
86
+ e.stopPropagation();
87
+ onClose();
88
+ }
89
+ };
90
+ document.addEventListener('keydown', handler);
91
+ return () => document.removeEventListener('keydown', handler);
92
+ }, [visible, dismissible, onClose]);
93
+ const spacing = useMemo(() => resolveSpacing(compact), [compact]);
94
+ const resolvedShowClose = showClose ?? Boolean(title);
95
+ const hasHeader = Boolean(title) || resolvedShowClose;
96
+ if (!rendered) return null;
97
+
98
+ // While closing, the backdrop must not re-trigger onClose (it's mid-exit).
99
+ const handleBackdropPress = dismissible && !isClosing ? onClose : undefined;
100
+ return /*#__PURE__*/_jsxs(Portal, {
101
+ children: [/*#__PURE__*/_jsx(RemoveScrollBar, {}), /*#__PURE__*/_jsxs(View, {
102
+ style: [styles.root, {
103
+ padding: VIEWPORT_GUTTER
104
+ }],
105
+ children: [/*#__PURE__*/_jsx(Pressable, {
106
+ testID: testID ? `${testID}-backdrop` : CENTERED_DIALOG_BACKDROP_TESTID,
107
+ onPress: handleBackdropPress,
108
+ disabled: !dismissible,
109
+ accessibilityRole: "button",
110
+ accessibilityLabel: backdropAccessibilityLabel,
111
+ style: [styles.backdrop, {
112
+ backgroundColor: theme.colors.overlay
113
+ }, backdropAnimation(isClosing)]
114
+ }), /*#__PURE__*/_jsxs(View, {
115
+ testID: testID,
116
+ role: "dialog",
117
+ "aria-modal": true,
118
+ "aria-label": accessibilityLabel ?? title,
119
+ onStartShouldSetResponder: returnsTrue,
120
+ onResponderRelease: stopPropagation,
121
+ onClick: stopPropagation,
122
+ style: [styles.card, {
123
+ maxWidth,
124
+ maxHeight: `${MAX_HEIGHT_FRACTION * 100}%`,
125
+ backgroundColor: theme.colors.card,
126
+ borderColor: theme.colors.border,
127
+ shadowColor: theme.colors.shadow
128
+ }, cardAnimation(isClosing), cardStyle],
129
+ children: [hasHeader ? /*#__PURE__*/_jsx(DialogHeader, {
130
+ title: title,
131
+ showClose: resolvedShowClose,
132
+ padding: spacing.pad,
133
+ gap: spacing.headerGap,
134
+ closeAccessibilityLabel: closeAccessibilityLabel,
135
+ onClose: onClose
136
+ }) : null, /*#__PURE__*/_jsx(ScrollView, {
137
+ style: styles.bodyScroll,
138
+ contentContainerStyle: [{
139
+ padding: spacing.pad,
140
+ paddingTop: hasHeader ? spacing.headerGap : spacing.pad,
141
+ gap: spacing.contentGap
142
+ }, contentStyle],
143
+ showsVerticalScrollIndicator: false,
144
+ keyboardShouldPersistTaps: "handled",
145
+ children: children
146
+ }), footer ? /*#__PURE__*/_jsx(View, {
147
+ style: [styles.footer, {
148
+ padding: spacing.pad,
149
+ paddingTop: spacing.footerGap,
150
+ borderTopColor: theme.colors.borderLight
151
+ }],
152
+ children: footer
153
+ }) : null]
154
+ })]
155
+ })]
156
+ });
157
+ }
158
+ function DialogHeader({
159
+ title,
160
+ showClose,
161
+ padding,
162
+ gap,
163
+ closeAccessibilityLabel,
164
+ onClose
165
+ }) {
166
+ const theme = useTheme();
167
+ return /*#__PURE__*/_jsxs(View, {
168
+ style: [styles.header, {
169
+ paddingHorizontal: padding,
170
+ paddingTop: padding,
171
+ gap
172
+ }],
173
+ children: [title ? /*#__PURE__*/_jsx(Text, {
174
+ accessibilityRole: "header",
175
+ numberOfLines: 2,
176
+ style: [styles.title, {
177
+ color: theme.colors.text
178
+ }],
179
+ children: title
180
+ }) : /*#__PURE__*/_jsx(View, {
181
+ style: styles.titleSpacer
182
+ }), showClose ? /*#__PURE__*/_jsx(CloseButton, {
183
+ accessibilityLabel: closeAccessibilityLabel,
184
+ onPress: onClose
185
+ }) : null]
186
+ });
187
+ }
188
+ function CloseButton({
189
+ accessibilityLabel,
190
+ onPress
191
+ }) {
192
+ const theme = useTheme();
193
+ const {
194
+ hovered,
195
+ pressed,
196
+ hoverHandlers,
197
+ pressHandlers
198
+ } = useInteractionStates();
199
+ return /*#__PURE__*/_jsx(Pressable, {
200
+ onPress: onPress,
201
+ ...hoverHandlers,
202
+ ...pressHandlers,
203
+ hitSlop: CLOSE_HIT_SLOP,
204
+ accessibilityRole: "button",
205
+ accessibilityLabel: accessibilityLabel,
206
+ style: [styles.closeButton, {
207
+ backgroundColor: theme.colors.contrast50
208
+ }, (hovered || pressed) && styles.closeButtonActive],
209
+ children: /*#__PURE__*/_jsx(CloseIcon, {
210
+ size: "sm",
211
+ fill: theme.colors.textSecondary
212
+ })
213
+ });
214
+ }
215
+ const returnsTrue = () => true;
216
+ function backdropAnimation(isClosing) {
217
+ return isClosing ? {
218
+ animation: `bloomCenteredDialogFadeOut ease-in ${FADE_OUT_DURATION}ms forwards`
219
+ } : {
220
+ animation: 'bloomCenteredDialogFadeIn ease-out 150ms'
221
+ };
222
+ }
223
+ function cardAnimation(isClosing) {
224
+ return isClosing ? {
225
+ animation: `bloomCenteredDialogZoomOut ease-in ${FADE_OUT_DURATION}ms forwards`
226
+ } : {
227
+ animation: 'bloomCenteredDialogZoomIn cubic-bezier(0.16, 1, 0.3, 1) 200ms'
228
+ };
229
+ }
230
+ const KEYFRAMES_ID = 'bloom-centered-dialog-keyframes';
231
+
232
+ /**
233
+ * CSS keyframes powering the web enter/exit animation. Injected once into
234
+ * `<head>` on first mount (keyed by id so re-mounts and multiple dialogs
235
+ * don't duplicate the rule). Mirrors the native modal's `fade` feel with a
236
+ * subtle zoom on the card.
237
+ */
238
+ export const BLOOM_CENTERED_DIALOG_CSS = `
239
+ @keyframes bloomCenteredDialogFadeIn { from { opacity: 0; } to { opacity: 1; } }
240
+ @keyframes bloomCenteredDialogFadeOut { from { opacity: 1; } to { opacity: 0; } }
241
+ @keyframes bloomCenteredDialogZoomIn { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }
242
+ @keyframes bloomCenteredDialogZoomOut { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.96); } }
243
+ `;
244
+ function useKeyframes() {
245
+ useEffect(() => {
246
+ if (typeof document === 'undefined') return;
247
+ if (document.getElementById(KEYFRAMES_ID)) return;
248
+ const style = document.createElement('style');
249
+ style.id = KEYFRAMES_ID;
250
+ style.textContent = BLOOM_CENTERED_DIALOG_CSS;
251
+ document.head.appendChild(style);
252
+ }, []);
253
+ }
254
+ const styles = StyleSheet.create({
255
+ root: {
256
+ position: 'fixed',
257
+ top: 0,
258
+ left: 0,
259
+ right: 0,
260
+ bottom: 0,
261
+ zIndex: 50,
262
+ alignItems: 'center',
263
+ justifyContent: 'center',
264
+ pointerEvents: 'auto'
265
+ },
266
+ backdrop: {
267
+ position: 'fixed',
268
+ top: 0,
269
+ left: 0,
270
+ right: 0,
271
+ bottom: 0
272
+ },
273
+ card: {
274
+ position: 'relative',
275
+ width: '100%',
276
+ borderRadius: CARD_RADIUS,
277
+ borderWidth: 1,
278
+ overflow: 'hidden',
279
+ shadowOpacity: 0.18,
280
+ shadowRadius: 24,
281
+ shadowOffset: {
282
+ width: 0,
283
+ height: 8
284
+ },
285
+ zIndex: 60
286
+ },
287
+ header: {
288
+ flexDirection: 'row',
289
+ alignItems: 'flex-start',
290
+ justifyContent: 'space-between'
291
+ },
292
+ title: {
293
+ flex: 1,
294
+ fontSize: 17,
295
+ fontWeight: '700',
296
+ lineHeight: 22
297
+ },
298
+ titleSpacer: {
299
+ flex: 1
300
+ },
301
+ closeButton: {
302
+ width: 28,
303
+ height: 28,
304
+ borderRadius: 14,
305
+ alignItems: 'center',
306
+ justifyContent: 'center',
307
+ cursor: 'pointer'
308
+ },
309
+ closeButtonActive: {
310
+ opacity: 0.7
311
+ },
312
+ bodyScroll: {
313
+ flexGrow: 0,
314
+ flexShrink: 1
315
+ },
316
+ footer: {
317
+ borderTopWidth: 1
318
+ }
319
+ });
320
+ //# sourceMappingURL=CenteredDialog.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useMemo","useState","Pressable","ScrollView","StyleSheet","View","RemoveScrollBar","useInteractionStates","TimesLarge_Stroke2_Corner0_Rounded","CloseIcon","Portal","useTheme","Text","CARD_RADIUS","DEFAULT_MAX_WIDTH","MAX_HEIGHT_FRACTION","resolveSpacing","VIEWPORT_GUTTER","jsx","_jsx","jsxs","_jsxs","FADE_OUT_DURATION","CLOSE_HIT_SLOP","top","bottom","left","right","CENTERED_DIALOG_BACKDROP_TESTID","stopPropagation","e","CenteredDialog","visible","onClose","title","dismissible","maxWidth","compact","showClose","children","footer","accessibilityLabel","closeAccessibilityLabel","backdropAccessibilityLabel","cardStyle","contentStyle","testID","theme","rendered","setRendered","isClosing","useKeyframes","timer","setTimeout","clearTimeout","document","handler","key","addEventListener","removeEventListener","spacing","resolvedShowClose","Boolean","hasHeader","handleBackdropPress","undefined","style","styles","root","padding","onPress","disabled","accessibilityRole","backdrop","backgroundColor","colors","overlay","backdropAnimation","role","onStartShouldSetResponder","returnsTrue","onResponderRelease","onClick","card","maxHeight","borderColor","border","shadowColor","shadow","cardAnimation","DialogHeader","pad","gap","headerGap","bodyScroll","contentContainerStyle","paddingTop","contentGap","showsVerticalScrollIndicator","keyboardShouldPersistTaps","footerGap","borderTopColor","borderLight","header","paddingHorizontal","numberOfLines","color","text","titleSpacer","CloseButton","hovered","pressed","hoverHandlers","pressHandlers","hitSlop","closeButton","contrast50","closeButtonActive","size","fill","textSecondary","animation","KEYFRAMES_ID","BLOOM_CENTERED_DIALOG_CSS","getElementById","createElement","id","textContent","head","appendChild","create","position","zIndex","alignItems","justifyContent","pointerEvents","width","borderRadius","borderWidth","overflow","shadowOpacity","shadowRadius","shadowOffset","height","flexDirection","flex","fontSize","fontWeight","lineHeight","cursor","opacity","flexGrow","flexShrink","borderTopWidth"],"sourceRoot":"../../../src","sources":["dialog/CenteredDialog.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ import { borderRadius, space } from "../styles/tokens.js";
4
+
5
+ /**
6
+ * Shared layout constants for `<CenteredDialog>`, kept in one module so the
7
+ * native and web forks render identically. All values are Bloom theme tokens
8
+ * (`styles/tokens`) — no ad-hoc magic numbers.
9
+ *
10
+ * COMPACT is the priority: the `compact` spacing set is the default and is
11
+ * deliberately tight (≈`space.md`), so the card reads snug out of the box.
12
+ * The `cozy` set is the opt-out (`compact={false}`) for roomier dialogs.
13
+ */
14
+
15
+ /** Default max card width — comfortable for a compact dialog. */
16
+ export const DEFAULT_MAX_WIDTH = 440;
17
+
18
+ /** Card height is capped at this fraction of the viewport; body scrolls. */
19
+ export const MAX_HEIGHT_FRACTION = 0.8;
20
+
21
+ /** Card corner radius (token: `borderRadius.lg` = 16). */
22
+ export const CARD_RADIUS = borderRadius.lg;
23
+
24
+ /** Outer gutter between the card edge and the viewport edge (token `space.lg`). */
25
+ export const VIEWPORT_GUTTER = space.lg;
26
+ /**
27
+ * Compact (default) — tight, snug spacing built on `space.md` (12).
28
+ *
29
+ * pad = space.md (12)
30
+ * headerGap = space.sm (8)
31
+ * footerGap = space.md (12)
32
+ * contentGap = space.sm (8)
33
+ */
34
+ export const COMPACT_SPACING = {
35
+ pad: space.md,
36
+ headerGap: space.sm,
37
+ footerGap: space.md,
38
+ contentGap: space.sm
39
+ };
40
+
41
+ /**
42
+ * Cozy (`compact={false}`) — roomier spacing built on `space.xl` (20).
43
+ *
44
+ * pad = space.xl (20)
45
+ * headerGap = space.md (12)
46
+ * footerGap = space.lg (16)
47
+ * contentGap = space.md (12)
48
+ */
49
+ export const COZY_SPACING = {
50
+ pad: space.xl,
51
+ headerGap: space.md,
52
+ footerGap: space.lg,
53
+ contentGap: space.md
54
+ };
55
+ export function resolveSpacing(compact) {
56
+ return compact ? COMPACT_SPACING : COZY_SPACING;
57
+ }
58
+ //# sourceMappingURL=centered-dialog-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["borderRadius","space","DEFAULT_MAX_WIDTH","MAX_HEIGHT_FRACTION","CARD_RADIUS","lg","VIEWPORT_GUTTER","COMPACT_SPACING","pad","md","headerGap","sm","footerGap","contentGap","COZY_SPACING","xl","resolveSpacing","compact"],"sourceRoot":"../../../src","sources":["dialog/centered-dialog-tokens.ts"],"mappings":";;AAAA,SAASA,YAAY,EAAEC,KAAK,QAAQ,qBAAkB;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,MAAMC,iBAAiB,GAAG,GAAG;;AAEpC;AACA,OAAO,MAAMC,mBAAmB,GAAG,GAAG;;AAEtC;AACA,OAAO,MAAMC,WAAW,GAAGJ,YAAY,CAACK,EAAE;;AAE1C;AACA,OAAO,MAAMC,eAAe,GAAGL,KAAK,CAACI,EAAE;AAavC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,eAA8B,GAAG;EAC5CC,GAAG,EAAEP,KAAK,CAACQ,EAAE;EACbC,SAAS,EAAET,KAAK,CAACU,EAAE;EACnBC,SAAS,EAAEX,KAAK,CAACQ,EAAE;EACnBI,UAAU,EAAEZ,KAAK,CAACU;AACpB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,YAA2B,GAAG;EACzCN,GAAG,EAAEP,KAAK,CAACc,EAAE;EACbL,SAAS,EAAET,KAAK,CAACQ,EAAE;EACnBG,SAAS,EAAEX,KAAK,CAACI,EAAE;EACnBQ,UAAU,EAAEZ,KAAK,CAACQ;AACpB,CAAC;AAED,OAAO,SAASO,cAAcA,CAACC,OAAgB,EAAiB;EAC9D,OAAOA,OAAO,GAAGV,eAAe,GAAGO,YAAY;AACjD","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=centered-dialog-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["dialog/centered-dialog-types.ts"],"mappings":"","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  export { Dialog } from './Dialog';
4
+ export { CenteredDialog, CENTERED_DIALOG_BACKDROP_TESTID } from './CenteredDialog';
4
5
  export { BloomDialogProvider } from './BloomDialogProvider';
5
6
  export { alert } from "./alert.js";
6
7
  export { useDialogContext, useDialogControl } from "./context.js";
@@ -1 +1 @@
1
- {"version":3,"names":["Dialog","BloomDialogProvider","alert","useDialogContext","useDialogControl"],"sourceRoot":"../../../src","sources":["dialog/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,UAAU;AACjC,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,KAAK,QAAQ,YAAS;AAC/B,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,cAAW","ignoreList":[]}
1
+ {"version":3,"names":["Dialog","CenteredDialog","CENTERED_DIALOG_BACKDROP_TESTID","BloomDialogProvider","alert","useDialogContext","useDialogControl"],"sourceRoot":"../../../src","sources":["dialog/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,UAAU;AACjC,SAASC,cAAc,EAAEC,+BAA+B,QAAQ,kBAAkB;AAClF,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,KAAK,QAAQ,YAAS;AAC/B,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,cAAW","ignoreList":[]}
@@ -11,6 +11,7 @@
11
11
  // `package.json`'s `exports['./dialog']`; native bundlers fall through to
12
12
  // the React Native build above.
13
13
  export { Dialog, BLOOM_DIALOG_CSS } from "./Dialog.web.js";
14
+ export { CenteredDialog, BLOOM_CENTERED_DIALOG_CSS, CENTERED_DIALOG_BACKDROP_TESTID } from "./CenteredDialog.web.js";
14
15
  export { BloomDialogProvider } from "./BloomDialogProvider.web.js";
15
16
  export { alert } from "./alert.js";
16
17
  export { useDialogContext, useDialogControl } from "./context.js";
@@ -1 +1 @@
1
- {"version":3,"names":["Dialog","BLOOM_DIALOG_CSS","BloomDialogProvider","alert","useDialogContext","useDialogControl"],"sourceRoot":"../../../src","sources":["dialog/index.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,MAAM,EAAEC,gBAAgB,QAAQ,iBAAc;AACvD,SAASC,mBAAmB,QAAQ,8BAA2B;AAC/D,SAASC,KAAK,QAAQ,YAAS;AAC/B,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,cAAW","ignoreList":[]}
1
+ {"version":3,"names":["Dialog","BLOOM_DIALOG_CSS","CenteredDialog","BLOOM_CENTERED_DIALOG_CSS","CENTERED_DIALOG_BACKDROP_TESTID","BloomDialogProvider","alert","useDialogContext","useDialogControl"],"sourceRoot":"../../../src","sources":["dialog/index.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,MAAM,EAAEC,gBAAgB,QAAQ,iBAAc;AACvD,SACEC,cAAc,EACdC,yBAAyB,EACzBC,+BAA+B,QAC1B,yBAAsB;AAC7B,SAASC,mBAAmB,QAAQ,8BAA2B;AAC/D,SAASC,KAAK,QAAQ,YAAS;AAC/B,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,cAAW","ignoreList":[]}
@@ -19,7 +19,7 @@ export { sizes as iconSizes, useCommonSVGProps } from "./icons/common.js";
19
19
 
20
20
  // Core components
21
21
  export * from './portal';
22
- export { Dialog, BloomDialogProvider, alert, useDialogContext, useDialogControl } from './dialog';
22
+ export { Dialog, CenteredDialog, CENTERED_DIALOG_BACKDROP_TESTID, BloomDialogProvider, alert, useDialogContext, useDialogControl } from './dialog';
23
23
  export * from "./button/index.js";
24
24
  export * from "./grouped-buttons/index.js";
25
25
  export * from "./divider/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":["atoms","flatten","tokens","web","native","ios","android","platform","select","useInteractionState","useDelayedLoading","useThrottledValue","Icons","sizes","iconSizes","useCommonSVGProps","Dialog","BloomDialogProvider","alert","useDialogContext","useDialogControl","ErrorBoundary","PromptInput","toast","Typography","Skeleton","Grid","Fill","IconCircle","TextField","SegmentedControl","SearchInput","BottomSheet","Tabs","Accordion","Admonition","Menu","Tooltip","Select","ContextMenu","Code","Fonts"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,cAAc,kBAAS;;AAEvB;AACA,SAASA,KAAK,EAAEC,OAAO,QAAQ,mBAAU;AAEzC,OAAO,KAAKC,MAAM,MAAM,oBAAiB;AACzC,SAASC,GAAG,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,sBAAmB;;AAE/E;AACA,SAASC,mBAAmB,QAAQ,gCAA6B;AACjE,SAASC,iBAAiB,QAAQ,8BAA2B;AAC7D,SAASC,iBAAiB,QAAQ,8BAA2B;;AAE7D;AACA,OAAO,KAAKC,KAAK,MAAM,kBAAS;AAChC,SAAkCC,KAAK,IAAIC,SAAS,EAAEC,iBAAiB,QAAQ,mBAAgB;;AAE/F;AACA,cAAc,UAAU;AACxB,SACEC,MAAM,EACNC,mBAAmB,EACnBC,KAAK,EACLC,gBAAgB,EAChBC,gBAAgB,QACX,UAAU;AAUjB,cAAc,mBAAU;AACxB,cAAc,4BAAmB;AACjC,cAAc,oBAAW;AACzB,cAAc,4BAAmB;AACjC,cAAc,wBAAe;AAC7B,SAASC,aAAa,QAAQ,2BAAkB;AAMhD,cAAc,mBAAU;AACxB,cAAc,oBAAW;AACzB,OAAO,KAAKC,WAAW,MAAM,yBAAgB;AAC7C,cAAc,mBAAU;AACxB,SAASC,KAAK,QAAoB,SAAS;;AAE3C;AACA,OAAO,KAAKC,UAAU,MAAM,uBAAc;;AAE1C;AACA,OAAO,KAAKC,QAAQ,MAAM,qBAAY;AACtC,OAAO,KAAKC,IAAI,MAAM,iBAAQ;AAC9B,SAASC,IAAI,QAAQ,iBAAQ;AAC7B,SAASC,UAAU,QAAQ,wBAAe;;AAE1C;AACA,OAAO,KAAKC,SAAS,MAAM,uBAAc;AACzC,OAAO,KAAKC,gBAAgB,MAAM,8BAAqB;AACvD,SAASC,WAAW,QAAQ,yBAAgB;;AAE5C;AACA,SAASC,WAAW,QAAQ,yBAAgB;AAG5C;AACA,cAAc,iBAAQ;AACtB,cAAc,kBAAS;AACvB,cAAc,iBAAQ;AACtB,OAAO,KAAKC,IAAI,MAAM,iBAAQ;AAC9B,cAAc,qBAAY;AAC1B,OAAO,KAAKC,SAAS,MAAM,sBAAa;;AAExC;AACA,cAAc,0BAAiB;;AAE/B;AACA,OAAO,KAAKC,UAAU,MAAM,uBAAc;AAC1C,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,OAAO,MAAM,WAAW;AACpC,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,WAAW,MAAM,gBAAgB;;AAE7C;AACA,OAAO,KAAKC,IAAI,MAAM,iBAAQ;;AAE9B;AACA,OAAO,KAAKC,KAAK,MAAM,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["atoms","flatten","tokens","web","native","ios","android","platform","select","useInteractionState","useDelayedLoading","useThrottledValue","Icons","sizes","iconSizes","useCommonSVGProps","Dialog","CenteredDialog","CENTERED_DIALOG_BACKDROP_TESTID","BloomDialogProvider","alert","useDialogContext","useDialogControl","ErrorBoundary","PromptInput","toast","Typography","Skeleton","Grid","Fill","IconCircle","TextField","SegmentedControl","SearchInput","BottomSheet","Tabs","Accordion","Admonition","Menu","Tooltip","Select","ContextMenu","Code","Fonts"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,cAAc,kBAAS;;AAEvB;AACA,SAASA,KAAK,EAAEC,OAAO,QAAQ,mBAAU;AAEzC,OAAO,KAAKC,MAAM,MAAM,oBAAiB;AACzC,SAASC,GAAG,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,sBAAmB;;AAE/E;AACA,SAASC,mBAAmB,QAAQ,gCAA6B;AACjE,SAASC,iBAAiB,QAAQ,8BAA2B;AAC7D,SAASC,iBAAiB,QAAQ,8BAA2B;;AAE7D;AACA,OAAO,KAAKC,KAAK,MAAM,kBAAS;AAChC,SAAkCC,KAAK,IAAIC,SAAS,EAAEC,iBAAiB,QAAQ,mBAAgB;;AAE/F;AACA,cAAc,UAAU;AACxB,SACEC,MAAM,EACNC,cAAc,EACdC,+BAA+B,EAC/BC,mBAAmB,EACnBC,KAAK,EACLC,gBAAgB,EAChBC,gBAAgB,QACX,UAAU;AAWjB,cAAc,mBAAU;AACxB,cAAc,4BAAmB;AACjC,cAAc,oBAAW;AACzB,cAAc,4BAAmB;AACjC,cAAc,wBAAe;AAC7B,SAASC,aAAa,QAAQ,2BAAkB;AAMhD,cAAc,mBAAU;AACxB,cAAc,oBAAW;AACzB,OAAO,KAAKC,WAAW,MAAM,yBAAgB;AAC7C,cAAc,mBAAU;AACxB,SAASC,KAAK,QAAoB,SAAS;;AAE3C;AACA,OAAO,KAAKC,UAAU,MAAM,uBAAc;;AAE1C;AACA,OAAO,KAAKC,QAAQ,MAAM,qBAAY;AACtC,OAAO,KAAKC,IAAI,MAAM,iBAAQ;AAC9B,SAASC,IAAI,QAAQ,iBAAQ;AAC7B,SAASC,UAAU,QAAQ,wBAAe;;AAE1C;AACA,OAAO,KAAKC,SAAS,MAAM,uBAAc;AACzC,OAAO,KAAKC,gBAAgB,MAAM,8BAAqB;AACvD,SAASC,WAAW,QAAQ,yBAAgB;;AAE5C;AACA,SAASC,WAAW,QAAQ,yBAAgB;AAG5C;AACA,cAAc,iBAAQ;AACtB,cAAc,kBAAS;AACvB,cAAc,iBAAQ;AACtB,OAAO,KAAKC,IAAI,MAAM,iBAAQ;AAC9B,cAAc,qBAAY;AAC1B,OAAO,KAAKC,SAAS,MAAM,sBAAa;;AAExC;AACA,cAAc,0BAAiB;;AAE/B;AACA,OAAO,KAAKC,UAAU,MAAM,uBAAc;AAC1C,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,OAAO,MAAM,WAAW;AACpC,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,WAAW,MAAM,gBAAgB;;AAE7C;AACA,OAAO,KAAKC,IAAI,MAAM,iBAAQ;;AAE9B;AACA,OAAO,KAAKC,KAAK,MAAM,SAAS","ignoreList":[]}
@@ -24,7 +24,7 @@ export { sizes as iconSizes, useCommonSVGProps } from "./icons/common.js";
24
24
 
25
25
  // Core components
26
26
  export * from "./portal/index.web.js";
27
- export { Dialog, BloomDialogProvider, alert, useDialogContext, useDialogControl } from "./dialog/index.web.js";
27
+ export { Dialog, CenteredDialog, CENTERED_DIALOG_BACKDROP_TESTID, BloomDialogProvider, alert, useDialogContext, useDialogControl } from "./dialog/index.web.js";
28
28
  export * from "./button/index.js";
29
29
  export * from "./grouped-buttons/index.js";
30
30
  export * from "./divider/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":["atoms","flatten","tokens","web","native","ios","android","platform","select","useInteractionState","useDelayedLoading","useThrottledValue","Icons","sizes","iconSizes","useCommonSVGProps","Dialog","BloomDialogProvider","alert","useDialogContext","useDialogControl","ErrorBoundary","PromptInput","toast","Typography","Skeleton","Grid","Fill","IconCircle","TextField","SegmentedControl","SearchInput","BottomSheet","Tabs","Accordion","Admonition","Menu","Tooltip","Select","ContextMenu","Code","Fonts"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA;AACA,cAAc,kBAAS;;AAEvB;AACA,SAASA,KAAK,EAAEC,OAAO,QAAQ,mBAAU;AAEzC,OAAO,KAAKC,MAAM,MAAM,oBAAiB;AACzC,SAASC,GAAG,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,sBAAmB;;AAE/E;AACA,SAASC,mBAAmB,QAAQ,gCAA6B;AACjE,SAASC,iBAAiB,QAAQ,8BAA2B;AAC7D,SAASC,iBAAiB,QAAQ,8BAA2B;;AAE7D;AACA,OAAO,KAAKC,KAAK,MAAM,kBAAS;AAChC,SAAkCC,KAAK,IAAIC,SAAS,EAAEC,iBAAiB,QAAQ,mBAAgB;;AAE/F;AACA,cAAc,uBAAoB;AAClC,SACEC,MAAM,EACNC,mBAAmB,EACnBC,KAAK,EACLC,gBAAgB,EAChBC,gBAAgB,QACX,uBAAoB;AAU3B,cAAc,mBAAU;AACxB,cAAc,4BAAmB;AACjC,cAAc,oBAAW;AACzB,cAAc,4BAAmB;AACjC,cAAc,wBAAe;AAC7B,SAASC,aAAa,QAAQ,2BAAkB;AAMhD,cAAc,mBAAU;AACxB,cAAc,oBAAW;AACzB,OAAO,KAAKC,WAAW,MAAM,yBAAgB;AAC7C,cAAc,mBAAU;AACxB,SAASC,KAAK,QAAoB,sBAAmB;;AAErD;AACA,OAAO,KAAKC,UAAU,MAAM,uBAAc;;AAE1C;AACA,OAAO,KAAKC,QAAQ,MAAM,qBAAY;AACtC,OAAO,KAAKC,IAAI,MAAM,iBAAQ;AAC9B,SAASC,IAAI,QAAQ,iBAAQ;AAC7B,SAASC,UAAU,QAAQ,wBAAe;;AAE1C;AACA,OAAO,KAAKC,SAAS,MAAM,uBAAc;AACzC,OAAO,KAAKC,gBAAgB,MAAM,8BAAqB;AACvD,SAASC,WAAW,QAAQ,yBAAgB;;AAE5C;AACA,SAASC,WAAW,QAAQ,yBAAgB;AAG5C;AACA,cAAc,iBAAQ;AACtB,cAAc,kBAAS;AACvB,cAAc,iBAAQ;AACtB,OAAO,KAAKC,IAAI,MAAM,iBAAQ;AAC9B,cAAc,qBAAY;AAC1B,OAAO,KAAKC,SAAS,MAAM,sBAAa;;AAExC;AACA,cAAc,0BAAiB;;AAE/B;AACA,OAAO,KAAKC,UAAU,MAAM,uBAAc;AAC1C,OAAO,KAAKC,IAAI,MAAM,qBAAkB;AACxC,OAAO,KAAKC,OAAO,MAAM,wBAAqB;AAC9C,OAAO,KAAKC,MAAM,MAAM,uBAAoB;AAC5C,OAAO,KAAKC,WAAW,MAAM,6BAA0B;;AAEvD;AACA,OAAO,KAAKC,IAAI,MAAM,iBAAQ;;AAE9B;AACA,OAAO,KAAKC,KAAK,MAAM,sBAAmB","ignoreList":[]}
1
+ {"version":3,"names":["atoms","flatten","tokens","web","native","ios","android","platform","select","useInteractionState","useDelayedLoading","useThrottledValue","Icons","sizes","iconSizes","useCommonSVGProps","Dialog","CenteredDialog","CENTERED_DIALOG_BACKDROP_TESTID","BloomDialogProvider","alert","useDialogContext","useDialogControl","ErrorBoundary","PromptInput","toast","Typography","Skeleton","Grid","Fill","IconCircle","TextField","SegmentedControl","SearchInput","BottomSheet","Tabs","Accordion","Admonition","Menu","Tooltip","Select","ContextMenu","Code","Fonts"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA;AACA,cAAc,kBAAS;;AAEvB;AACA,SAASA,KAAK,EAAEC,OAAO,QAAQ,mBAAU;AAEzC,OAAO,KAAKC,MAAM,MAAM,oBAAiB;AACzC,SAASC,GAAG,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,sBAAmB;;AAE/E;AACA,SAASC,mBAAmB,QAAQ,gCAA6B;AACjE,SAASC,iBAAiB,QAAQ,8BAA2B;AAC7D,SAASC,iBAAiB,QAAQ,8BAA2B;;AAE7D;AACA,OAAO,KAAKC,KAAK,MAAM,kBAAS;AAChC,SAAkCC,KAAK,IAAIC,SAAS,EAAEC,iBAAiB,QAAQ,mBAAgB;;AAE/F;AACA,cAAc,uBAAoB;AAClC,SACEC,MAAM,EACNC,cAAc,EACdC,+BAA+B,EAC/BC,mBAAmB,EACnBC,KAAK,EACLC,gBAAgB,EAChBC,gBAAgB,QACX,uBAAoB;AAW3B,cAAc,mBAAU;AACxB,cAAc,4BAAmB;AACjC,cAAc,oBAAW;AACzB,cAAc,4BAAmB;AACjC,cAAc,wBAAe;AAC7B,SAASC,aAAa,QAAQ,2BAAkB;AAMhD,cAAc,mBAAU;AACxB,cAAc,oBAAW;AACzB,OAAO,KAAKC,WAAW,MAAM,yBAAgB;AAC7C,cAAc,mBAAU;AACxB,SAASC,KAAK,QAAoB,sBAAmB;;AAErD;AACA,OAAO,KAAKC,UAAU,MAAM,uBAAc;;AAE1C;AACA,OAAO,KAAKC,QAAQ,MAAM,qBAAY;AACtC,OAAO,KAAKC,IAAI,MAAM,iBAAQ;AAC9B,SAASC,IAAI,QAAQ,iBAAQ;AAC7B,SAASC,UAAU,QAAQ,wBAAe;;AAE1C;AACA,OAAO,KAAKC,SAAS,MAAM,uBAAc;AACzC,OAAO,KAAKC,gBAAgB,MAAM,8BAAqB;AACvD,SAASC,WAAW,QAAQ,yBAAgB;;AAE5C;AACA,SAASC,WAAW,QAAQ,yBAAgB;AAG5C;AACA,cAAc,iBAAQ;AACtB,cAAc,kBAAS;AACvB,cAAc,iBAAQ;AACtB,OAAO,KAAKC,IAAI,MAAM,iBAAQ;AAC9B,cAAc,qBAAY;AAC1B,OAAO,KAAKC,SAAS,MAAM,sBAAa;;AAExC;AACA,cAAc,0BAAiB;;AAE/B;AACA,OAAO,KAAKC,UAAU,MAAM,uBAAc;AAC1C,OAAO,KAAKC,IAAI,MAAM,qBAAkB;AACxC,OAAO,KAAKC,OAAO,MAAM,wBAAqB;AAC9C,OAAO,KAAKC,MAAM,MAAM,uBAAoB;AAC5C,OAAO,KAAKC,WAAW,MAAM,6BAA0B;;AAEvD;AACA,OAAO,KAAKC,IAAI,MAAM,iBAAQ;;AAE9B;AACA,OAAO,KAAKC,KAAK,MAAM,sBAAmB","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ import type { CenteredDialogProps } from './centered-dialog-types';
2
+ /** Stable testID for the dimmed backdrop. Overridden when a `testID` is set. */
3
+ export declare const CENTERED_DIALOG_BACKDROP_TESTID = "bloom-centered-dialog-backdrop";
4
+ /**
5
+ * Native variant of `<CenteredDialog>`.
6
+ *
7
+ * A controlled, centered modal: a transparent RN `Modal` (fade animation,
8
+ * own native window) hosting a dimmed full-screen backdrop and a centered,
9
+ * rounded card styled entirely from Bloom theme tokens.
10
+ *
11
+ * The backdrop is a sibling `Pressable` rendered BEHIND the card (absolute
12
+ * filled), never a parent of it — so a tap on the card never bubbles to the
13
+ * backdrop's close handler and the card never ends up nested inside the
14
+ * backdrop's pressable on web.
15
+ *
16
+ * Dismissal: backdrop tap (when `dismissible`), the header close button, and
17
+ * the Android hardware back button (`onRequestClose`) all call `onClose`.
18
+ */
19
+ export declare function CenteredDialog({ visible, onClose, title, dismissible, maxWidth, compact, showClose, children, footer, accessibilityLabel, closeAccessibilityLabel, backdropAccessibilityLabel, cardStyle, contentStyle, testID, }: CenteredDialogProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=CenteredDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CenteredDialog.d.ts","sourceRoot":"","sources":["../../../../src/dialog/CenteredDialog.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAWnE,gFAAgF;AAChF,eAAO,MAAM,+BAA+B,mCAAmC,CAAC;AAEhF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,OAAO,EACP,KAAK,EACL,WAAkB,EAClB,QAA4B,EAC5B,OAAc,EACd,SAAS,EACT,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,uBAAwC,EACxC,0BAA6C,EAC7C,SAAS,EACT,YAAY,EACZ,MAAM,GACP,EAAE,mBAAmB,2CAsGrB"}
@@ -0,0 +1,29 @@
1
+ import type { CenteredDialogProps } from './centered-dialog-types';
2
+ /** Stable testID for the dimmed backdrop. Overridden when a `testID` is set. */
3
+ export declare const CENTERED_DIALOG_BACKDROP_TESTID = "bloom-centered-dialog-backdrop";
4
+ /**
5
+ * Web variant of `<CenteredDialog>`.
6
+ *
7
+ * A centered modal card rendered into the Bloom Portal at the end of
8
+ * `document.body`. Identical prop surface to native — `visible`, `onClose`,
9
+ * `title`, `compact`, etc. — so call sites are platform agnostic.
10
+ *
11
+ * Differences from the native fork (necessary, not behavioural):
12
+ * - Portal + `RemoveScrollBar` lock the underlying page while open.
13
+ * - `Escape` dismisses (when `dismissible`).
14
+ * - A `role="dialog"` panel with `aria-label`/`aria-modal` for a11y.
15
+ * - A CSS fade/zoom keyframe matches the native modal's `fade` animation;
16
+ * the keyframes are injected once (idempotent) into `<head>`.
17
+ *
18
+ * The backdrop is a sibling element BEHIND the card, and the card stops
19
+ * click/press propagation so a tap on the card never dismisses.
20
+ */
21
+ export declare function CenteredDialog({ visible, onClose, title, dismissible, maxWidth, compact, showClose, children, footer, accessibilityLabel, closeAccessibilityLabel, backdropAccessibilityLabel, cardStyle, contentStyle, testID, }: CenteredDialogProps): import("react/jsx-runtime").JSX.Element | null;
22
+ /**
23
+ * CSS keyframes powering the web enter/exit animation. Injected once into
24
+ * `<head>` on first mount (keyed by id so re-mounts and multiple dialogs
25
+ * don't duplicate the rule). Mirrors the native modal's `fade` feel with a
26
+ * subtle zoom on the card.
27
+ */
28
+ export declare const BLOOM_CENTERED_DIALOG_CSS = "\n@keyframes bloomCenteredDialogFadeIn { from { opacity: 0; } to { opacity: 1; } }\n@keyframes bloomCenteredDialogFadeOut { from { opacity: 1; } to { opacity: 0; } }\n@keyframes bloomCenteredDialogZoomIn { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }\n@keyframes bloomCenteredDialogZoomOut { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.96); } }\n";
29
+ //# sourceMappingURL=CenteredDialog.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CenteredDialog.web.d.ts","sourceRoot":"","sources":["../../../../src/dialog/CenteredDialog.web.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAYnE,gFAAgF;AAChF,eAAO,MAAM,+BAA+B,mCAAmC,CAAC;AAIhF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,OAAO,EACP,KAAK,EACL,WAAkB,EAClB,QAA4B,EAC5B,OAAc,EACd,SAAS,EACT,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,uBAAwC,EACxC,0BAA6C,EAC7C,SAAS,EACT,YAAY,EACZ,MAAM,GACP,EAAE,mBAAmB,kDAoIrB;AA4FD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,2aAKrC,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Shared layout constants for `<CenteredDialog>`, kept in one module so the
3
+ * native and web forks render identically. All values are Bloom theme tokens
4
+ * (`styles/tokens`) — no ad-hoc magic numbers.
5
+ *
6
+ * COMPACT is the priority: the `compact` spacing set is the default and is
7
+ * deliberately tight (≈`space.md`), so the card reads snug out of the box.
8
+ * The `cozy` set is the opt-out (`compact={false}`) for roomier dialogs.
9
+ */
10
+ /** Default max card width — comfortable for a compact dialog. */
11
+ export declare const DEFAULT_MAX_WIDTH = 440;
12
+ /** Card height is capped at this fraction of the viewport; body scrolls. */
13
+ export declare const MAX_HEIGHT_FRACTION = 0.8;
14
+ /** Card corner radius (token: `borderRadius.lg` = 16). */
15
+ export declare const CARD_RADIUS: 16;
16
+ /** Outer gutter between the card edge and the viewport edge (token `space.lg`). */
17
+ export declare const VIEWPORT_GUTTER: 16;
18
+ export type DialogSpacing = {
19
+ /** Card inner padding (horizontal + vertical). */
20
+ pad: number;
21
+ /** Gap between the header title row and the body. */
22
+ headerGap: number;
23
+ /** Gap between the body and the footer. */
24
+ footerGap: number;
25
+ /** Vertical gap between stacked body items (the content container `gap`). */
26
+ contentGap: number;
27
+ };
28
+ /**
29
+ * Compact (default) — tight, snug spacing built on `space.md` (12).
30
+ *
31
+ * pad = space.md (12)
32
+ * headerGap = space.sm (8)
33
+ * footerGap = space.md (12)
34
+ * contentGap = space.sm (8)
35
+ */
36
+ export declare const COMPACT_SPACING: DialogSpacing;
37
+ /**
38
+ * Cozy (`compact={false}`) — roomier spacing built on `space.xl` (20).
39
+ *
40
+ * pad = space.xl (20)
41
+ * headerGap = space.md (12)
42
+ * footerGap = space.lg (16)
43
+ * contentGap = space.md (12)
44
+ */
45
+ export declare const COZY_SPACING: DialogSpacing;
46
+ export declare function resolveSpacing(compact: boolean): DialogSpacing;
47
+ //# sourceMappingURL=centered-dialog-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centered-dialog-tokens.d.ts","sourceRoot":"","sources":["../../../../src/dialog/centered-dialog-tokens.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,0DAA0D;AAC1D,eAAO,MAAM,WAAW,IAAkB,CAAC;AAE3C,mFAAmF;AACnF,eAAO,MAAM,eAAe,IAAW,CAAC;AAExC,MAAM,MAAM,aAAa,GAAG;IAC1B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,aAK7B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,aAK1B,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAE9D"}