@oxyhq/bloom 0.30.9 → 0.31.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.
@@ -5,16 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createAlertDialog = createAlertDialog;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
- var _reactNative = require("react-native");
9
- var _button = require("../button");
10
- var _useTheme = require("../theme/use-theme.js");
11
- var _index = require("../typography/index.js");
12
- var _tokens = require("../styles/tokens.js");
13
8
  var _jsxRuntime = require("react/jsx-runtime");
14
9
  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); }
15
- /** Centered alert-card max width (px). Matches the legacy AlertDialog card. */
16
- const ALERT_DIALOG_MAX_WIDTH = 440;
17
-
18
10
  /**
19
11
  * Build the `AlertDialog` component bound to a platform `Dialog`.
20
12
  *
@@ -24,10 +16,16 @@ const ALERT_DIALOG_MAX_WIDTH = 440;
24
16
  * (`index.ts` / `index.web.ts`) inject the correct `Dialog` here. The body
25
17
  * below is single-source, no duplication.
26
18
  *
27
- * `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that lays
28
- * out a title, description and a confirm/cancel action row. Reach for the
19
+ * `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that maps
20
+ * the confirm/cancel props onto the Dialog's declarative `actions` row the
21
+ * SAME battle-tested `ActionRow`/`ActionButton` primitive every other bloom
22
+ * confirm surface uses (e.g. Mention's `ConfirmPrompt`), so the button
23
+ * component, layout, and palette stay identical across apps. Reach for the
29
24
  * imperative `confirm()` helper + `<AlertDialogHost />` to trigger a confirm
30
25
  * from an event handler without owning visible state.
26
+ *
27
+ * The centered card uses the Dialog default `maxWidth` (480px) for full visual
28
+ * parity with the shared confirm surface.
31
29
  */
32
30
  function createAlertDialog(Dialog) {
33
31
  const AlertDialogComponent = function AlertDialog({
@@ -45,73 +43,51 @@ function createAlertDialog(Dialog) {
45
43
  cardStyle,
46
44
  testID
47
45
  }) {
48
- const theme = (0, _useTheme.useTheme)();
49
- const handleCancel = (0, _react.useCallback)(() => {
50
- onCancel?.();
51
- onClose();
52
- }, [onCancel, onClose]);
46
+ // Confirm resolves + closes SYNCHRONOUSLY, in this order, and must NOT go
47
+ // through the Dialog's auto-close (`shouldCloseOnPress: false`). In
48
+ // controlled mode `close()` fires `onClose` FIRST, and the `confirm()` host
49
+ // wires `onClose` to resolve the promise as *cancelled* (`false`). Running
50
+ // `onConfirm` (resolve `true`, which removes the queue entry) before
51
+ // `onClose` (now a no-op for that entry) is what makes the confirm button
52
+ // resolve `true`.
53
53
  const handleConfirm = (0, _react.useCallback)(() => {
54
54
  onConfirm?.();
55
55
  onClose();
56
56
  }, [onConfirm, onClose]);
57
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Dialog, {
57
+ const actions = [{
58
+ label: confirmLabel,
59
+ onPress: handleConfirm,
60
+ color: destructive ? 'destructive' : 'default',
61
+ shouldCloseOnPress: false
62
+ }];
63
+ if (!hideCancel) {
64
+ // The `cancel` color auto-dismisses via the Dialog's `close()`, which in
65
+ // controlled mode fires `onClose` (the host resolves `false`). `onCancel`
66
+ // runs after the surface finishes closing.
67
+ actions.push({
68
+ label: cancelLabel,
69
+ onPress: onCancel,
70
+ color: 'cancel'
71
+ });
72
+ }
73
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Dialog, {
58
74
  open: visible,
59
75
  onClose: onClose,
60
76
  placement: "center"
61
- // Alert dialogs are blocking by default — the backdrop only dismisses
62
- // when the caller opts in via `dismissible`.
77
+ // Alert dialogs are blocking by default — the backdrop / Escape only
78
+ // dismiss when the caller opts in via `dismissible`.
63
79
  ,
64
80
  dismissOnBackdrop: dismissible,
65
- maxWidth: ALERT_DIALOG_MAX_WIDTH,
66
81
  title: title,
82
+ description: description,
83
+ actions: actions,
67
84
  label: title,
68
85
  style: cardStyle,
69
- testID: testID,
70
- children: [description ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Text, {
71
- style: {
72
- fontSize: _tokens.fontSize.md,
73
- lineHeight: _tokens.fontSize.md * 1.4,
74
- color: theme.colors.textSecondary,
75
- paddingBottom: _tokens.space.lg
76
- },
77
- children: description
78
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
79
- style: styles.actions,
80
- children: [!hideCancel ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
81
- variant: "secondary",
82
- size: "medium",
83
- onPress: handleCancel,
84
- style: styles.action,
85
- accessibilityLabel: cancelLabel,
86
- children: cancelLabel
87
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
88
- variant: "primary",
89
- size: "medium",
90
- onPress: handleConfirm,
91
- style: _reactNative.StyleSheet.flatten([styles.action, destructive && {
92
- backgroundColor: theme.colors.negative
93
- }]),
94
- textStyle: destructive ? {
95
- color: theme.colors.negativeForeground
96
- } : undefined,
97
- accessibilityLabel: confirmLabel,
98
- children: confirmLabel
99
- })]
100
- })]
86
+ testID: testID
101
87
  });
102
88
  };
103
89
  const AlertDialog = /*#__PURE__*/(0, _react.memo)(AlertDialogComponent);
104
90
  AlertDialog.displayName = 'AlertDialog';
105
91
  return AlertDialog;
106
92
  }
107
- const styles = _reactNative.StyleSheet.create({
108
- actions: {
109
- flexDirection: 'row',
110
- justifyContent: 'flex-end',
111
- gap: _tokens.space.sm
112
- },
113
- action: {
114
- minWidth: 96
115
- }
116
- });
117
93
  //# sourceMappingURL=AlertDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_button","_useTheme","_index","_tokens","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ALERT_DIALOG_MAX_WIDTH","createAlertDialog","Dialog","AlertDialogComponent","AlertDialog","visible","onClose","title","description","confirmLabel","cancelLabel","onConfirm","onCancel","destructive","hideCancel","dismissible","cardStyle","testID","theme","useTheme","handleCancel","useCallback","handleConfirm","jsxs","open","placement","dismissOnBackdrop","maxWidth","label","style","children","jsx","Text","fontSize","md","lineHeight","color","colors","textSecondary","paddingBottom","space","lg","View","styles","actions","Button","variant","size","onPress","action","accessibilityLabel","StyleSheet","flatten","backgroundColor","negative","textStyle","negativeForeground","undefined","memo","displayName","create","flexDirection","justifyContent","gap","sm","minWidth"],"sourceRoot":"../../../src","sources":["alert-dialog/AlertDialog.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AAAmD,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,wBAAAQ,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAV,uBAAA,YAAAA,CAAAQ,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAKnD;AACA,MAAMkB,sBAAsB,GAAG,GAAG;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAACC,MAAuB,EAAE;EACzD,MAAMC,oBAAoB,GAAG,SAASC,WAAWA,CAAC;IAChDC,OAAO;IACPC,OAAO;IACPC,KAAK;IACLC,WAAW;IACXC,YAAY,GAAG,SAAS;IACxBC,WAAW,GAAG,QAAQ;IACtBC,SAAS;IACTC,QAAQ;IACRC,WAAW,GAAG,KAAK;IACnBC,UAAU,GAAG,KAAK;IAClBC,WAAW,GAAG,KAAK;IACnBC,SAAS;IACTC;EACgB,CAAC,EAAE;IACnB,MAAMC,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;IAExB,MAAMC,YAAY,GAAG,IAAAC,kBAAW,EAAC,MAAM;MACrCT,QAAQ,GAAG,CAAC;MACZN,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,CAACM,QAAQ,EAAEN,OAAO,CAAC,CAAC;IAEvB,MAAMgB,aAAa,GAAG,IAAAD,kBAAW,EAAC,MAAM;MACtCV,SAAS,GAAG,CAAC;MACbL,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,CAACK,SAAS,EAAEL,OAAO,CAAC,CAAC;IAExB,oBACE,IAAA1B,WAAA,CAAA2C,IAAA,EAACrB,MAAM;MACLsB,IAAI,EAAEnB,OAAQ;MACdC,OAAO,EAAEA,OAAQ;MACjBmB,SAAS,EAAC;MACV;MACA;MAAA;MACAC,iBAAiB,EAAEX,WAAY;MAC/BY,QAAQ,EAAE3B,sBAAuB;MACjCO,KAAK,EAAEA,KAAM;MACbqB,KAAK,EAAErB,KAAM;MACbsB,KAAK,EAAEb,SAAU;MACjBC,MAAM,EAAEA,MAAO;MAAAa,QAAA,GAEdtB,WAAW,gBACV,IAAA5B,WAAA,CAAAmD,GAAA,EAACrD,MAAA,CAAAsD,IAAI;QACHH,KAAK,EAAE;UACLI,QAAQ,EAAEA,gBAAQ,CAACC,EAAE;UACrBC,UAAU,EAAEF,gBAAQ,CAACC,EAAE,GAAG,GAAG;UAC7BE,KAAK,EAAElB,KAAK,CAACmB,MAAM,CAACC,aAAa;UACjCC,aAAa,EAAEC,aAAK,CAACC;QACvB,CAAE;QAAAX,QAAA,EAEDtB;MAAW,CACR,CAAC,GACL,IAAI,eACR,IAAA5B,WAAA,CAAA2C,IAAA,EAAChD,YAAA,CAAAmE,IAAI;QAACb,KAAK,EAAEc,MAAM,CAACC,OAAQ;QAAAd,QAAA,GACzB,CAAChB,UAAU,gBACV,IAAAlC,WAAA,CAAAmD,GAAA,EAACvD,OAAA,CAAAqE,MAAM;UACLC,OAAO,EAAC,WAAW;UACnBC,IAAI,EAAC,QAAQ;UACbC,OAAO,EAAE5B,YAAa;UACtBS,KAAK,EAAEc,MAAM,CAACM,MAAO;UACrBC,kBAAkB,EAAExC,WAAY;UAAAoB,QAAA,EAE/BpB;QAAW,CACN,CAAC,GACP,IAAI,eACR,IAAA9B,WAAA,CAAAmD,GAAA,EAACvD,OAAA,CAAAqE,MAAM;UACLC,OAAO,EAAC,SAAS;UACjBC,IAAI,EAAC,QAAQ;UACbC,OAAO,EAAE1B,aAAc;UACvBO,KAAK,EAAEsB,uBAAU,CAACC,OAAO,CAAC,CACxBT,MAAM,CAACM,MAAM,EACbpC,WAAW,IAAI;YAAEwC,eAAe,EAAEnC,KAAK,CAACmB,MAAM,CAACiB;UAAS,CAAC,CAC1D,CAAE;UACHC,SAAS,EAAE1C,WAAW,GAAG;YAAEuB,KAAK,EAAElB,KAAK,CAACmB,MAAM,CAACmB;UAAmB,CAAC,GAAGC,SAAU;UAChFP,kBAAkB,EAAEzC,YAAa;UAAAqB,QAAA,EAEhCrB;QAAY,CACP,CAAC;MAAA,CACL,CAAC;IAAA,CACD,CAAC;EAEb,CAAC;EAED,MAAML,WAAW,gBAAG,IAAAsD,WAAI,EAACvD,oBAAoB,CAAC;EAC9CC,WAAW,CAACuD,WAAW,GAAG,aAAa;EACvC,OAAOvD,WAAW;AACpB;AAIA,MAAMuC,MAAM,GAAGQ,uBAAU,CAACS,MAAM,CAAC;EAC/BhB,OAAO,EAAE;IACPiB,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,UAAU;IAC1BC,GAAG,EAAEvB,aAAK,CAACwB;EACb,CAAC;EACDf,MAAM,EAAE;IACNgB,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createAlertDialog","Dialog","AlertDialogComponent","AlertDialog","visible","onClose","title","description","confirmLabel","cancelLabel","onConfirm","onCancel","destructive","hideCancel","dismissible","cardStyle","testID","handleConfirm","useCallback","actions","label","onPress","color","shouldCloseOnPress","push","jsx","open","placement","dismissOnBackdrop","style","memo","displayName"],"sourceRoot":"../../../src","sources":["alert-dialog/AlertDialog.tsx"],"mappings":"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","ignoreList":[]}
@@ -214,6 +214,32 @@ function resolveVariantStyle(variant, size, theme) {
214
214
  }
215
215
  }
216
216
 
217
+ // ---------------------------------------------------------------------------
218
+ // Style normalization
219
+ //
220
+ // Callers idiomatically pass `style` as a React-Native `StyleProp` — most
221
+ // often an ARRAY (`style={[base, cond && override]}`, possibly nested and
222
+ // containing falsy holes from `cond && {...}`). The DOM `<button>` below needs
223
+ // a SINGLE plain object: spreading a raw array into an object literal produces
224
+ // numeric keys (`"0"`, `"1"`, …), which React then assigns onto the real
225
+ // `CSSStyleDeclaration`, throwing
226
+ // `Failed to set an indexed property [0] on 'CSSStyleDeclaration'`. Flatten the
227
+ // StyleProp into one object here, once, before it reaches either merge site.
228
+ // Later entries win, mirroring React-Native array-style precedence.
229
+ //
230
+ // `StyleNode` is a readonly-closed recursion type (RN's own `StyleProp` array
231
+ // member yields `readonly` sub-arrays that aren't assignable back to
232
+ // `StyleProp`, so it can't be recursed over directly). `ButtonProps['style']`
233
+ // is assignable to it, so call sites pass `style` with no cast.
234
+ // ---------------------------------------------------------------------------
235
+
236
+ function flattenStyle(style) {
237
+ if (Array.isArray(style)) {
238
+ return style.reduce((merged, entry) => Object.assign(merged, flattenStyle(entry)), {});
239
+ }
240
+ return style && typeof style === 'object' ? style : {};
241
+ }
242
+
217
243
  // ---------------------------------------------------------------------------
218
244
  // Component
219
245
  // ---------------------------------------------------------------------------
@@ -296,6 +322,10 @@ const ButtonWebComponent = ({
296
322
  const ariaLabel = ariaLabelProp ?? accessibilityLabel;
297
323
  const composedClassName = ['bloom-btn'].concat(resolvedVariant === 'link' ? ['bloom-btn--link'] : []).concat(className ? [className] : []).join(' ');
298
324
  const spinnerColor = loadingColor ?? variantStyle.textColor;
325
+
326
+ // Normalize the caller's `style` (single object, array, or falsy) into one
327
+ // flat plain object ONCE, so neither merge site below spreads a raw array.
328
+ const resolvedStyle = flattenStyle(style);
299
329
  const content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
300
330
  children: [iconPosition === 'left' && icon, children != null && (typeof children === 'string' || typeof children === 'number' ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
301
331
  children: children
@@ -339,7 +369,7 @@ const ButtonWebComponent = ({
339
369
  className: [composedClassName, childProps.className].filter(Boolean).join(' '),
340
370
  style: {
341
371
  ...containerStyle,
342
- ...style,
372
+ ...resolvedStyle,
343
373
  ...childProps.style
344
374
  },
345
375
  onClick: event => {
@@ -367,7 +397,7 @@ const ButtonWebComponent = ({
367
397
  className: composedClassName,
368
398
  style: {
369
399
  ...containerStyle,
370
- ...style
400
+ ...resolvedStyle
371
401
  },
372
402
  onClick: handleClick,
373
403
  disabled: disabled && !loading,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_useTheme","_SpinnerIconWeb","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SIZE_CONFIG","small","paddingVertical","paddingHorizontal","fontSize","minHeight","medium","large","SIZE_ALIAS","sm","md","lg","icon","PILL_RADIUS","ICON_RADIUS","PRESS_SCALE","SCALE_VARIANTS","Set","STYLE_ID","BLOOM_BUTTON_CSS","useButtonCss","useEffect","document","getElementById","style","createElement","id","textContent","head","appendChild","resolveVariantStyle","variant","size","theme","c","colors","sizeConfig","container","backgroundColor","primary","borderRadius","textColor","primaryForeground","ringColor","negative","negativeForeground","borderWidth","borderStyle","borderColor","border","text","background","padding","width","height","ButtonWebComponent","onPress","onClick","children","disabled","sizeProp","iconPosition","loading","loadingColor","accessibilityLabel","ariaLabelProp","accessibilityHint","testID","className","type","asChild","name","value","title","autoFocus","tabIndex","fullWidth","useTheme","reactId","useId","resolvedId","resolvedVariant","isIcon","isInteractionBlocked","variantStyle","useMemo","containerStyle","base","fontWeight","color","undefined","paddingTop","paddingBottom","paddingLeft","paddingRight","handleClick","useCallback","event","preventDefault","ariaLabel","composedClassName","concat","join","spinnerColor","content","jsxs","Fragment","jsx","body","display","alignItems","justifyContent","gap","opacity","pointerEvents","position","inset","SpinnerIcon","Math","round","React","isValidElement","child","childProps","props","cloneElement","filter","Boolean","Button","exports","memo","displayName","PrimaryButton","SecondaryButton","IconButton","GhostButton","InverseButton","TextButton","OutlineButton","LinkButton","DestructiveButton"],"sourceRoot":"../../../src","sources":["button/Button.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_useTheme","_SpinnerIconWeb","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SIZE_CONFIG","small","paddingVertical","paddingHorizontal","fontSize","minHeight","medium","large","SIZE_ALIAS","sm","md","lg","icon","PILL_RADIUS","ICON_RADIUS","PRESS_SCALE","SCALE_VARIANTS","Set","STYLE_ID","BLOOM_BUTTON_CSS","useButtonCss","useEffect","document","getElementById","style","createElement","id","textContent","head","appendChild","resolveVariantStyle","variant","size","theme","c","colors","sizeConfig","container","backgroundColor","primary","borderRadius","textColor","primaryForeground","ringColor","negative","negativeForeground","borderWidth","borderStyle","borderColor","border","text","background","padding","width","height","flattenStyle","Array","isArray","reduce","merged","entry","assign","ButtonWebComponent","onPress","onClick","children","disabled","sizeProp","iconPosition","loading","loadingColor","accessibilityLabel","ariaLabelProp","accessibilityHint","testID","className","type","asChild","name","value","title","autoFocus","tabIndex","fullWidth","useTheme","reactId","useId","resolvedId","resolvedVariant","isIcon","isInteractionBlocked","variantStyle","useMemo","containerStyle","base","fontWeight","color","undefined","paddingTop","paddingBottom","paddingLeft","paddingRight","handleClick","useCallback","event","preventDefault","ariaLabel","composedClassName","concat","join","spinnerColor","resolvedStyle","content","jsxs","Fragment","jsx","body","display","alignItems","justifyContent","gap","opacity","pointerEvents","position","inset","SpinnerIcon","Math","round","React","isValidElement","child","childProps","props","cloneElement","filter","Boolean","Button","exports","memo","displayName","PrimaryButton","SecondaryButton","IconButton","GhostButton","InverseButton","TextButton","OutlineButton","LinkButton","DestructiveButton"],"sourceRoot":"../../../src","sources":["button/Button.web.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAaA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAF,OAAA;AAAyD,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAKzD;AACA;AACA;AACA;AACA;;AAWA,MAAMkB,WAA2C,GAAG;EAClDC,KAAK,EAAE;IAAEC,eAAe,EAAE,CAAC;IAAEC,iBAAiB,EAAE,EAAE;IAAEC,QAAQ,EAAE,EAAE;IAAEC,SAAS,EAAE;EAAG,CAAC;EACjFC,MAAM,EAAE;IAAEJ,eAAe,EAAE,CAAC;IAAEC,iBAAiB,EAAE,EAAE;IAAEC,QAAQ,EAAE,EAAE;IAAEC,SAAS,EAAE;EAAG,CAAC;EAClFE,KAAK,EAAE;IAAEL,eAAe,EAAE,EAAE;IAAEC,iBAAiB,EAAE,EAAE;IAAEC,QAAQ,EAAE,EAAE;IAAEC,SAAS,EAAE;EAAG;AACnF,CAAC;AAED,MAAMG,UAA0C,GAAG;EACjDP,KAAK,EAAE,OAAO;EACdK,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,OAAO;EACdE,EAAE,EAAE,OAAO;EACXC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,OAAO;EACXC,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAG,GAAG;AACvB,MAAMC,WAAW,GAAGD,WAAW;AAC/B,MAAME,WAAW,GAAG,IAAI;;AAExB;AACA,MAAMC,cAAc,GAAG,IAAIC,GAAG,CAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;;AAEjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,QAAQ,GAAG,sBAAsB;;AAEvC;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,SAASC,YAAYA,CAAA,EAAS;EAC5B,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IACrC,IAAIA,QAAQ,CAACC,cAAc,CAACL,QAAQ,CAAC,EAAE;IACvC,MAAMM,KAAK,GAAGF,QAAQ,CAACG,aAAa,CAAC,OAAO,CAAC;IAC7CD,KAAK,CAACE,EAAE,GAAGR,QAAQ;IACnBM,KAAK,CAACG,WAAW,GAAGR,gBAAgB;IACpCG,QAAQ,CAACM,IAAI,CAACC,WAAW,CAACL,KAAK,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAWA,SAASM,mBAAmBA,CAC1BC,OAAsB,EACtBC,IAAgB,EAChBC,KAAY,EACE;EACd,MAAMC,CAAC,GAAGD,KAAK,CAACE,MAAM;EACtB,MAAMC,UAAU,GAAGpC,WAAW,CAACgC,IAAI,CAAC;EAEpC,QAAQD,OAAO;IACb,KAAK,SAAS;MACZ,OAAO;QACLM,SAAS,EAAE;UAAEC,eAAe,EAAEJ,CAAC,CAACK,OAAO;UAAEC,YAAY,EAAE3B;QAAY,CAAC;QACpE4B,SAAS,EAAEP,CAAC,CAACQ,iBAAiB;QAC9BC,SAAS,EAAET,CAAC,CAACK;MACf,CAAC;IACH,KAAK,aAAa;MAChB,OAAO;QACLF,SAAS,EAAE;UAAEC,eAAe,EAAEJ,CAAC,CAACU,QAAQ;UAAEJ,YAAY,EAAE3B;QAAY,CAAC;QACrE4B,SAAS,EAAEP,CAAC,CAACW,kBAAkB;QAC/BF,SAAS,EAAET,CAAC,CAACU;MACf,CAAC;IACH,KAAK,SAAS;MACZ,OAAO;QACLP,SAAS,EAAE;UAAEC,eAAe,EAAE,SAAS;UAAEE,YAAY,EAAE3B;QAAY,CAAC;QACpE4B,SAAS,EAAE,SAAS;QACpBE,SAAS,EAAET,CAAC,CAACK;MACf,CAAC;IACH,KAAK,WAAW;IAChB,KAAK,SAAS;MACZ,OAAO;QACLF,SAAS,EAAE;UACTC,eAAe,EAAE,aAAa;UAC9BQ,WAAW,EAAE,CAAC;UACdC,WAAW,EAAE,OAAO;UACpBC,WAAW,EAAEd,CAAC,CAACe,MAAM;UACrBT,YAAY,EAAE3B;QAChB,CAAC;QACD4B,SAAS,EAAEP,CAAC,CAACgB,IAAI;QACjBP,SAAS,EAAET,CAAC,CAACK;MACf,CAAC;IACH,KAAK,OAAO;MACV,OAAO;QACLF,SAAS,EAAE;UAAEC,eAAe,EAAE,aAAa;UAAEE,YAAY,EAAE3B;QAAY,CAAC;QACxE4B,SAAS,EAAEP,CAAC,CAACK,OAAO;QACpBI,SAAS,EAAET,CAAC,CAACK;MACf,CAAC;IACH,KAAK,MAAM;MACT,OAAO;QACLF,SAAS,EAAE;UACTC,eAAe,EAAEJ,CAAC,CAACiB,UAAU;UAC7BL,WAAW,EAAE,CAAC;UACdC,WAAW,EAAE,OAAO;UACpBC,WAAW,EAAEd,CAAC,CAACe,MAAM;UACrBT,YAAY,EAAE1B,WAAW;UACzBsC,OAAO,EAAE,CAAC;UACVC,KAAK,EAAEjB,UAAU,CAAC/B,SAAS;UAC3BiD,MAAM,EAAElB,UAAU,CAAC/B;QACrB,CAAC;QACDoC,SAAS,EAAEP,CAAC,CAACgB,IAAI;QACjBP,SAAS,EAAET,CAAC,CAACK;MACf,CAAC;IACH,KAAK,MAAM;IACX,KAAK,MAAM;IACX;MACE,OAAO;QACLF,SAAS,EAAE;UAAEC,eAAe,EAAE,aAAa;UAAEE,YAAY,EAAE3B;QAAY,CAAC;QACxE4B,SAAS,EAAEP,CAAC,CAACK,OAAO;QACpBI,SAAS,EAAET,CAAC,CAACK;MACf,CAAC;EACL;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASgB,YAAYA,CAAC/B,KAAgB,EAAiB;EACrD,IAAIgC,KAAK,CAACC,OAAO,CAACjC,KAAK,CAAC,EAAE;IACxB,OAAOA,KAAK,CAACkC,MAAM,CACjB,CAACC,MAAM,EAAEC,KAAK,KAAK/D,MAAM,CAACgE,MAAM,CAACF,MAAM,EAAEJ,YAAY,CAACK,KAAK,CAAC,CAAC,EAC7D,CAAC,CACH,CAAC;EACH;EACA,OAAOpC,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,GAAIA,KAAK,GAAqB,CAAC,CAAC;AAC3E;;AAEA;AACA;AACA;;AAEA,MAAMsC,kBAAyC,GAAGA,CAAC;EACjDC,OAAO;EACPC,OAAO;EACPC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBnC,OAAO,GAAG,SAAS;EACnBC,IAAI,EAAEmC,QAAQ,GAAG,QAAQ;EACzB3C,KAAK;EACLZ,IAAI;EACJwD,YAAY,GAAG,MAAM;EACrBC,OAAO,GAAG,KAAK;EACfC,YAAY;EACZC,kBAAkB;EAClB,YAAY,EAAEC,aAAa;EAC3BC,iBAAiB;EACjBC,MAAM;EACNC,SAAS;EACTC,IAAI,GAAG,QAAQ;EACfC,OAAO,GAAG,KAAK;EACfnD,EAAE;EACFoD,IAAI;EACJC,KAAK;EACLC,KAAK;EACLC,SAAS;EACTC,QAAQ;EACRC,SAAS,GAAG;AACd,CAAC,KAAK;EACJ/D,YAAY,CAAC,CAAC;EACd,MAAMa,KAAK,GAAG,IAAAmD,kBAAQ,EAAC,CAAC;EACxB,MAAMC,OAAO,GAAG,IAAAC,YAAK,EAAC,CAAC;EACvB,MAAMC,UAAU,GAAG7D,EAAE,IAAI,aAAa2D,OAAO,EAAE;;EAE/C;EACA;EACA,MAAMG,eAA8B,GAClCrB,QAAQ,KAAK,MAAM,IAAIpC,OAAO,KAAK,SAAS,GAAG,MAAM,GAAGA,OAAO;EACjE,MAAMC,IAAgB,GAAGxB,UAAU,CAAC2D,QAAQ,CAAC;EAC7C,MAAMsB,MAAM,GAAGD,eAAe,KAAK,MAAM;EACzC,MAAME,oBAAoB,GAAGxB,QAAQ,IAAIG,OAAO;EAEhD,MAAMsB,YAAY,GAAG,IAAAC,cAAO,EAC1B,MAAM9D,mBAAmB,CAAC0D,eAAe,EAAExD,IAAI,EAAEC,KAAK,CAAC,EACvD,CAACuD,eAAe,EAAExD,IAAI,EAAEC,KAAK,CAC/B,CAAC;EAED,MAAMG,UAAU,GAAGpC,WAAW,CAACgC,IAAI,CAAC;EAEpC,MAAM6D,cAAc,GAAG,IAAAD,cAAO,EAAC,MAAqB;IAClD,MAAME,IAAmB,GAAG;MAC1B1F,QAAQ,EAAEgC,UAAU,CAAChC,QAAQ;MAC7B2F,UAAU,EAAE,MAAM;MAClBC,KAAK,EAAEL,YAAY,CAAClD,SAAS;MAC7BY,KAAK,EAAE8B,SAAS,GAAG,MAAM,GAAGc,SAAS;MACrC;MACA,CAAC,kBAAkB,GAAaN,YAAY,CAAChD,SAAS;MACtD,CAAC,yBAAyB,GAAa3B,cAAc,CAACxB,GAAG,CAACgG,eAAe,CAAC,GACtEzE,WAAW,GACX,CAAC;MACL,GAAG4E,YAAY,CAACtD;IAClB,CAAC;IACD,IAAI,CAACoD,MAAM,EAAE;MACXK,IAAI,CAACI,UAAU,GAAG9D,UAAU,CAAClC,eAAe;MAC5C4F,IAAI,CAACK,aAAa,GAAG/D,UAAU,CAAClC,eAAe;MAC/C4F,IAAI,CAACM,WAAW,GAAGhE,UAAU,CAACjC,iBAAiB;MAC/C2F,IAAI,CAACO,YAAY,GAAGjE,UAAU,CAACjC,iBAAiB;MAChD2F,IAAI,CAACzF,SAAS,GAAG+B,UAAU,CAAC/B,SAAS;IACvC;IACA,IAAImF,eAAe,KAAK,MAAM,IAAIA,eAAe,KAAK,MAAM,EAAE;MAC5DM,IAAI,CAACI,UAAU,GAAG,CAAC;MACnBJ,IAAI,CAACK,aAAa,GAAG,CAAC;MACtBL,IAAI,CAACM,WAAW,GAAG,CAAC;MACpBN,IAAI,CAACO,YAAY,GAAG,CAAC;MACrBP,IAAI,CAACzF,SAAS,GAAG4F,SAAS;IAC5B;IACA,OAAOH,IAAI;EACb,CAAC,EAAE,CAAC1D,UAAU,EAAEuD,YAAY,EAAER,SAAS,EAAEM,MAAM,EAAED,eAAe,CAAC,CAAC;EAElE,MAAMc,WAAW,GAAG,IAAAC,kBAAW,EAC5BC,KAAoC,IAAK;IACxC,IAAId,oBAAoB,EAAE;MACxBc,KAAK,CAACC,cAAc,CAAC,CAAC;MACtB;IACF;IACAzC,OAAO,GAAGwC,KAAK,CAAC;IAChBzC,OAAO,GAAG,CAAC;EACb,CAAC,EACD,CAAC2B,oBAAoB,EAAE1B,OAAO,EAAED,OAAO,CACzC,CAAC;EAED,MAAM2C,SAAS,GAAGlC,aAAa,IAAID,kBAAkB;EACrD,MAAMoC,iBAAiB,GAAG,CAAC,WAAW,CAAC,CACpCC,MAAM,CAACpB,eAAe,KAAK,MAAM,GAAG,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAC7DoB,MAAM,CAACjC,SAAS,GAAG,CAACA,SAAS,CAAC,GAAG,EAAE,CAAC,CACpCkC,IAAI,CAAC,GAAG,CAAC;EAEZ,MAAMC,YAAY,GAAGxC,YAAY,IAAIqB,YAAY,CAAClD,SAAS;;EAE3D;EACA;EACA,MAAMsE,aAAa,GAAGxD,YAAY,CAAC/B,KAAK,CAAC;EAEzC,MAAMwF,OAAO,gBACX,IAAApI,WAAA,CAAAqI,IAAA,EAAArI,WAAA,CAAAsI,QAAA;IAAAjD,QAAA,GACGG,YAAY,KAAK,MAAM,IAAIxD,IAAI,EAC/BqD,QAAQ,IAAI,IAAI,KACd,OAAOA,QAAQ,KAAK,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,gBAC3D,IAAArF,WAAA,CAAAuI,GAAA;MAAAlD,QAAA,EAAOA;IAAQ,CAAO,CAAC,GAEvBA,QACD,CAAC,EACHG,YAAY,KAAK,OAAO,IAAIxD,IAAI;EAAA,CACjC,CACH;EAED,MAAMwG,IAAI,GAAG/C,OAAO,gBAClB,IAAAzF,WAAA,CAAAqI,IAAA,EAAArI,WAAA,CAAAsI,QAAA;IAAAjD,QAAA,gBAEE,IAAArF,WAAA,CAAAuI,GAAA;MACE,eAAY,MAAM;MAClB3F,KAAK,EAAE;QACL6F,OAAO,EAAE,aAAa;QACtBC,UAAU,EAAE,QAAQ;QACpBC,cAAc,EAAE,QAAQ;QACxBC,GAAG,EAAE,CAAC;QACNC,OAAO,EAAE,CAAC;QACVC,aAAa,EAAE;MACjB,CAAE;MAAAzD,QAAA,EAED+C;IAAO,CACJ,CAAC,eACP,IAAApI,WAAA,CAAAuI,GAAA;MACE,eAAY,MAAM;MAClB3F,KAAK,EAAE;QACLmG,QAAQ,EAAE,UAAU;QACpBC,KAAK,EAAE,CAAC;QACRP,OAAO,EAAE,aAAa;QACtBC,UAAU,EAAE,QAAQ;QACpBC,cAAc,EAAE,QAAQ;QACxBG,aAAa,EAAE;MACjB,CAAE;MAAAzD,QAAA,eAEF,IAAArF,WAAA,CAAAuI,GAAA,EAACxI,eAAA,CAAAkJ,WAAW;QAAC7F,IAAI,EAAE8F,IAAI,CAACC,KAAK,CAAC3F,UAAU,CAAChC,QAAQ,GAAG,GAAG,CAAE;QAAC4F,KAAK,EAAEc;MAAa,CAAE;IAAC,CAC7E,CAAC;EAAA,CACP,CAAC,GAEHE,OACD;;EAED;EACA;EACA,IAAInC,OAAO,iBAAImD,cAAK,CAACC,cAAc,CAAChE,QAAQ,CAAC,EAAE;IAC7C,MAAMiE,KAAK,GAAGjE,QAUZ;IACF,MAAMkE,UAAU,GAAGD,KAAK,CAACE,KAAK;IAC9B,oBAAOJ,cAAK,CAACK,YAAY,CAACH,KAAK,EAAE;MAC/BvD,SAAS,EAAE,CAACgC,iBAAiB,EAAEwB,UAAU,CAACxD,SAAS,CAAC,CAAC2D,MAAM,CAACC,OAAO,CAAC,CAAC1B,IAAI,CAAC,GAAG,CAAC;MAC9ErF,KAAK,EAAE;QAAE,GAAGqE,cAAc;QAAE,GAAGkB,aAAa;QAAE,GAAGoB,UAAU,CAAC3G;MAAM,CAAC;MACnEwC,OAAO,EAAGwC,KAA8B,IAAK;QAC3C,IAAId,oBAAoB,EAAE;UACxBc,KAAK,CAACC,cAAc,CAAC,CAAC;UACtB;QACF;QACA0B,UAAU,CAACnE,OAAO,GAAGwC,KAAK,CAAC;QAC3BxC,OAAO,GAAGwC,KAAsC,CAAC;QACjDzC,OAAO,GAAG,CAAC;MACb,CAAC;MACD,eAAe,EAAE2B,oBAAoB,IAAIO,SAAS;MAClD,WAAW,EAAE5B,OAAO,IAAI4B,SAAS;MACjC,YAAY,EAAES,SAAS,IAAIyB,UAAU,CAAC,YAAY,CAAC;MACnDnD,KAAK,EAAEA,KAAK,IAAImD,UAAU,CAACnD,KAAK;MAChCtD,EAAE,EAAEyG,UAAU,CAACzG,EAAE,IAAI6D,UAAU;MAC/BL,QAAQ,EAAEQ,oBAAoB,GAAG,CAAC,CAAC,GAAGyC,UAAU,CAACjD;IACnD,CAAC,CAAC;EACJ;EAEA,oBACE,IAAAtG,WAAA,CAAAuI,GAAA;IACEzF,EAAE,EAAE6D,UAAW;IACfX,IAAI,EAAEA,IAAK;IACXE,IAAI,EAAEA,IAAK;IACXC,KAAK,EAAEA,KAAM;IACbJ,SAAS,EAAEgC,iBAAkB;IAC7BnF,KAAK,EAAE;MAAE,GAAGqE,cAAc;MAAE,GAAGkB;IAAc,CAAE;IAC/C/C,OAAO,EAAEsC,WAAY;IACrBpC,QAAQ,EAAEA,QAAQ,IAAI,CAACG,OAAQ;IAC/B,iBAAeqB,oBAAoB,IAAIO,SAAU;IACjD,aAAW5B,OAAO,IAAI4B,SAAU;IAChC,cAAYS,SAAU;IACtB1B,KAAK,EAAEA,KAAK,IAAIP,iBAAkB;IAClCQ,SAAS,EAAEA,SAAU;IACrBC,QAAQ,EAAEA,QAAS;IACnB,eAAaR,MAAO;IAAAT,QAAA,EAEnBmD;EAAI,CACC,CAAC;AAEb,CAAC;AAEM,MAAMoB,MAAM,GAAAC,OAAA,CAAAD,MAAA,gBAAG,IAAAE,WAAI,EAAC5E,kBAAkB,CAAC;AAC9C0E,MAAM,CAACG,WAAW,GAAG,QAAQ;AAEtB,MAAMC,aAAa,GAAAH,OAAA,CAAAG,aAAA,gBAAG,IAAAF,WAAI,EAAEN,KAAmC,iBACpE,IAAAxJ,WAAA,CAAAuI,GAAA,EAACqB,MAAM;EAAA,GAAKJ,KAAK;EAAErG,OAAO,EAAC;AAAS,CAAE,CACvC,CAAC;AACF6G,aAAa,CAACD,WAAW,GAAG,eAAe;AAEpC,MAAME,eAAe,GAAAJ,OAAA,CAAAI,eAAA,gBAAG,IAAAH,WAAI,EAAEN,KAAmC,iBACtE,IAAAxJ,WAAA,CAAAuI,GAAA,EAACqB,MAAM;EAAA,GAAKJ,KAAK;EAAErG,OAAO,EAAC;AAAW,CAAE,CACzC,CAAC;AACF8G,eAAe,CAACF,WAAW,GAAG,iBAAiB;AAExC,MAAMG,UAAU,GAAAL,OAAA,CAAAK,UAAA,gBAAG,IAAAJ,WAAI,EAAEN,KAAmC,iBACjE,IAAAxJ,WAAA,CAAAuI,GAAA,EAACqB,MAAM;EAAA,GAAKJ,KAAK;EAAErG,OAAO,EAAC;AAAM,CAAE,CACpC,CAAC;AACF+G,UAAU,CAACH,WAAW,GAAG,YAAY;AAE9B,MAAMI,WAAW,GAAAN,OAAA,CAAAM,WAAA,gBAAG,IAAAL,WAAI,EAAEN,KAAmC,iBAClE,IAAAxJ,WAAA,CAAAuI,GAAA,EAACqB,MAAM;EAAA,GAAKJ,KAAK;EAAErG,OAAO,EAAC;AAAO,CAAE,CACrC,CAAC;AACFgH,WAAW,CAACJ,WAAW,GAAG,aAAa;AAEhC,MAAMK,aAAa,GAAAP,OAAA,CAAAO,aAAA,gBAAG,IAAAN,WAAI,EAAEN,KAAmC,iBACpE,IAAAxJ,WAAA,CAAAuI,GAAA,EAACqB,MAAM;EAAA,GAAKJ,KAAK;EAAErG,OAAO,EAAC;AAAS,CAAE,CACvC,CAAC;AACFiH,aAAa,CAACL,WAAW,GAAG,eAAe;AAEpC,MAAMM,UAAU,GAAAR,OAAA,CAAAQ,UAAA,gBAAG,IAAAP,WAAI,EAAEN,KAAmC,iBACjE,IAAAxJ,WAAA,CAAAuI,GAAA,EAACqB,MAAM;EAAA,GAAKJ,KAAK;EAAErG,OAAO,EAAC;AAAM,CAAE,CACpC,CAAC;AACFkH,UAAU,CAACN,WAAW,GAAG,YAAY;AAE9B,MAAMO,aAAa,GAAAT,OAAA,CAAAS,aAAA,gBAAG,IAAAR,WAAI,EAAEN,KAAmC,iBACpE,IAAAxJ,WAAA,CAAAuI,GAAA,EAACqB,MAAM;EAAA,GAAKJ,KAAK;EAAErG,OAAO,EAAC;AAAS,CAAE,CACvC,CAAC;AACFmH,aAAa,CAACP,WAAW,GAAG,eAAe;AAEpC,MAAMQ,UAAU,GAAAV,OAAA,CAAAU,UAAA,gBAAG,IAAAT,WAAI,EAAEN,KAAmC,iBACjE,IAAAxJ,WAAA,CAAAuI,GAAA,EAACqB,MAAM;EAAA,GAAKJ,KAAK;EAAErG,OAAO,EAAC;AAAM,CAAE,CACpC,CAAC;AACFoH,UAAU,CAACR,WAAW,GAAG,YAAY;AAE9B,MAAMS,iBAAiB,GAAAX,OAAA,CAAAW,iBAAA,gBAAG,IAAAV,WAAI,EAAEN,KAAmC,iBACxE,IAAAxJ,WAAA,CAAAuI,GAAA,EAACqB,MAAM;EAAA,GAAKJ,KAAK;EAAErG,OAAO,EAAC;AAAa,CAAE,CAC3C,CAAC;AACFqH,iBAAiB,CAACT,WAAW,GAAG,mBAAmB","ignoreList":[]}
@@ -1,15 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import React, { memo, useCallback } from 'react';
4
- import { StyleSheet, View } from 'react-native';
5
- import { Button } from '../button';
6
- import { useTheme } from "../theme/use-theme.js";
7
- import { Text } from "../typography/index.js";
8
- import { fontSize, space } from "../styles/tokens.js";
9
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
- /** Centered alert-card max width (px). Matches the legacy AlertDialog card. */
11
- const ALERT_DIALOG_MAX_WIDTH = 440;
12
-
4
+ import { jsx as _jsx } from "react/jsx-runtime";
13
5
  /**
14
6
  * Build the `AlertDialog` component bound to a platform `Dialog`.
15
7
  *
@@ -19,10 +11,16 @@ const ALERT_DIALOG_MAX_WIDTH = 440;
19
11
  * (`index.ts` / `index.web.ts`) inject the correct `Dialog` here. The body
20
12
  * below is single-source, no duplication.
21
13
  *
22
- * `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that lays
23
- * out a title, description and a confirm/cancel action row. Reach for the
14
+ * `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that maps
15
+ * the confirm/cancel props onto the Dialog's declarative `actions` row the
16
+ * SAME battle-tested `ActionRow`/`ActionButton` primitive every other bloom
17
+ * confirm surface uses (e.g. Mention's `ConfirmPrompt`), so the button
18
+ * component, layout, and palette stay identical across apps. Reach for the
24
19
  * imperative `confirm()` helper + `<AlertDialogHost />` to trigger a confirm
25
20
  * from an event handler without owning visible state.
21
+ *
22
+ * The centered card uses the Dialog default `maxWidth` (480px) for full visual
23
+ * parity with the shared confirm surface.
26
24
  */
27
25
  export function createAlertDialog(Dialog) {
28
26
  const AlertDialogComponent = function AlertDialog({
@@ -40,73 +38,51 @@ export function createAlertDialog(Dialog) {
40
38
  cardStyle,
41
39
  testID
42
40
  }) {
43
- const theme = useTheme();
44
- const handleCancel = useCallback(() => {
45
- onCancel?.();
46
- onClose();
47
- }, [onCancel, onClose]);
41
+ // Confirm resolves + closes SYNCHRONOUSLY, in this order, and must NOT go
42
+ // through the Dialog's auto-close (`shouldCloseOnPress: false`). In
43
+ // controlled mode `close()` fires `onClose` FIRST, and the `confirm()` host
44
+ // wires `onClose` to resolve the promise as *cancelled* (`false`). Running
45
+ // `onConfirm` (resolve `true`, which removes the queue entry) before
46
+ // `onClose` (now a no-op for that entry) is what makes the confirm button
47
+ // resolve `true`.
48
48
  const handleConfirm = useCallback(() => {
49
49
  onConfirm?.();
50
50
  onClose();
51
51
  }, [onConfirm, onClose]);
52
- return /*#__PURE__*/_jsxs(Dialog, {
52
+ const actions = [{
53
+ label: confirmLabel,
54
+ onPress: handleConfirm,
55
+ color: destructive ? 'destructive' : 'default',
56
+ shouldCloseOnPress: false
57
+ }];
58
+ if (!hideCancel) {
59
+ // The `cancel` color auto-dismisses via the Dialog's `close()`, which in
60
+ // controlled mode fires `onClose` (the host resolves `false`). `onCancel`
61
+ // runs after the surface finishes closing.
62
+ actions.push({
63
+ label: cancelLabel,
64
+ onPress: onCancel,
65
+ color: 'cancel'
66
+ });
67
+ }
68
+ return /*#__PURE__*/_jsx(Dialog, {
53
69
  open: visible,
54
70
  onClose: onClose,
55
71
  placement: "center"
56
- // Alert dialogs are blocking by default — the backdrop only dismisses
57
- // when the caller opts in via `dismissible`.
72
+ // Alert dialogs are blocking by default — the backdrop / Escape only
73
+ // dismiss when the caller opts in via `dismissible`.
58
74
  ,
59
75
  dismissOnBackdrop: dismissible,
60
- maxWidth: ALERT_DIALOG_MAX_WIDTH,
61
76
  title: title,
77
+ description: description,
78
+ actions: actions,
62
79
  label: title,
63
80
  style: cardStyle,
64
- testID: testID,
65
- children: [description ? /*#__PURE__*/_jsx(Text, {
66
- style: {
67
- fontSize: fontSize.md,
68
- lineHeight: fontSize.md * 1.4,
69
- color: theme.colors.textSecondary,
70
- paddingBottom: space.lg
71
- },
72
- children: description
73
- }) : null, /*#__PURE__*/_jsxs(View, {
74
- style: styles.actions,
75
- children: [!hideCancel ? /*#__PURE__*/_jsx(Button, {
76
- variant: "secondary",
77
- size: "medium",
78
- onPress: handleCancel,
79
- style: styles.action,
80
- accessibilityLabel: cancelLabel,
81
- children: cancelLabel
82
- }) : null, /*#__PURE__*/_jsx(Button, {
83
- variant: "primary",
84
- size: "medium",
85
- onPress: handleConfirm,
86
- style: StyleSheet.flatten([styles.action, destructive && {
87
- backgroundColor: theme.colors.negative
88
- }]),
89
- textStyle: destructive ? {
90
- color: theme.colors.negativeForeground
91
- } : undefined,
92
- accessibilityLabel: confirmLabel,
93
- children: confirmLabel
94
- })]
95
- })]
81
+ testID: testID
96
82
  });
97
83
  };
98
84
  const AlertDialog = /*#__PURE__*/memo(AlertDialogComponent);
99
85
  AlertDialog.displayName = 'AlertDialog';
100
86
  return AlertDialog;
101
87
  }
102
- const styles = StyleSheet.create({
103
- actions: {
104
- flexDirection: 'row',
105
- justifyContent: 'flex-end',
106
- gap: space.sm
107
- },
108
- action: {
109
- minWidth: 96
110
- }
111
- });
112
88
  //# sourceMappingURL=AlertDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useCallback","StyleSheet","View","Button","useTheme","Text","fontSize","space","jsx","_jsx","jsxs","_jsxs","ALERT_DIALOG_MAX_WIDTH","createAlertDialog","Dialog","AlertDialogComponent","AlertDialog","visible","onClose","title","description","confirmLabel","cancelLabel","onConfirm","onCancel","destructive","hideCancel","dismissible","cardStyle","testID","theme","handleCancel","handleConfirm","open","placement","dismissOnBackdrop","maxWidth","label","style","children","md","lineHeight","color","colors","textSecondary","paddingBottom","lg","styles","actions","variant","size","onPress","action","accessibilityLabel","flatten","backgroundColor","negative","textStyle","negativeForeground","undefined","displayName","create","flexDirection","justifyContent","gap","sm","minWidth"],"sourceRoot":"../../../src","sources":["alert-dialog/AlertDialog.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","useCallback","jsx","_jsx","createAlertDialog","Dialog","AlertDialogComponent","AlertDialog","visible","onClose","title","description","confirmLabel","cancelLabel","onConfirm","onCancel","destructive","hideCancel","dismissible","cardStyle","testID","handleConfirm","actions","label","onPress","color","shouldCloseOnPress","push","open","placement","dismissOnBackdrop","style","displayName"],"sourceRoot":"../../../src","sources":["alert-dialog/AlertDialog.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,QAAQ,OAAO;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,MAAuB,EAAE;EACzD,MAAMC,oBAAoB,GAAG,SAASC,WAAWA,CAAC;IAChDC,OAAO;IACPC,OAAO;IACPC,KAAK;IACLC,WAAW;IACXC,YAAY,GAAG,SAAS;IACxBC,WAAW,GAAG,QAAQ;IACtBC,SAAS;IACTC,QAAQ;IACRC,WAAW,GAAG,KAAK;IACnBC,UAAU,GAAG,KAAK;IAClBC,WAAW,GAAG,KAAK;IACnBC,SAAS;IACTC;EACgB,CAAC,EAAE;IACnB;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAMC,aAAa,GAAGpB,WAAW,CAAC,MAAM;MACtCa,SAAS,GAAG,CAAC;MACbL,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,CAACK,SAAS,EAAEL,OAAO,CAAC,CAAC;IAExB,MAAMa,OAAuB,GAAG,CAC9B;MACEC,KAAK,EAAEX,YAAY;MACnBY,OAAO,EAAEH,aAAa;MACtBI,KAAK,EAAET,WAAW,GAAG,aAAa,GAAG,SAAS;MAC9CU,kBAAkB,EAAE;IACtB,CAAC,CACF;IACD,IAAI,CAACT,UAAU,EAAE;MACf;MACA;MACA;MACAK,OAAO,CAACK,IAAI,CAAC;QACXJ,KAAK,EAAEV,WAAW;QAClBW,OAAO,EAAET,QAAQ;QACjBU,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;IAEA,oBACEtB,IAAA,CAACE,MAAM;MACLuB,IAAI,EAAEpB,OAAQ;MACdC,OAAO,EAAEA,OAAQ;MACjBoB,SAAS,EAAC;MACV;MACA;MAAA;MACAC,iBAAiB,EAAEZ,WAAY;MAC/BR,KAAK,EAAEA,KAAM;MACbC,WAAW,EAAEA,WAAY;MACzBW,OAAO,EAAEA,OAAQ;MACjBC,KAAK,EAAEb,KAAM;MACbqB,KAAK,EAAEZ,SAAU;MACjBC,MAAM,EAAEA;IAAO,CAChB,CAAC;EAEN,CAAC;EAED,MAAMb,WAAW,gBAAGP,IAAI,CAACM,oBAAoB,CAAC;EAC9CC,WAAW,CAACyB,WAAW,GAAG,aAAa;EACvC,OAAOzB,WAAW;AACpB","ignoreList":[]}
@@ -209,6 +209,32 @@ function resolveVariantStyle(variant, size, theme) {
209
209
  }
210
210
  }
211
211
 
212
+ // ---------------------------------------------------------------------------
213
+ // Style normalization
214
+ //
215
+ // Callers idiomatically pass `style` as a React-Native `StyleProp` — most
216
+ // often an ARRAY (`style={[base, cond && override]}`, possibly nested and
217
+ // containing falsy holes from `cond && {...}`). The DOM `<button>` below needs
218
+ // a SINGLE plain object: spreading a raw array into an object literal produces
219
+ // numeric keys (`"0"`, `"1"`, …), which React then assigns onto the real
220
+ // `CSSStyleDeclaration`, throwing
221
+ // `Failed to set an indexed property [0] on 'CSSStyleDeclaration'`. Flatten the
222
+ // StyleProp into one object here, once, before it reaches either merge site.
223
+ // Later entries win, mirroring React-Native array-style precedence.
224
+ //
225
+ // `StyleNode` is a readonly-closed recursion type (RN's own `StyleProp` array
226
+ // member yields `readonly` sub-arrays that aren't assignable back to
227
+ // `StyleProp`, so it can't be recursed over directly). `ButtonProps['style']`
228
+ // is assignable to it, so call sites pass `style` with no cast.
229
+ // ---------------------------------------------------------------------------
230
+
231
+ function flattenStyle(style) {
232
+ if (Array.isArray(style)) {
233
+ return style.reduce((merged, entry) => Object.assign(merged, flattenStyle(entry)), {});
234
+ }
235
+ return style && typeof style === 'object' ? style : {};
236
+ }
237
+
212
238
  // ---------------------------------------------------------------------------
213
239
  // Component
214
240
  // ---------------------------------------------------------------------------
@@ -291,6 +317,10 @@ const ButtonWebComponent = ({
291
317
  const ariaLabel = ariaLabelProp ?? accessibilityLabel;
292
318
  const composedClassName = ['bloom-btn'].concat(resolvedVariant === 'link' ? ['bloom-btn--link'] : []).concat(className ? [className] : []).join(' ');
293
319
  const spinnerColor = loadingColor ?? variantStyle.textColor;
320
+
321
+ // Normalize the caller's `style` (single object, array, or falsy) into one
322
+ // flat plain object ONCE, so neither merge site below spreads a raw array.
323
+ const resolvedStyle = flattenStyle(style);
294
324
  const content = /*#__PURE__*/_jsxs(_Fragment, {
295
325
  children: [iconPosition === 'left' && icon, children != null && (typeof children === 'string' || typeof children === 'number' ? /*#__PURE__*/_jsx("span", {
296
326
  children: children
@@ -334,7 +364,7 @@ const ButtonWebComponent = ({
334
364
  className: [composedClassName, childProps.className].filter(Boolean).join(' '),
335
365
  style: {
336
366
  ...containerStyle,
337
- ...style,
367
+ ...resolvedStyle,
338
368
  ...childProps.style
339
369
  },
340
370
  onClick: event => {
@@ -362,7 +392,7 @@ const ButtonWebComponent = ({
362
392
  className: composedClassName,
363
393
  style: {
364
394
  ...containerStyle,
365
- ...style
395
+ ...resolvedStyle
366
396
  },
367
397
  onClick: handleClick,
368
398
  disabled: disabled && !loading,
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useCallback","useEffect","useId","useMemo","useTheme","SpinnerIcon","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","SIZE_CONFIG","small","paddingVertical","paddingHorizontal","fontSize","minHeight","medium","large","SIZE_ALIAS","sm","md","lg","icon","PILL_RADIUS","ICON_RADIUS","PRESS_SCALE","SCALE_VARIANTS","Set","STYLE_ID","BLOOM_BUTTON_CSS","useButtonCss","document","getElementById","style","createElement","id","textContent","head","appendChild","resolveVariantStyle","variant","size","theme","c","colors","sizeConfig","container","backgroundColor","primary","borderRadius","textColor","primaryForeground","ringColor","negative","negativeForeground","borderWidth","borderStyle","borderColor","border","text","background","padding","width","height","ButtonWebComponent","onPress","onClick","children","disabled","sizeProp","iconPosition","loading","loadingColor","accessibilityLabel","ariaLabelProp","accessibilityHint","testID","className","type","asChild","name","value","title","autoFocus","tabIndex","fullWidth","reactId","resolvedId","resolvedVariant","isIcon","isInteractionBlocked","variantStyle","containerStyle","base","fontWeight","color","undefined","has","paddingTop","paddingBottom","paddingLeft","paddingRight","handleClick","event","preventDefault","ariaLabel","composedClassName","concat","join","spinnerColor","content","body","display","alignItems","justifyContent","gap","opacity","pointerEvents","position","inset","Math","round","isValidElement","child","childProps","props","cloneElement","filter","Boolean","Button","displayName","PrimaryButton","SecondaryButton","IconButton","GhostButton","InverseButton","TextButton","OutlineButton","LinkButton","DestructiveButton"],"sourceRoot":"../../../src","sources":["button/Button.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","useCallback","useEffect","useId","useMemo","useTheme","SpinnerIcon","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","SIZE_CONFIG","small","paddingVertical","paddingHorizontal","fontSize","minHeight","medium","large","SIZE_ALIAS","sm","md","lg","icon","PILL_RADIUS","ICON_RADIUS","PRESS_SCALE","SCALE_VARIANTS","Set","STYLE_ID","BLOOM_BUTTON_CSS","useButtonCss","document","getElementById","style","createElement","id","textContent","head","appendChild","resolveVariantStyle","variant","size","theme","c","colors","sizeConfig","container","backgroundColor","primary","borderRadius","textColor","primaryForeground","ringColor","negative","negativeForeground","borderWidth","borderStyle","borderColor","border","text","background","padding","width","height","flattenStyle","Array","isArray","reduce","merged","entry","Object","assign","ButtonWebComponent","onPress","onClick","children","disabled","sizeProp","iconPosition","loading","loadingColor","accessibilityLabel","ariaLabelProp","accessibilityHint","testID","className","type","asChild","name","value","title","autoFocus","tabIndex","fullWidth","reactId","resolvedId","resolvedVariant","isIcon","isInteractionBlocked","variantStyle","containerStyle","base","fontWeight","color","undefined","has","paddingTop","paddingBottom","paddingLeft","paddingRight","handleClick","event","preventDefault","ariaLabel","composedClassName","concat","join","spinnerColor","resolvedStyle","content","body","display","alignItems","justifyContent","gap","opacity","pointerEvents","position","inset","Math","round","isValidElement","child","childProps","props","cloneElement","filter","Boolean","Button","displayName","PrimaryButton","SecondaryButton","IconButton","GhostButton","InverseButton","TextButton","OutlineButton","LinkButton","DestructiveButton"],"sourceRoot":"../../../src","sources":["button/Button.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -11,10 +11,16 @@ type DialogComponent = React.ComponentType<DialogProps>;
11
11
  * (`index.ts` / `index.web.ts`) inject the correct `Dialog` here. The body
12
12
  * below is single-source, no duplication.
13
13
  *
14
- * `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that lays
15
- * out a title, description and a confirm/cancel action row. Reach for the
14
+ * `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that maps
15
+ * the confirm/cancel props onto the Dialog's declarative `actions` row the
16
+ * SAME battle-tested `ActionRow`/`ActionButton` primitive every other bloom
17
+ * confirm surface uses (e.g. Mention's `ConfirmPrompt`), so the button
18
+ * component, layout, and palette stay identical across apps. Reach for the
16
19
  * imperative `confirm()` helper + `<AlertDialogHost />` to trigger a confirm
17
20
  * from an event handler without owning visible state.
21
+ *
22
+ * The centered card uses the Dialog default `maxWidth` (480px) for full visual
23
+ * parity with the shared confirm surface.
18
24
  */
19
25
  export declare function createAlertDialog(Dialog: DialogComponent): React.MemoExoticComponent<({ visible, onClose, title, description, confirmLabel, cancelLabel, onConfirm, onCancel, destructive, hideCancel, dismissible, cardStyle, testID, }: AlertDialogProps) => import("react/jsx-runtime").JSX.Element>;
20
26
  export type AlertDialogType = ReturnType<typeof createAlertDialog>;
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../../../src/alert-dialog/AlertDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,KAAK,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAKxD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,kLAepD,gBAAgB,8CAwEpB;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../../../src/alert-dialog/AlertDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,KAAK,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAExD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,kLAepD,gBAAgB,8CAqDpB;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.web.d.ts","sourceRoot":"","sources":["../../../../src/button/Button.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAC;AAEtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAyZtE,eAAO,MAAM,MAAM,yCAA2B,CAAC;AAG/C,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,eAAe,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEtE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,WAAW,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAElE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,iBAAiB,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAExE,CAAC"}
1
+ {"version":3,"file":"Button.web.d.ts","sourceRoot":"","sources":["../../../../src/button/Button.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAC;AAEtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AA4btE,eAAO,MAAM,MAAM,yCAA2B,CAAC;AAG/C,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,eAAe,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEtE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,WAAW,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAElE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,iBAAiB,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAExE,CAAC"}
@@ -11,10 +11,16 @@ type DialogComponent = React.ComponentType<DialogProps>;
11
11
  * (`index.ts` / `index.web.ts`) inject the correct `Dialog` here. The body
12
12
  * below is single-source, no duplication.
13
13
  *
14
- * `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that lays
15
- * out a title, description and a confirm/cancel action row. Reach for the
14
+ * `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that maps
15
+ * the confirm/cancel props onto the Dialog's declarative `actions` row the
16
+ * SAME battle-tested `ActionRow`/`ActionButton` primitive every other bloom
17
+ * confirm surface uses (e.g. Mention's `ConfirmPrompt`), so the button
18
+ * component, layout, and palette stay identical across apps. Reach for the
16
19
  * imperative `confirm()` helper + `<AlertDialogHost />` to trigger a confirm
17
20
  * from an event handler without owning visible state.
21
+ *
22
+ * The centered card uses the Dialog default `maxWidth` (480px) for full visual
23
+ * parity with the shared confirm surface.
18
24
  */
19
25
  export declare function createAlertDialog(Dialog: DialogComponent): React.MemoExoticComponent<({ visible, onClose, title, description, confirmLabel, cancelLabel, onConfirm, onCancel, destructive, hideCancel, dismissible, cardStyle, testID, }: AlertDialogProps) => import("react/jsx-runtime").JSX.Element>;
20
26
  export type AlertDialogType = ReturnType<typeof createAlertDialog>;
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../../../src/alert-dialog/AlertDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,KAAK,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAKxD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,kLAepD,gBAAgB,8CAwEpB;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../../../src/alert-dialog/AlertDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,KAAK,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAExD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,kLAepD,gBAAgB,8CAqDpB;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.web.d.ts","sourceRoot":"","sources":["../../../../src/button/Button.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAC;AAEtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAyZtE,eAAO,MAAM,MAAM,yCAA2B,CAAC;AAG/C,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,eAAe,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEtE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,WAAW,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAElE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,iBAAiB,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAExE,CAAC"}
1
+ {"version":3,"file":"Button.web.d.ts","sourceRoot":"","sources":["../../../../src/button/Button.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAC;AAEtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AA4btE,eAAO,MAAM,MAAM,yCAA2B,CAAC;AAG/C,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,eAAe,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEtE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,WAAW,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAElE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,iBAAiB,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAExE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "0.30.9",
3
+ "version": "0.31.0",
4
4
  "description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -1,7 +1,8 @@
1
- import React from 'react';
1
+ import React, { useState } from 'react';
2
2
  import { act, fireEvent, render } from '@testing-library/react-native';
3
3
 
4
- import { AlertDialog } from '../alert-dialog';
4
+ import { AlertDialog, AlertDialogHost, confirm } from '../alert-dialog';
5
+ import { getConfirmQueue, resolveConfirm } from '../alert-dialog/confirm-store';
5
6
  import { BloomThemeProvider } from '../theme/BloomThemeProvider';
6
7
 
7
8
  function renderWithTheme(ui: React.ReactElement) {
@@ -12,11 +13,23 @@ function renderWithTheme(ui: React.ReactElement) {
12
13
  );
13
14
  }
14
15
 
15
- // `AlertDialog` is now a thin wrapper over `<Dialog placement="center">`. These
16
- // tests assert the public-API contract it owns (controlled visibility, the
17
- // title/description copy, the confirm/cancel action row, and the
18
- // confirm/cancel/dismiss callbacks) holds on the native Dialog surface.
16
+ // `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that maps
17
+ // its confirm/cancel props onto the Dialog's declarative `actions` row (the
18
+ // shared `ActionRow`/`ActionButton` primitive). These tests assert the
19
+ // public-API contract it owns controlled visibility, the title/description
20
+ // copy, the confirm/cancel actions, and — most importantly — the exact
21
+ // `confirm()` promise-resolution contract every ecosystem call site relies on:
22
+ // the confirm button resolves `true`; the cancel button (or Escape / backdrop,
23
+ // which route through the Dialog's `onClose`) resolves `false`.
19
24
  describe('AlertDialog (built on Dialog)', () => {
25
+ afterEach(() => {
26
+ // Drain any confirm() entries a test left pending so the module-scoped
27
+ // queue never bleeds across tests.
28
+ for (const entry of [...getConfirmQueue()]) {
29
+ resolveConfirm(entry.id, false);
30
+ }
31
+ });
32
+
20
33
  it('renders nothing when not visible', () => {
21
34
  const { queryByText } = renderWithTheme(
22
35
  <AlertDialog
@@ -48,8 +61,9 @@ describe('AlertDialog (built on Dialog)', () => {
48
61
  });
49
62
 
50
63
  it('runs onConfirm then onClose when the confirm button is pressed', () => {
51
- const onConfirm = jest.fn();
52
- const onClose = jest.fn();
64
+ const calls: string[] = [];
65
+ const onConfirm = jest.fn(() => calls.push('confirm'));
66
+ const onClose = jest.fn(() => calls.push('close'));
53
67
  const { getByText } = renderWithTheme(
54
68
  <AlertDialog
55
69
  visible
@@ -64,10 +78,11 @@ describe('AlertDialog (built on Dialog)', () => {
64
78
  });
65
79
  expect(onConfirm).toHaveBeenCalledTimes(1);
66
80
  expect(onClose).toHaveBeenCalledTimes(1);
81
+ // Order matters: onConfirm must resolve the promise BEFORE onClose runs.
82
+ expect(calls).toEqual(['confirm', 'close']);
67
83
  });
68
84
 
69
- it('runs onCancel then onClose when the cancel button is pressed', () => {
70
- const onCancel = jest.fn();
85
+ it('requests close (resolves cancel) when the cancel button is pressed', () => {
71
86
  const onClose = jest.fn();
72
87
  const { getByText } = renderWithTheme(
73
88
  <AlertDialog
@@ -75,16 +90,37 @@ describe('AlertDialog (built on Dialog)', () => {
75
90
  onClose={onClose}
76
91
  title="Confirm?"
77
92
  cancelLabel="No"
78
- onCancel={onCancel}
79
93
  />,
80
94
  );
81
95
  act(() => {
82
96
  fireEvent.press(getByText('No'));
83
97
  });
84
- expect(onCancel).toHaveBeenCalledTimes(1);
98
+ // The `cancel` action dismisses via the Dialog's `close()`, which in
99
+ // controlled mode fires `onClose` — the confirm() host's resolve-false.
85
100
  expect(onClose).toHaveBeenCalledTimes(1);
86
101
  });
87
102
 
103
+ it('invokes onCancel after the cancel button dismisses the dialog', () => {
104
+ const onCancel = jest.fn();
105
+ function Harness() {
106
+ const [open, setOpen] = useState(true);
107
+ return (
108
+ <AlertDialog
109
+ visible={open}
110
+ onClose={() => setOpen(false)}
111
+ title="Confirm?"
112
+ cancelLabel="No"
113
+ onCancel={onCancel}
114
+ />
115
+ );
116
+ }
117
+ const { getByText } = renderWithTheme(<Harness />);
118
+ act(() => {
119
+ fireEvent.press(getByText('No'));
120
+ });
121
+ expect(onCancel).toHaveBeenCalledTimes(1);
122
+ });
123
+
88
124
  it('hides the cancel button when hideCancel is set', () => {
89
125
  const { queryByText, getByText } = renderWithTheme(
90
126
  <AlertDialog
@@ -112,11 +148,65 @@ describe('AlertDialog (built on Dialog)', () => {
112
148
  onConfirm={onConfirm}
113
149
  />,
114
150
  );
115
- const confirm = getByText('Sign out');
116
- expect(confirm).toBeTruthy();
151
+ const confirmButton = getByText('Sign out');
152
+ expect(confirmButton).toBeTruthy();
117
153
  act(() => {
118
- fireEvent.press(confirm);
154
+ fireEvent.press(confirmButton);
119
155
  });
120
156
  expect(onConfirm).toHaveBeenCalledTimes(1);
121
157
  });
158
+
159
+ // The authoritative ecosystem contract: `confirm()` + `<AlertDialogHost />`.
160
+ // Every consuming call site does `const ok = await confirm({...})`, so these
161
+ // assert the exact promise resolution against the REAL rendered action row.
162
+ describe('confirm() + AlertDialogHost promise contract', () => {
163
+ it('resolves true when the confirm button is pressed', async () => {
164
+ const { getByText } = renderWithTheme(<AlertDialogHost />);
165
+ let result!: Promise<boolean>;
166
+ act(() => {
167
+ result = confirm({
168
+ title: 'Delete app?',
169
+ confirmLabel: 'Delete',
170
+ cancelLabel: 'Keep',
171
+ });
172
+ });
173
+ act(() => {
174
+ fireEvent.press(getByText('Delete'));
175
+ });
176
+ await expect(result).resolves.toBe(true);
177
+ expect(getConfirmQueue()).toHaveLength(0);
178
+ });
179
+
180
+ it('resolves false when the cancel button is pressed', async () => {
181
+ const { getByText } = renderWithTheme(<AlertDialogHost />);
182
+ let result!: Promise<boolean>;
183
+ act(() => {
184
+ result = confirm({
185
+ title: 'Discard changes?',
186
+ confirmLabel: 'Discard',
187
+ cancelLabel: 'Keep editing',
188
+ });
189
+ });
190
+ act(() => {
191
+ fireEvent.press(getByText('Keep editing'));
192
+ });
193
+ await expect(result).resolves.toBe(false);
194
+ expect(getConfirmQueue()).toHaveLength(0);
195
+ });
196
+
197
+ it('resolves true even though confirm fires both onConfirm and onClose', async () => {
198
+ // The confirm button runs onConfirm (resolve true, drains the entry) then
199
+ // onClose (resolve false — a no-op once the entry is gone). The net must
200
+ // be `true`; this guards the double-resolution path explicitly.
201
+ const { getByText } = renderWithTheme(<AlertDialogHost />);
202
+ let result!: Promise<boolean>;
203
+ act(() => {
204
+ result = confirm({ title: 'Proceed?', confirmLabel: 'Proceed' });
205
+ });
206
+ act(() => {
207
+ fireEvent.press(getByText('Proceed'));
208
+ });
209
+ await expect(result).resolves.toBe(true);
210
+ });
211
+ });
122
212
  });
@@ -198,4 +198,55 @@ describe('Button.web', () => {
198
198
  expect(getByRole(c, 'button', { name: 'icon' }).tagName).toBe('BUTTON');
199
199
  });
200
200
  });
201
+
202
+ // Regression: passing `style` as a React-Native `StyleProp` ARRAY (the
203
+ // `style={[base, cond && override]}` idiom used across the ecosystem) used to
204
+ // spread the raw array into the DOM button's inline style, producing numeric
205
+ // keys and throwing at runtime:
206
+ // "Failed to set an indexed property [0] on 'CSSStyleDeclaration'".
207
+ describe('style prop flattening', () => {
208
+ it('renders without crashing when style is an array with a falsy hole', () => {
209
+ const showBg = false;
210
+ const c = mount(
211
+ <Button style={[{ marginTop: 10 }, showBg && { backgroundColor: 'rgb(9, 9, 9)' }]}>
212
+ Styled
213
+ </Button>,
214
+ );
215
+ const btn = getByRole(c, 'button', { name: 'Styled' });
216
+ expect(btn.tagName).toBe('BUTTON');
217
+ // The array is flattened onto the button; falsy entries are skipped.
218
+ expect(btn.style.marginTop).toBe('10px');
219
+ expect(btn.style.backgroundColor).not.toBe('rgb(9, 9, 9)');
220
+ // The crash signature: a leaked numeric ("0") style key.
221
+ expect(btn.getAttribute('style') ?? '').not.toMatch(/(^|;)\s*0\s*:/);
222
+ });
223
+
224
+ it('later array entries win, mirroring RN precedence, and override base', () => {
225
+ const c = mount(
226
+ <Button style={[{ marginTop: 1 }, { marginTop: 9, backgroundColor: 'rgb(1, 2, 3)' }]}>
227
+ Override
228
+ </Button>,
229
+ );
230
+ const btn = getByRole(c, 'button', { name: 'Override' });
231
+ expect(btn.style.marginTop).toBe('9px');
232
+ // Caller style is spread after the variant container style, so it wins.
233
+ expect(btn.style.backgroundColor).toBe('rgb(1, 2, 3)');
234
+ });
235
+
236
+ it('accepts a single style object', () => {
237
+ const c = mount(<Button style={{ marginTop: 5 }}>Solo</Button>);
238
+ expect(getByRole(c, 'button', { name: 'Solo' }).style.marginTop).toBe('5px');
239
+ });
240
+
241
+ it('flattens an array style onto the asChild child element too', () => {
242
+ const c = mount(
243
+ <Button asChild style={[{ marginTop: 7 }, false]}>
244
+ <a href="/go">Go</a>
245
+ </Button>,
246
+ );
247
+ const link = getByRole(c, 'link', { name: 'Go' });
248
+ expect(link.tagName).toBe('A');
249
+ expect(link.style.marginTop).toBe('7px');
250
+ });
251
+ });
201
252
  });
@@ -42,6 +42,22 @@ describe('confirm-store', () => {
42
42
  await expect(promise).resolves.toBe(false);
43
43
  });
44
44
 
45
+ it('resolves once — a second resolve for the same id is a no-op', async () => {
46
+ // The AlertDialog confirm path calls onConfirm (resolve true) THEN onClose
47
+ // (resolve false) for the SAME entry. The first resolve drains the entry,
48
+ // so the second is ignored and the promise keeps its `true` value. This is
49
+ // the guard the whole confirm() button contract relies on.
50
+ const promise = confirm({ title: 'Proceed?' });
51
+ const id = getConfirmQueue()[0]?.id;
52
+ expect(id).toBeTruthy();
53
+ if (id) {
54
+ resolveConfirm(id, true);
55
+ resolveConfirm(id, false);
56
+ }
57
+ await expect(promise).resolves.toBe(true);
58
+ expect(getConfirmQueue()).toHaveLength(0);
59
+ });
60
+
45
61
  it('drains queued entries to a late subscriber', () => {
46
62
  void confirm({ title: 'Queued before subscribe' });
47
63
  let delivered: number | null = null;
@@ -1,18 +1,10 @@
1
1
  import React, { memo, useCallback } from 'react';
2
- import { StyleSheet, View } from 'react-native';
3
2
 
4
- import { Button } from '../button';
5
- import type { DialogProps } from '../dialog';
6
- import { useTheme } from '../theme/use-theme';
7
- import { Text } from '../typography';
8
- import { fontSize, space } from '../styles/tokens';
3
+ import type { DialogAction, DialogProps } from '../dialog';
9
4
  import type { AlertDialogProps } from './types';
10
5
 
11
6
  type DialogComponent = React.ComponentType<DialogProps>;
12
7
 
13
- /** Centered alert-card max width (px). Matches the legacy AlertDialog card. */
14
- const ALERT_DIALOG_MAX_WIDTH = 440;
15
-
16
8
  /**
17
9
  * Build the `AlertDialog` component bound to a platform `Dialog`.
18
10
  *
@@ -22,10 +14,16 @@ const ALERT_DIALOG_MAX_WIDTH = 440;
22
14
  * (`index.ts` / `index.web.ts`) inject the correct `Dialog` here. The body
23
15
  * below is single-source, no duplication.
24
16
  *
25
- * `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that lays
26
- * out a title, description and a confirm/cancel action row. Reach for the
17
+ * `AlertDialog` is a thin wrapper over `<Dialog placement="center">` that maps
18
+ * the confirm/cancel props onto the Dialog's declarative `actions` row the
19
+ * SAME battle-tested `ActionRow`/`ActionButton` primitive every other bloom
20
+ * confirm surface uses (e.g. Mention's `ConfirmPrompt`), so the button
21
+ * component, layout, and palette stay identical across apps. Reach for the
27
22
  * imperative `confirm()` helper + `<AlertDialogHost />` to trigger a confirm
28
23
  * from an event handler without owning visible state.
24
+ *
25
+ * The centered card uses the Dialog default `maxWidth` (480px) for full visual
26
+ * parity with the shared confirm surface.
29
27
  */
30
28
  export function createAlertDialog(Dialog: DialogComponent) {
31
29
  const AlertDialogComponent = function AlertDialog({
@@ -43,71 +41,52 @@ export function createAlertDialog(Dialog: DialogComponent) {
43
41
  cardStyle,
44
42
  testID,
45
43
  }: AlertDialogProps) {
46
- const theme = useTheme();
47
-
48
- const handleCancel = useCallback(() => {
49
- onCancel?.();
50
- onClose();
51
- }, [onCancel, onClose]);
52
-
44
+ // Confirm resolves + closes SYNCHRONOUSLY, in this order, and must NOT go
45
+ // through the Dialog's auto-close (`shouldCloseOnPress: false`). In
46
+ // controlled mode `close()` fires `onClose` FIRST, and the `confirm()` host
47
+ // wires `onClose` to resolve the promise as *cancelled* (`false`). Running
48
+ // `onConfirm` (resolve `true`, which removes the queue entry) before
49
+ // `onClose` (now a no-op for that entry) is what makes the confirm button
50
+ // resolve `true`.
53
51
  const handleConfirm = useCallback(() => {
54
52
  onConfirm?.();
55
53
  onClose();
56
54
  }, [onConfirm, onClose]);
57
55
 
56
+ const actions: DialogAction[] = [
57
+ {
58
+ label: confirmLabel,
59
+ onPress: handleConfirm,
60
+ color: destructive ? 'destructive' : 'default',
61
+ shouldCloseOnPress: false,
62
+ },
63
+ ];
64
+ if (!hideCancel) {
65
+ // The `cancel` color auto-dismisses via the Dialog's `close()`, which in
66
+ // controlled mode fires `onClose` (the host resolves `false`). `onCancel`
67
+ // runs after the surface finishes closing.
68
+ actions.push({
69
+ label: cancelLabel,
70
+ onPress: onCancel,
71
+ color: 'cancel',
72
+ });
73
+ }
74
+
58
75
  return (
59
76
  <Dialog
60
77
  open={visible}
61
78
  onClose={onClose}
62
79
  placement="center"
63
- // Alert dialogs are blocking by default — the backdrop only dismisses
64
- // when the caller opts in via `dismissible`.
80
+ // Alert dialogs are blocking by default — the backdrop / Escape only
81
+ // dismiss when the caller opts in via `dismissible`.
65
82
  dismissOnBackdrop={dismissible}
66
- maxWidth={ALERT_DIALOG_MAX_WIDTH}
67
83
  title={title}
84
+ description={description}
85
+ actions={actions}
68
86
  label={title}
69
87
  style={cardStyle}
70
88
  testID={testID}
71
- >
72
- {description ? (
73
- <Text
74
- style={{
75
- fontSize: fontSize.md,
76
- lineHeight: fontSize.md * 1.4,
77
- color: theme.colors.textSecondary,
78
- paddingBottom: space.lg,
79
- }}
80
- >
81
- {description}
82
- </Text>
83
- ) : null}
84
- <View style={styles.actions}>
85
- {!hideCancel ? (
86
- <Button
87
- variant="secondary"
88
- size="medium"
89
- onPress={handleCancel}
90
- style={styles.action}
91
- accessibilityLabel={cancelLabel}
92
- >
93
- {cancelLabel}
94
- </Button>
95
- ) : null}
96
- <Button
97
- variant="primary"
98
- size="medium"
99
- onPress={handleConfirm}
100
- style={StyleSheet.flatten([
101
- styles.action,
102
- destructive && { backgroundColor: theme.colors.negative },
103
- ])}
104
- textStyle={destructive ? { color: theme.colors.negativeForeground } : undefined}
105
- accessibilityLabel={confirmLabel}
106
- >
107
- {confirmLabel}
108
- </Button>
109
- </View>
110
- </Dialog>
89
+ />
111
90
  );
112
91
  };
113
92
 
@@ -117,14 +96,3 @@ export function createAlertDialog(Dialog: DialogComponent) {
117
96
  }
118
97
 
119
98
  export type AlertDialogType = ReturnType<typeof createAlertDialog>;
120
-
121
- const styles = StyleSheet.create({
122
- actions: {
123
- flexDirection: 'row',
124
- justifyContent: 'flex-end',
125
- gap: space.sm,
126
- },
127
- action: {
128
- minWidth: 96,
129
- },
130
- });
@@ -9,6 +9,8 @@ import React, {
9
9
  type ReactElement,
10
10
  } from 'react';
11
11
 
12
+ import type { ViewStyle } from 'react-native';
13
+
12
14
  import { useTheme } from '../theme/use-theme';
13
15
  import type { Theme } from '../theme/types';
14
16
  import { SpinnerIcon } from '../loading/SpinnerIcon.web';
@@ -216,6 +218,37 @@ function resolveVariantStyle(
216
218
  }
217
219
  }
218
220
 
221
+ // ---------------------------------------------------------------------------
222
+ // Style normalization
223
+ //
224
+ // Callers idiomatically pass `style` as a React-Native `StyleProp` — most
225
+ // often an ARRAY (`style={[base, cond && override]}`, possibly nested and
226
+ // containing falsy holes from `cond && {...}`). The DOM `<button>` below needs
227
+ // a SINGLE plain object: spreading a raw array into an object literal produces
228
+ // numeric keys (`"0"`, `"1"`, …), which React then assigns onto the real
229
+ // `CSSStyleDeclaration`, throwing
230
+ // `Failed to set an indexed property [0] on 'CSSStyleDeclaration'`. Flatten the
231
+ // StyleProp into one object here, once, before it reaches either merge site.
232
+ // Later entries win, mirroring React-Native array-style precedence.
233
+ //
234
+ // `StyleNode` is a readonly-closed recursion type (RN's own `StyleProp` array
235
+ // member yields `readonly` sub-arrays that aren't assignable back to
236
+ // `StyleProp`, so it can't be recursed over directly). `ButtonProps['style']`
237
+ // is assignable to it, so call sites pass `style` with no cast.
238
+ // ---------------------------------------------------------------------------
239
+
240
+ type StyleNode = ViewStyle | false | null | undefined | '' | ReadonlyArray<StyleNode>;
241
+
242
+ function flattenStyle(style: StyleNode): CSSProperties {
243
+ if (Array.isArray(style)) {
244
+ return style.reduce<CSSProperties>(
245
+ (merged, entry) => Object.assign(merged, flattenStyle(entry)),
246
+ {},
247
+ );
248
+ }
249
+ return style && typeof style === 'object' ? (style as CSSProperties) : {};
250
+ }
251
+
219
252
  // ---------------------------------------------------------------------------
220
253
  // Component
221
254
  // ---------------------------------------------------------------------------
@@ -317,6 +350,10 @@ const ButtonWebComponent: React.FC<ButtonProps> = ({
317
350
 
318
351
  const spinnerColor = loadingColor ?? variantStyle.textColor;
319
352
 
353
+ // Normalize the caller's `style` (single object, array, or falsy) into one
354
+ // flat plain object ONCE, so neither merge site below spreads a raw array.
355
+ const resolvedStyle = flattenStyle(style);
356
+
320
357
  const content = (
321
358
  <>
322
359
  {iconPosition === 'left' && icon}
@@ -381,7 +418,7 @@ const ButtonWebComponent: React.FC<ButtonProps> = ({
381
418
  const childProps = child.props;
382
419
  return React.cloneElement(child, {
383
420
  className: [composedClassName, childProps.className].filter(Boolean).join(' '),
384
- style: { ...containerStyle, ...(style as CSSProperties), ...childProps.style },
421
+ style: { ...containerStyle, ...resolvedStyle, ...childProps.style },
385
422
  onClick: (event: MouseEvent<HTMLElement>) => {
386
423
  if (isInteractionBlocked) {
387
424
  event.preventDefault();
@@ -407,7 +444,7 @@ const ButtonWebComponent: React.FC<ButtonProps> = ({
407
444
  name={name}
408
445
  value={value}
409
446
  className={composedClassName}
410
- style={{ ...containerStyle, ...(style as CSSProperties) }}
447
+ style={{ ...containerStyle, ...resolvedStyle }}
411
448
  onClick={handleClick}
412
449
  disabled={disabled && !loading}
413
450
  aria-disabled={isInteractionBlocked || undefined}