@1money/component-ui 0.0.66 → 0.0.67

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 (129) hide show
  1. package/es/business/Dialog/ResultDialog/ResultDialog.d.ts +3 -0
  2. package/es/business/Dialog/ResultDialog/ResultDialog.js +126 -0
  3. package/es/business/Dialog/ResultDialog/constants.d.ts +27 -0
  4. package/es/business/Dialog/ResultDialog/constants.js +24 -0
  5. package/es/business/Dialog/ResultDialog/index.d.ts +3 -0
  6. package/es/business/Dialog/ResultDialog/index.js +4 -0
  7. package/es/business/Dialog/ResultDialog/interface.d.ts +95 -0
  8. package/es/business/Dialog/ResultDialog/interface.js +2 -0
  9. package/es/business/Dialog/ResultDialog/presets.d.ts +178 -0
  10. package/es/business/Dialog/ResultDialog/presets.js +139 -0
  11. package/es/business/Dialog/ResultDialog/style/ResultDialog.css +29 -0
  12. package/es/business/Dialog/ResultDialog/style/css.js +2 -0
  13. package/es/business/Dialog/ResultDialog/style/index.d.ts +1 -0
  14. package/es/business/Dialog/ResultDialog/style/index.js +2 -0
  15. package/es/business/Dialog/TransactionDialog/TransactionDialog.d.ts +3 -0
  16. package/es/business/Dialog/TransactionDialog/TransactionDialog.js +174 -0
  17. package/es/business/Dialog/TransactionDialog/constants.d.ts +34 -0
  18. package/es/business/Dialog/TransactionDialog/constants.js +33 -0
  19. package/es/business/Dialog/TransactionDialog/index.d.ts +3 -0
  20. package/es/business/Dialog/TransactionDialog/index.js +4 -0
  21. package/es/business/Dialog/TransactionDialog/interface.d.ts +116 -0
  22. package/es/business/Dialog/TransactionDialog/interface.js +2 -0
  23. package/es/business/Dialog/TransactionDialog/presets.d.ts +89 -0
  24. package/es/business/Dialog/TransactionDialog/presets.js +62 -0
  25. package/es/business/Dialog/TransactionDialog/style/TransactionDialog.css +36 -0
  26. package/es/business/Dialog/TransactionDialog/style/css.js +2 -0
  27. package/es/business/Dialog/TransactionDialog/style/index.d.ts +1 -0
  28. package/es/business/Dialog/TransactionDialog/style/index.js +2 -0
  29. package/es/business/Dialog/VerificationDialog/ResendRow.d.ts +14 -0
  30. package/es/business/Dialog/VerificationDialog/ResendRow.js +65 -0
  31. package/es/business/Dialog/VerificationDialog/VerificationDialog.d.ts +3 -0
  32. package/es/business/Dialog/VerificationDialog/VerificationDialog.js +116 -0
  33. package/es/business/Dialog/VerificationDialog/constants.d.ts +35 -0
  34. package/es/business/Dialog/VerificationDialog/constants.js +31 -0
  35. package/es/business/Dialog/VerificationDialog/hooks/index.d.ts +4 -0
  36. package/es/business/Dialog/VerificationDialog/hooks/index.js +3 -0
  37. package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +50 -0
  38. package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +137 -0
  39. package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +26 -0
  40. package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +103 -0
  41. package/es/business/Dialog/VerificationDialog/index.d.ts +3 -0
  42. package/es/business/Dialog/VerificationDialog/index.js +4 -0
  43. package/es/business/Dialog/VerificationDialog/interface.d.ts +124 -0
  44. package/es/business/Dialog/VerificationDialog/interface.js +2 -0
  45. package/es/business/Dialog/VerificationDialog/style/VerificationDialog.css +30 -0
  46. package/es/business/Dialog/VerificationDialog/style/css.js +2 -0
  47. package/es/business/Dialog/VerificationDialog/style/index.d.ts +1 -0
  48. package/es/business/Dialog/VerificationDialog/style/index.js +2 -0
  49. package/es/business/Dialog/index.d.ts +3 -0
  50. package/es/business/Dialog/index.js +4 -0
  51. package/es/business/index.d.ts +1 -0
  52. package/es/business/index.js +2 -1
  53. package/es/components/Button/Button.js +7 -3
  54. package/es/components/Button/constants.d.ts +1 -0
  55. package/es/components/Button/constants.js +2 -1
  56. package/es/components/Button/interface.d.ts +2 -0
  57. package/es/components/Button/style/Button.css +4 -0
  58. package/es/components/Dialog/Dialog.js +16 -7
  59. package/es/components/Dialog/constants.d.ts +1 -0
  60. package/es/components/Dialog/constants.js +3 -2
  61. package/es/components/Dialog/interface.d.ts +1 -0
  62. package/es/components/Dialog/style/Dialog.css +29 -0
  63. package/es/index.css +1 -1
  64. package/lib/business/Dialog/ResultDialog/ResultDialog.d.ts +3 -0
  65. package/lib/business/Dialog/ResultDialog/ResultDialog.js +132 -0
  66. package/lib/business/Dialog/ResultDialog/constants.d.ts +27 -0
  67. package/lib/business/Dialog/ResultDialog/constants.js +30 -0
  68. package/lib/business/Dialog/ResultDialog/index.d.ts +3 -0
  69. package/lib/business/Dialog/ResultDialog/index.js +40 -0
  70. package/lib/business/Dialog/ResultDialog/interface.d.ts +95 -0
  71. package/lib/business/Dialog/ResultDialog/interface.js +6 -0
  72. package/lib/business/Dialog/ResultDialog/presets.d.ts +178 -0
  73. package/lib/business/Dialog/ResultDialog/presets.js +145 -0
  74. package/lib/business/Dialog/ResultDialog/style/ResultDialog.css +29 -0
  75. package/lib/business/Dialog/ResultDialog/style/css.js +4 -0
  76. package/lib/business/Dialog/ResultDialog/style/index.d.ts +1 -0
  77. package/lib/business/Dialog/ResultDialog/style/index.js +4 -0
  78. package/lib/business/Dialog/TransactionDialog/TransactionDialog.d.ts +3 -0
  79. package/lib/business/Dialog/TransactionDialog/TransactionDialog.js +180 -0
  80. package/lib/business/Dialog/TransactionDialog/constants.d.ts +34 -0
  81. package/lib/business/Dialog/TransactionDialog/constants.js +39 -0
  82. package/lib/business/Dialog/TransactionDialog/index.d.ts +3 -0
  83. package/lib/business/Dialog/TransactionDialog/index.js +40 -0
  84. package/lib/business/Dialog/TransactionDialog/interface.d.ts +116 -0
  85. package/lib/business/Dialog/TransactionDialog/interface.js +6 -0
  86. package/lib/business/Dialog/TransactionDialog/presets.d.ts +89 -0
  87. package/lib/business/Dialog/TransactionDialog/presets.js +68 -0
  88. package/lib/business/Dialog/TransactionDialog/style/TransactionDialog.css +36 -0
  89. package/lib/business/Dialog/TransactionDialog/style/css.js +4 -0
  90. package/lib/business/Dialog/TransactionDialog/style/index.d.ts +1 -0
  91. package/lib/business/Dialog/TransactionDialog/style/index.js +4 -0
  92. package/lib/business/Dialog/VerificationDialog/ResendRow.d.ts +14 -0
  93. package/lib/business/Dialog/VerificationDialog/ResendRow.js +71 -0
  94. package/lib/business/Dialog/VerificationDialog/VerificationDialog.d.ts +3 -0
  95. package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +122 -0
  96. package/lib/business/Dialog/VerificationDialog/constants.d.ts +35 -0
  97. package/lib/business/Dialog/VerificationDialog/constants.js +37 -0
  98. package/lib/business/Dialog/VerificationDialog/hooks/index.d.ts +4 -0
  99. package/lib/business/Dialog/VerificationDialog/hooks/index.js +20 -0
  100. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +50 -0
  101. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +144 -0
  102. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +26 -0
  103. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +110 -0
  104. package/lib/business/Dialog/VerificationDialog/index.d.ts +3 -0
  105. package/lib/business/Dialog/VerificationDialog/index.js +43 -0
  106. package/lib/business/Dialog/VerificationDialog/interface.d.ts +124 -0
  107. package/lib/business/Dialog/VerificationDialog/interface.js +6 -0
  108. package/lib/business/Dialog/VerificationDialog/style/VerificationDialog.css +30 -0
  109. package/lib/business/Dialog/VerificationDialog/style/css.js +4 -0
  110. package/lib/business/Dialog/VerificationDialog/style/index.d.ts +1 -0
  111. package/lib/business/Dialog/VerificationDialog/style/index.js +4 -0
  112. package/lib/business/Dialog/index.d.ts +3 -0
  113. package/lib/business/Dialog/index.js +39 -0
  114. package/lib/business/index.d.ts +1 -0
  115. package/lib/business/index.js +12 -1
  116. package/lib/components/Button/Button.js +7 -3
  117. package/lib/components/Button/constants.d.ts +1 -0
  118. package/lib/components/Button/constants.js +2 -1
  119. package/lib/components/Button/interface.d.ts +2 -0
  120. package/lib/components/Button/style/Button.css +4 -0
  121. package/lib/components/Dialog/Dialog.js +16 -7
  122. package/lib/components/Dialog/constants.d.ts +1 -0
  123. package/lib/components/Dialog/constants.js +3 -2
  124. package/lib/components/Dialog/interface.d.ts +1 -0
  125. package/lib/components/Dialog/style/Dialog.css +29 -0
  126. package/lib/index.css +1 -1
  127. package/package.json +21 -1
  128. package/scripts/mcp-server/examples.generated.json +18 -6
  129. package/scripts/mcp-server/index.generated.json +25 -1
@@ -0,0 +1,3 @@
1
+ import type { ResultDialogProps } from './interface';
2
+ import './style';
3
+ export declare const ResultDialog: import("react").NamedExoticComponent<ResultDialogProps>;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ResultDialog = void 0;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _react = require("react");
9
+ var _Button = require("../../../components/Button");
10
+ var _Dialog = require("../../../components/Dialog");
11
+ var _Flex = require("../../../components/Flex");
12
+ var _Typography = require("../../../components/Typography");
13
+ var _classnames = require("../../../utils/classnames");
14
+ var _constants = require("./constants");
15
+ require("./style");
16
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
17
+ var t = {};
18
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
19
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
20
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var renderAction = function renderAction(action, label, defaultColor) {
25
+ var _a;
26
+ return (0, _jsxRuntime.jsx)(_Button.Button, {
27
+ color: (_a = action.color) !== null && _a !== void 0 ? _a : defaultColor,
28
+ loading: action.loading,
29
+ disabled: action.disabled,
30
+ onClick: action.onClick,
31
+ children: label
32
+ });
33
+ };
34
+ // The centered "Trouble…? Let us help!" row below the actions.
35
+ var HelpRow = function HelpRow(_ref) {
36
+ var promptText = _ref.promptText,
37
+ actionText = _ref.actionText,
38
+ onClick = _ref.onClick;
39
+ var handleKeyDown = function handleKeyDown(event) {
40
+ if (!_constants.RESULT_DIALOG.activationKeys.includes(event.key)) return;
41
+ event.preventDefault();
42
+ onClick === null || onClick === void 0 ? void 0 : onClick();
43
+ };
44
+ return (0, _jsxRuntime.jsxs)(_Flex.Flex, {
45
+ align: 'center',
46
+ justify: 'center',
47
+ gap: _constants.RESULT_DIALOG.gap.help,
48
+ className: _constants.RESULT_DIALOG.cls.help,
49
+ children: [promptText && (0, _jsxRuntime.jsx)(_Typography.Typography.Body, {
50
+ size: 'md',
51
+ strong: true,
52
+ color: 'default-tertiary',
53
+ children: promptText
54
+ }), actionText && (0, _jsxRuntime.jsx)(_Typography.Typography.Link, {
55
+ size: 'md',
56
+ color: 'brand',
57
+ role: 'button',
58
+ tabIndex: 0,
59
+ onClick: onClick,
60
+ onKeyDown: handleKeyDown,
61
+ children: actionText
62
+ })]
63
+ });
64
+ };
65
+ var ResultDialogBase = function ResultDialogBase(_a) {
66
+ var _b, _c, _d, _e, _f, _g, _h, _j;
67
+ var preset = _a.preset,
68
+ rest = __rest(_a, ["preset"]);
69
+ // Pull `preset` out first so the rest can fall back to it: a destructuring
70
+ // default applies exactly when the prop is omitted, which is the
71
+ // "explicit wins over preset" semantics we want.
72
+ var open = rest.open,
73
+ _rest$size = rest.size,
74
+ size = _rest$size === void 0 ? _constants.RESULT_DIALOG.defaults.size : _rest$size,
75
+ maskClosable = rest.maskClosable,
76
+ showBackIcon = rest.showBackIcon,
77
+ onBack = rest.onBack,
78
+ className = rest.className,
79
+ primaryAction = rest.primaryAction,
80
+ secondaryAction = rest.secondaryAction,
81
+ help = rest.help,
82
+ onClose = rest.onClose,
83
+ _rest$illustration = rest.illustration,
84
+ illustration = _rest$illustration === void 0 ? preset === null || preset === void 0 ? void 0 : preset.illustration : _rest$illustration,
85
+ _rest$title = rest.title,
86
+ title = _rest$title === void 0 ? preset === null || preset === void 0 ? void 0 : preset.title : _rest$title,
87
+ _rest$description = rest.description,
88
+ description = _rest$description === void 0 ? preset === null || preset === void 0 ? void 0 : preset.description : _rest$description,
89
+ _rest$showCloseIcon = rest.showCloseIcon,
90
+ showCloseIcon = _rest$showCloseIcon === void 0 ? (_b = preset === null || preset === void 0 ? void 0 : preset.showCloseIcon) !== null && _b !== void 0 ? _b : false : _rest$showCloseIcon;
91
+ var hasActions = Boolean(primaryAction || secondaryAction);
92
+ var resolvedHelp = help || (preset === null || preset === void 0 ? void 0 : preset.help) ? {
93
+ promptText: (_c = help === null || help === void 0 ? void 0 : help.promptText) !== null && _c !== void 0 ? _c : (_d = preset === null || preset === void 0 ? void 0 : preset.help) === null || _d === void 0 ? void 0 : _d.promptText,
94
+ actionText: (_e = help === null || help === void 0 ? void 0 : help.actionText) !== null && _e !== void 0 ? _e : (_f = preset === null || preset === void 0 ? void 0 : preset.help) === null || _f === void 0 ? void 0 : _f.actionText,
95
+ onClick: help === null || help === void 0 ? void 0 : help.onClick
96
+ } : undefined;
97
+ var footer = hasActions || resolvedHelp ? (0, _jsxRuntime.jsxs)(_Flex.Flex, {
98
+ vertical: true,
99
+ gap: _constants.RESULT_DIALOG.gap.footer,
100
+ className: _constants.RESULT_DIALOG.cls.footer,
101
+ children: [hasActions &&
102
+ // Secondary on the left, primary on the right; the SCSS makes each
103
+ // fill half the row, so a single action spans the full width.
104
+ (0, _jsxRuntime.jsxs)(_Flex.Flex, {
105
+ gap: _constants.RESULT_DIALOG.gap.actions,
106
+ className: _constants.RESULT_DIALOG.cls.actions,
107
+ children: [secondaryAction && renderAction(secondaryAction, (_g = secondaryAction.label) !== null && _g !== void 0 ? _g : preset === null || preset === void 0 ? void 0 : preset.secondaryLabel, (_h = preset === null || preset === void 0 ? void 0 : preset.secondaryColor) !== null && _h !== void 0 ? _h : _constants.RESULT_DIALOG.defaults.secondaryColor), primaryAction && renderAction(primaryAction, (_j = primaryAction.label) !== null && _j !== void 0 ? _j : preset === null || preset === void 0 ? void 0 : preset.primaryLabel, _constants.RESULT_DIALOG.defaults.primaryColor)]
108
+ }), resolvedHelp && (0, _jsxRuntime.jsx)(HelpRow, Object.assign({}, resolvedHelp))]
109
+ }) : null;
110
+ return (0, _jsxRuntime.jsx)(_Dialog.Dialog, {
111
+ open: open,
112
+ size: size,
113
+ maskClosable: maskClosable,
114
+ showCloseIcon: showCloseIcon,
115
+ showBackIcon: showBackIcon,
116
+ onBack: onBack,
117
+ className: (0, _classnames.joinCls)(_constants.RESULT_DIALOG.cls.wrap, className),
118
+ title: title,
119
+ illustration: illustration,
120
+ footer: footer,
121
+ onCancel: onClose,
122
+ children: description && (0, _jsxRuntime.jsx)(_Typography.Typography.Body, {
123
+ as: 'p',
124
+ size: 'lg',
125
+ strong: true,
126
+ color: 'default-secondary',
127
+ children: description
128
+ })
129
+ });
130
+ };
131
+ var ResultDialog = exports.ResultDialog = /*#__PURE__*/(0, _react.memo)(ResultDialogBase);
132
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9SZXN1bHREaWFsb2cvUmVzdWx0RGlhbG9nLmpzIiwiYnVzaW5lc3MvRGlhbG9nL3NyYy9idXNpbmVzcy9EaWFsb2cvUmVzdWx0RGlhbG9nL1Jlc3VsdERpYWxvZy50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX0J1dHRvbiIsIl9EaWFsb2ciLCJfRmxleCIsIl9UeXBvZ3JhcGh5IiwiX2NsYXNzbmFtZXMiLCJfY29uc3RhbnRzIiwiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJyZW5kZXJBY3Rpb24iLCJhY3Rpb24iLCJsYWJlbCIsImRlZmF1bHRDb2xvciIsIl9hIiwiX2pzeCIsIkJ1dHRvbiIsImNvbG9yIiwibG9hZGluZyIsImRpc2FibGVkIiwib25DbGljayIsImNoaWxkcmVuIiwiSGVscFJvdyIsIl9yZWYiLCJwcm9tcHRUZXh0IiwiYWN0aW9uVGV4dCIsImhhbmRsZUtleURvd24iLCJldmVudCIsIlJFU1VMVF9ESUFMT0ciLCJhY3RpdmF0aW9uS2V5cyIsImluY2x1ZGVzIiwia2V5IiwicHJldmVudERlZmF1bHQiLCJfanN4cyIsIkZsZXgiLCJhbGlnbiIsImp1c3RpZnkiLCJnYXAiLCJoZWxwIiwiY2xhc3NOYW1lIiwiY2xzIiwiVHlwb2dyYXBoeSIsIkJvZHkiLCJzaXplIiwic3Ryb25nIiwiTGluayIsInJvbGUiLCJ0YWJJbmRleCIsIm9uS2V5RG93biIsIlJlc3VsdERpYWxvZ0Jhc2UiLCJfYiIsIl9jIiwiX2QiLCJfZSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwicHJlc2V0IiwicmVzdCIsIm9wZW4iLCJfcmVzdCRzaXplIiwiZGVmYXVsdHMiLCJtYXNrQ2xvc2FibGUiLCJzaG93QmFja0ljb24iLCJvbkJhY2siLCJwcmltYXJ5QWN0aW9uIiwic2Vjb25kYXJ5QWN0aW9uIiwib25DbG9zZSIsIl9yZXN0JGlsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbiIsIl9yZXN0JHRpdGxlIiwidGl0bGUiLCJfcmVzdCRkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwiX3Jlc3Qkc2hvd0Nsb3NlSWNvbiIsInNob3dDbG9zZUljb24iLCJoYXNBY3Rpb25zIiwiQm9vbGVhbiIsInJlc29sdmVkSGVscCIsInVuZGVmaW5lZCIsImZvb3RlciIsInZlcnRpY2FsIiwiYWN0aW9ucyIsInNlY29uZGFyeUxhYmVsIiwic2Vjb25kYXJ5Q29sb3IiLCJwcmltYXJ5TGFiZWwiLCJwcmltYXJ5Q29sb3IiLCJhc3NpZ24iLCJEaWFsb2ciLCJqb2luQ2xzIiwid3JhcCIsIm9uQ2FuY2VsIiwiYXMiLCJSZXN1bHREaWFsb2ciLCJleHBvcnRzIiwibWVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBV0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDWEEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBSUFBLE9BQUE7QURWQSxJQUFJUSxNQUFNLEdBQUksVUFBUSxTQUFLQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9B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LE1BQUEsQ0FBQXVGLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBS1QsWUFBWSxDQUFBLENBQUk7RUFBQSxDQUFBLENBQ3pDLEdBQ0wsSUFBSTtFQUVWLE9BQ0UsSUFBQWhFLGVBQUEsRUFBQzBFLGNBQU0sRUFBQTtJQUNMN0IsSUFBSSxFQUFFQSxJQUFJO0lBQ1ZqQixJQUFJLEVBQUVBLElBQUk7SUFDVm9CLFlBQVksRUFBRUEsWUFBWTtJQUMxQmEsYUFBYSxFQUFFQSxhQUFhO0lBQzVCWixZQUFZLEVBQUVBLFlBQVk7SUFDMUJDLE1BQU0sRUFBRUEsTUFBTTtJQUNkMUIsU0FBUyxFQUFFLElBQUFtRCxtQkFBTyxFQUFDOUQsd0JBQWEsQ0FBQ1ksR0FBRyxDQUFDbUQsSUFBSSxFQUFFcEQsU0FBUyxDQUFDO0lBQ3JEaUMsS0FBSyxFQUFFQSxLQUFLO0lBQ1pGLFlBQVksRUFBRUEsWUFBWTtJQUMxQlcsTUFBTSxFQUFFQSxNQUFNO0lBQ2RXLFFBQVEsRUFBRXhCLE9BQU87SUFBQS9DLFFBQUEsRUFJaEJxRCxXQUFXLElBQ1YsSUFBQTNELGVBQUEsRUFBQzBCLHNCQUFVLENBQUNDLElBQUksRUFBQTtNQUFDbUQsRUFBRSxFQUFDLEdBQUc7TUFBQ2xELElBQUksRUFBQyxJQUFJO01BQUNDLE1BQU0sRUFBQSxJQUFBO01BQUMzQixLQUFLLEVBQUMsbUJBQW1CO01BQUFJLFFBQUEsRUFDL0RxRDtJQUFXLENBQUE7RUFFZixDQUFBLENBQ007QUFFYixDQUFDO0FBRU0sSUFBTW9CLFlBQVksR0FBQUMsT0FBQSxDQUFBRCxZQUFBLGdCQUFHLElBQUFFLFdBQUksRUFBQy9DLGdCQUFnQixDQUFDIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9SZXN1bHREaWFsb2cvUmVzdWx0RGlhbG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL0J1dHRvbic7XG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL0RpYWxvZyc7XG5pbXBvcnQgeyBGbGV4IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9GbGV4JztcbmltcG9ydCB7IFR5cG9ncmFwaHkgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgam9pbkNscyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgUkVTVUxUX0RJQUxPRyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5jb25zdCByZW5kZXJBY3Rpb24gPSAoYWN0aW9uLCBsYWJlbCwgZGVmYXVsdENvbG9yKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2pzeChCdXR0b24sIHsgY29sb3I6IChfYSA9IGFjdGlvbi5jb2xvcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZGVmYXVsdENvbG9yLCBsb2FkaW5nOiBhY3Rpb24ubG9hZGluZywgZGlzYWJsZWQ6IGFjdGlvbi5kaXNhYmxlZCwgb25DbGljazogYWN0aW9uLm9uQ2xpY2ssIGNoaWxkcmVuOiBsYWJlbCB9KSk7XG59O1xuLy8gVGhlIGNlbnRlcmVkIFwiVHJvdWJsZeKApj8gTGV0IHVzIGhlbHAhXCIgcm93IGJlbG93IHRoZSBhY3Rpb25zLlxuY29uc3QgSGVscFJvdyA9ICh7IHByb21wdFRleHQsIGFjdGlvblRleHQsIG9uQ2xpY2sgfSkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFSRVNVTFRfRElBTE9HLmFjdGl2YXRpb25LZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljaygpO1xuICAgIH07XG4gICAgcmV0dXJuIChfanN4cyhGbGV4LCB7IGFsaWduOiAnY2VudGVyJywganVzdGlmeTogJ2NlbnRlcicsIGdhcDogUkVTVUxUX0RJQUxPRy5nYXAuaGVscCwgY2xhc3NOYW1lOiBSRVNVTFRfRElBTE9HLmNscy5oZWxwLCBjaGlsZHJlbjogW3Byb21wdFRleHQgJiYgKF9qc3goVHlwb2dyYXBoeS5Cb2R5LCB7IHNpemU6ICdtZCcsIHN0cm9uZzogdHJ1ZSwgY29sb3I6ICdkZWZhdWx0LXRlcnRpYXJ5JywgY2hpbGRyZW46IHByb21wdFRleHQgfSkpLCBhY3Rpb25UZXh0ICYmIChfanN4KFR5cG9ncmFwaHkuTGluaywgeyBzaXplOiAnbWQnLCBjb2xvcjogJ2JyYW5kJywgcm9sZTogJ2J1dHRvbicsIHRhYkluZGV4OiAwLCBvbkNsaWNrOiBvbkNsaWNrLCBvbktleURvd246IGhhbmRsZUtleURvd24sIGNoaWxkcmVuOiBhY3Rpb25UZXh0IH0pKV0gfSkpO1xufTtcbmNvbnN0IFJlc3VsdERpYWxvZ0Jhc2UgPSAoX2EpID0+IHtcbiAgICB2YXIgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qO1xuICAgIHZhciB7IHByZXNldCB9ID0gX2EsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInByZXNldFwiXSk7XG4gICAgLy8gUHVsbCBgcHJlc2V0YCBvdXQgZmlyc3Qgc28gdGhlIHJlc3QgY2FuIGZhbGwgYmFjayB0byBpdDogYSBkZXN0cnVjdHVyaW5nXG4gICAgLy8gZGVmYXVsdCBhcHBsaWVzIGV4YWN0bHkgd2hlbiB0aGUgcHJvcCBpcyBvbWl0dGVkLCB3aGljaCBpcyB0aGVcbiAgICAvLyBcImV4cGxpY2l0IHdpbnMgb3ZlciBwcmVzZXRcIiBzZW1hbnRpY3Mgd2Ugd2FudC5cbiAgICBjb25zdCB7IG9wZW4sIHNpemUgPSBSRVNVTFRfRElBTE9HLmRlZmF1bHRzLnNpemUsIG1hc2tDbG9zYWJsZSwgc2hvd0JhY2tJY29uLCBvbkJhY2ssIGNsYXNzTmFtZSwgcHJpbWFyeUFjdGlvbiwgc2Vjb25kYXJ5QWN0aW9uLCBoZWxwLCBvbkNsb3NlLCBpbGx1c3RyYXRpb24gPSBwcmVzZXQgPT09IG51bGwgfHwgcHJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmVzZXQuaWxsdXN0cmF0aW9uLCB0aXRsZSA9IHByZXNldCA9PT0gbnVsbCB8fCBwcmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByZXNldC50aXRsZSwgZGVzY3JpcHRpb24gPSBwcmVzZXQgPT09IG51bGwgfHwgcHJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmVzZXQuZGVzY3JpcHRpb24sIHNob3dDbG9zZUljb24gPSAoX2IgPSBwcmVzZXQgPT09IG51bGwgfHwgcHJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmVzZXQuc2hvd0Nsb3NlSWNvbikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZmFsc2UsIH0gPSByZXN0O1xuICAgIGNvbnN0IGhhc0FjdGlvbnMgPSBCb29sZWFuKHByaW1hcnlBY3Rpb24gfHwgc2Vjb25kYXJ5QWN0aW9uKTtcbiAgICBjb25zdCByZXNvbHZlZEhlbHAgPSBoZWxwIHx8IChwcmVzZXQgPT09IG51bGwgfHwgcHJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmVzZXQuaGVscClcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwcm9tcHRUZXh0OiAoX2MgPSBoZWxwID09PSBudWxsIHx8IGhlbHAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGhlbHAucHJvbXB0VGV4dCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogKF9kID0gcHJlc2V0ID09PSBudWxsIHx8IHByZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJlc2V0LmhlbHApID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5wcm9tcHRUZXh0LFxuICAgICAgICAgICAgYWN0aW9uVGV4dDogKF9lID0gaGVscCA9PT0gbnVsbCB8fCBoZWxwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBoZWxwLmFjdGlvblRleHQpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IChfZiA9IHByZXNldCA9PT0gbnVsbCB8fCBwcmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByZXNldC5oZWxwKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YuYWN0aW9uVGV4dCxcbiAgICAgICAgICAgIG9uQ2xpY2s6IGhlbHAgPT09IG51bGwgfHwgaGVscCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGVscC5vbkNsaWNrLFxuICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZvb3RlciA9IGhhc0FjdGlvbnMgfHwgcmVzb2x2ZWRIZWxwID8gKF9qc3hzKEZsZXgsIHsgdmVydGljYWw6IHRydWUsIGdhcDogUkVTVUxUX0RJQUxPRy5nYXAuZm9vdGVyLCBjbGFzc05hbWU6IFJFU1VMVF9ESUFMT0cuY2xzLmZvb3RlciwgY2hpbGRyZW46IFtoYXNBY3Rpb25zICYmIChcbiAgICAgICAgICAgIC8vIFNlY29uZGFyeSBvbiB0aGUgbGVmdCwgcHJpbWFyeSBvbiB0aGUgcmlnaHQ7IHRoZSBTQ1NTIG1ha2VzIGVhY2hcbiAgICAgICAgICAgIC8vIGZpbGwgaGFsZiB0aGUgcm93LCBzbyBhIHNpbmdsZSBhY3Rpb24gc3BhbnMgdGhlIGZ1bGwgd2lkdGguXG4gICAgICAgICAgICBfanN4cyhGbGV4LCB7IGdhcDogUkVTVUxUX0RJQUxPRy5nYXAuYWN0aW9ucywgY2xhc3NOYW1lOiBSRVNVTFRfRElBTE9HLmNscy5hY3Rpb25zLCBjaGlsZHJlbjogW3NlY29uZGFyeUFjdGlvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQWN0aW9uKHNlY29uZGFyeUFjdGlvbiwgKF9nID0gc2Vjb25kYXJ5QWN0aW9uLmxhYmVsKSAhPT0gbnVsbCAmJiBfZyAhPT0gdm9pZCAwID8gX2cgOiBwcmVzZXQgPT09IG51bGwgfHwgcHJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmVzZXQuc2Vjb25kYXJ5TGFiZWwsIChfaCA9IHByZXNldCA9PT0gbnVsbCB8fCBwcmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByZXNldC5zZWNvbmRhcnlDb2xvcikgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogUkVTVUxUX0RJQUxPRy5kZWZhdWx0cy5zZWNvbmRhcnlDb2xvciksIHByaW1hcnlBY3Rpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckFjdGlvbihwcmltYXJ5QWN0aW9uLCAoX2ogPSBwcmltYXJ5QWN0aW9uLmxhYmVsKSAhPT0gbnVsbCAmJiBfaiAhPT0gdm9pZCAwID8gX2ogOiBwcmVzZXQgPT09IG51bGwgfHwgcHJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmVzZXQucHJpbWFyeUxhYmVsLCBSRVNVTFRfRElBTE9HLmRlZmF1bHRzLnByaW1hcnlDb2xvcildIH0pKSwgcmVzb2x2ZWRIZWxwICYmIF9qc3goSGVscFJvdywgT2JqZWN0LmFzc2lnbih7fSwgcmVzb2x2ZWRIZWxwKSldIH0pKSA6IG51bGw7XG4gICAgcmV0dXJuIChfanN4KERpYWxvZywgeyBvcGVuOiBvcGVuLCBzaXplOiBzaXplLCBtYXNrQ2xvc2FibGU6IG1hc2tDbG9zYWJsZSwgc2hvd0Nsb3NlSWNvbjogc2hvd0Nsb3NlSWNvbiwgc2hvd0JhY2tJY29uOiBzaG93QmFja0ljb24sIG9uQmFjazogb25CYWNrLCBjbGFzc05hbWU6IGpvaW5DbHMoUkVTVUxUX0RJQUxPRy5jbHMud3JhcCwgY2xhc3NOYW1lKSwgdGl0bGU6IHRpdGxlLCBpbGx1c3RyYXRpb246IGlsbHVzdHJhdGlvbiwgZm9vdGVyOiBmb290ZXIsIG9uQ2FuY2VsOiBvbkNsb3NlLCBjaGlsZHJlbjogZGVzY3JpcHRpb24gJiYgKF9qc3goVHlwb2dyYXBoeS5Cb2R5LCB7IGFzOiAncCcsIHNpemU6ICdsZycsIHN0cm9uZzogdHJ1ZSwgY29sb3I6ICdkZWZhdWx0LXNlY29uZGFyeScsIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KSkgfSkpO1xufTtcbmV4cG9ydCBjb25zdCBSZXN1bHREaWFsb2cgPSBtZW1vKFJlc3VsdERpYWxvZ0Jhc2UpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,27 @@
1
+ import type { ButtonColor } from "../../../components/Button";
2
+ import type { DialogSize } from "../../../components/Dialog";
3
+ interface ResultDialogConstants {
4
+ /** BEM class names, all derived from the wrapper prefix. */
5
+ cls: {
6
+ wrap: string;
7
+ actions: string;
8
+ footer: string;
9
+ help: string;
10
+ };
11
+ /** Spacing in px, matching the 1money dialog rhythm. */
12
+ gap: {
13
+ actions: number;
14
+ footer: number;
15
+ help: number;
16
+ };
17
+ /** Fallback values when neither a prop nor a preset provides one. */
18
+ defaults: {
19
+ size: DialogSize;
20
+ primaryColor: ButtonColor;
21
+ secondaryColor: ButtonColor;
22
+ };
23
+ /** Keys that activate the help link (an <a> with no href, like a button). */
24
+ activationKeys: readonly string[];
25
+ }
26
+ export declare const RESULT_DIALOG: ResultDialogConstants;
27
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RESULT_DIALOG = void 0;
7
+ var PREFIX = 'om-result-dialog';
8
+ var RESULT_DIALOG = exports.RESULT_DIALOG = {
9
+ cls: {
10
+ wrap: PREFIX,
11
+ actions: "".concat(PREFIX, "-actions"),
12
+ footer: "".concat(PREFIX, "-footer"),
13
+ help: "".concat(PREFIX, "-help")
14
+ },
15
+ // 12px between the two buttons, 24px between the action row and the help row,
16
+ // 4px between the help prompt and its link.
17
+ gap: {
18
+ actions: 12,
19
+ footer: 24,
20
+ help: 4
21
+ },
22
+ defaults: {
23
+ size: 'small',
24
+ primaryColor: 'primary',
25
+ secondaryColor: 'secondary'
26
+ },
27
+ // `Typography.Link` renders an <a> with no href, so Enter/Space activate it.
28
+ activationKeys: ['Enter', ' ']
29
+ };
30
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1Jlc3VsdERpYWxvZy9jb25zdGFudHMudHMiLCJidXNpbmVzcy9EaWFsb2cvUmVzdWx0RGlhbG9nL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJQUkVGSVgiLCJSRVNVTFRfRElBTE9HIiwiZXhwb3J0cyIsImNscyIsIndyYXAiLCJhY3Rpb25zIiwiY29uY2F0IiwiZm9vdGVyIiwiaGVscCIsImdhcCIsImRlZmF1bHRzIiwic2l6ZSIsInByaW1hcnlDb2xvciIsInNlY29uZGFyeUNvbG9yIiwiYWN0aXZhdGlvbktleXMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQWNBLElBQU1BLE1BQU0sR0FBRyxrQkFBa0I7QUFFMUIsSUFBTUMsYUFBYSxHQUFBQyxPQUFBLENBQUFELGFBQUEsR0FBMEI7RUFDbERFLEdBQUcsRUFBRTtJQUNIQyxJQUFJLEVBQUVKLE1BQU07SUFDWkssT0FBTyxLQUFBQyxNQUFBLENBQUtOLE1BQU0sYUFBVTtJQUM1Qk8sTUFBTSxLQUFBRCxNQUFBLENBQUtOLE1BQU0sWUFBUztJQUMxQlEsSUFBSSxLQUFBRixNQUFBLENBQUtOLE1BQU07RUNkZixDRGVEO0VBQ0Q7RUFDQTtFQUNBUyxHQUFHLEVBQUU7SUFBRUosT0FBTyxFQUFFLEVBQUU7SUFBRUUsTUFBTSxFQUFFLEVBQUU7SUFBRUMsSUFBSSxFQUFFO0VBQUMsQ0FBRTtFQUN6Q0UsUUFBUSxFQUFFO0lBQUVDLElBQUksRUFBRSxPQUFPO0lBQUVDLFlBQVksRUFBRSxTQUFTO0lBQUVDLGNBQWMsRUFBRTtFQUFXLENBQUU7RUFDakY7RUFDQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUc7QUNkL0IsQ0RlQyIsImZpbGUiOiJidXNpbmVzcy9EaWFsb2cvUmVzdWx0RGlhbG9nL2NvbnN0YW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiY29uc3QgUFJFRklYID0gJ29tLXJlc3VsdC1kaWFsb2cnO1xuZXhwb3J0IGNvbnN0IFJFU1VMVF9ESUFMT0cgPSB7XG4gICAgY2xzOiB7XG4gICAgICAgIHdyYXA6IFBSRUZJWCxcbiAgICAgICAgYWN0aW9uczogYCR7UFJFRklYfS1hY3Rpb25zYCxcbiAgICAgICAgZm9vdGVyOiBgJHtQUkVGSVh9LWZvb3RlcmAsXG4gICAgICAgIGhlbHA6IGAke1BSRUZJWH0taGVscGAsXG4gICAgfSxcbiAgICAvLyAxMnB4IGJldHdlZW4gdGhlIHR3byBidXR0b25zLCAyNHB4IGJldHdlZW4gdGhlIGFjdGlvbiByb3cgYW5kIHRoZSBoZWxwIHJvdyxcbiAgICAvLyA0cHggYmV0d2VlbiB0aGUgaGVscCBwcm9tcHQgYW5kIGl0cyBsaW5rLlxuICAgIGdhcDogeyBhY3Rpb25zOiAxMiwgZm9vdGVyOiAyNCwgaGVscDogNCB9LFxuICAgIGRlZmF1bHRzOiB7IHNpemU6ICdzbWFsbCcsIHByaW1hcnlDb2xvcjogJ3ByaW1hcnknLCBzZWNvbmRhcnlDb2xvcjogJ3NlY29uZGFyeScgfSxcbiAgICAvLyBgVHlwb2dyYXBoeS5MaW5rYCByZW5kZXJzIGFuIDxhPiB3aXRoIG5vIGhyZWYsIHNvIEVudGVyL1NwYWNlIGFjdGl2YXRlIGl0LlxuICAgIGFjdGl2YXRpb25LZXlzOiBbJ0VudGVyJywgJyAnXSxcbn07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,3 @@
1
+ export { ResultDialog } from './ResultDialog';
2
+ export * from './presets';
3
+ export * from './interface';
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ ResultDialog: true
8
+ };
9
+ Object.defineProperty(exports, "ResultDialog", {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return _ResultDialog.ResultDialog;
13
+ }
14
+ });
15
+ var _ResultDialog = require("./ResultDialog");
16
+ var _presets = require("./presets");
17
+ Object.keys(_presets).forEach(function (key) {
18
+ if (key === "default" || key === "__esModule") return;
19
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
+ if (key in exports && exports[key] === _presets[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _presets[key];
25
+ }
26
+ });
27
+ });
28
+ var _interface = require("./interface");
29
+ Object.keys(_interface).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
32
+ if (key in exports && exports[key] === _interface[key]) return;
33
+ Object.defineProperty(exports, key, {
34
+ enumerable: true,
35
+ get: function get() {
36
+ return _interface[key];
37
+ }
38
+ });
39
+ });
40
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1Jlc3VsdERpYWxvZy9pbmRleC50cyJdLCJuYW1lcyI6WyJfUmVzdWx0RGlhbG9nIiwicmVxdWlyZSIsIl9wcmVzZXRzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfZXhwb3J0TmFtZXMiLCJleHBvcnRzIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX2ludGVyZmFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxhQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFBQUUsTUFBQSxDQUFBQyxJQUFBLENBQUFGLFFBQUEsRUFBQUcsT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQUMsWUFBQSxFQUFBSixHQUFBO0VBQUEsSUFBQUEsR0FBQSxJQUFBSyxPQUFBLElBQUFBLE9BQUEsQ0FBQUwsR0FBQSxNQUFBSixRQUFBLENBQUFJLEdBQUE7RUFBQUgsTUFBQSxDQUFBUyxjQUFBLENBQUFELE9BQUEsRUFBQUwsR0FBQTtJQUFBTyxVQUFBO0lBQUFDLEdBQUEsV0FBQUEsSUFBQTtNQUFBLE9BQUFaLFFBQUEsQ0FBQUksR0FBQTtJQUFBO0VBQUE7QUFBQTtBQUNBLElBQUFTLFVBQUEsR0FBQWQsT0FBQTtBQUFBRSxNQUFBLENBQUFDLElBQUEsQ0FBQVcsVUFBQSxFQUFBVixPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFLLE9BQUEsSUFBQUEsT0FBQSxDQUFBTCxHQUFBLE1BQUFTLFVBQUEsQ0FBQVQsR0FBQTtFQUFBSCxNQUFBLENBQUFTLGNBQUEsQ0FBQUQsT0FBQSxFQUFBTCxHQUFBO0lBQUFPLFVBQUE7SUFBQUMsR0FBQSxXQUFBQSxJQUFBO01BQUEsT0FBQUMsVUFBQSxDQUFBVCxHQUFBO0lBQUE7RUFBQTtBQUFBIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9SZXN1bHREaWFsb2cvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,95 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ButtonColor } from "../../../components/Button";
3
+ import type { DialogProps } from "../../../components/Dialog";
4
+ import type { IconName } from "../../../components/Icons";
5
+ import type { ResultDialogPresetCopy } from './presets';
6
+ /**
7
+ * A footer action button. `primaryAction` and `secondaryAction` share the same
8
+ * shape; only their default color differs (`primary` vs `secondary`).
9
+ */
10
+ export interface ResultDialogAction {
11
+ /**
12
+ * Button label. Optional when a `preset` supplies one — the preset's
13
+ * `primaryLabel` / `secondaryLabel` is used unless overridden here.
14
+ */
15
+ label?: ReactNode;
16
+ /** Click handler. */
17
+ onClick?: () => void;
18
+ /** Disable the button. */
19
+ disabled?: boolean;
20
+ /** Show a spinner and block clicks while an async action is in flight. */
21
+ loading?: boolean;
22
+ /**
23
+ * Color tone override. Defaults to `'primary'` for `primaryAction`; for
24
+ * `secondaryAction` it defaults to the preset's `secondaryColor` (or
25
+ * `'secondary'` when no preset is set).
26
+ */
27
+ color?: ButtonColor;
28
+ }
29
+ /**
30
+ * Optional centered help row below the actions, e.g.
31
+ * `"Trouble with your account? Let us help!"`. A `preset` may supply the text;
32
+ * pass `onClick` to make the action operable.
33
+ */
34
+ export interface ResultDialogHelp {
35
+ /** Muted prompt text. Falls back to the preset's help prompt. */
36
+ promptText?: ReactNode;
37
+ /** Trailing brand-colored action text. Falls back to the preset's help action. */
38
+ actionText?: ReactNode;
39
+ /** Fires when the action text is clicked or activated via keyboard. */
40
+ onClick?: () => void;
41
+ }
42
+ export interface ResultDialogProps extends Pick<DialogProps, 'open' | 'size' | 'maskClosable' | 'showCloseIcon' | 'showBackIcon' | 'onBack' | 'className'> {
43
+ /**
44
+ * Pre-canned scenario object (e.g. `RESULT_DIALOG_PRESETS.account.locked`)
45
+ * that fills `illustration`, `title`, `description`, the action labels, the
46
+ * secondary tone, the close icon, and the help row. Any explicit prop below
47
+ * overrides the preset; the consumer always wires the `onClick`s.
48
+ */
49
+ preset?: ResultDialogPresetCopy;
50
+ /**
51
+ * Dialog heading, e.g. `"The email is already on the waitlist"`. Optional when
52
+ * a `preset` supplies one.
53
+ */
54
+ title?: ReactNode;
55
+ /** Supporting copy under the title explaining the outcome and next steps. */
56
+ description?: ReactNode;
57
+ /**
58
+ * Illustration above the title (left-aligned, 74px). Pass an `IconName` (e.g.
59
+ * `'illusChecked'`, `'illusID'`, `'illusError'`) or any node.
60
+ */
61
+ illustration?: ReactNode | IconName;
62
+ /**
63
+ * Primary (right-most) action. Rendered with the brand-blue `primary` color.
64
+ *
65
+ * @example
66
+ * ```tsx
67
+ * <ResultDialog
68
+ * open={open}
69
+ * illustration="illusID"
70
+ * title="The email is already on the waitlist"
71
+ * description="We'll notify you as soon as retail services become available."
72
+ * secondaryAction={{ label: 'Use Another Email', onClick: changeEmail }}
73
+ * primaryAction={{ label: 'Sign Up For Business', onClick: signUp }}
74
+ * onClose={() => setOpen(false)}
75
+ * />
76
+ * ```
77
+ */
78
+ primaryAction?: ResultDialogAction;
79
+ /**
80
+ * Optional secondary (left) action. When present, the two buttons split the
81
+ * row evenly; with only one action the button spans the full width. Its tone
82
+ * defaults to the preset's `secondaryColor` (or `'secondary'`).
83
+ */
84
+ secondaryAction?: ResultDialogAction;
85
+ /**
86
+ * Optional centered help row below the actions. Rendered when provided, or
87
+ * when the active `preset` defines help copy. Pass `onClick` to wire it.
88
+ */
89
+ help?: ResultDialogHelp;
90
+ /**
91
+ * Fires from the close icon, mask click, and Escape key. Set your `open`
92
+ * state to `false` here.
93
+ */
94
+ onClose?: () => void;
95
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL1Jlc3VsdERpYWxvZy9pbnRlcmZhY2UuanMiLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMiLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9SZXN1bHREaWFsb2cvaW50ZXJmYWNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,178 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ButtonColor } from "../../../components/Button";
3
+ import type { IconName } from "../../../components/Icons";
4
+ /** Default copy for the optional help row (e.g. "Trouble with your account? Let us help!"). */
5
+ export interface ResultDialogPresetHelp {
6
+ /** Muted prompt text. */
7
+ promptText?: ReactNode;
8
+ /** Trailing brand-colored action text. */
9
+ actionText?: ReactNode;
10
+ }
11
+ /**
12
+ * Pre-canned config for a result scenario. A preset fills the dialog's
13
+ * illustration, title, description, action labels, secondary-button tone, close
14
+ * icon, and help row; the consumer still wires the `onClick` handlers, and any
15
+ * explicit prop overrides the preset.
16
+ */
17
+ export interface ResultDialogPresetCopy {
18
+ /** Left-aligned 74px illustration. */
19
+ illustration: IconName;
20
+ /** Dialog heading. */
21
+ title: ReactNode;
22
+ /** Supporting copy under the title. */
23
+ description: ReactNode;
24
+ /** Default label for the primary (right) action, when one is rendered. */
25
+ primaryLabel?: ReactNode;
26
+ /** Default label for the secondary (left) action, when one is rendered. */
27
+ secondaryLabel?: ReactNode;
28
+ /**
29
+ * Secondary-button tone — `'secondary'` (light blue) or `'grey'`.
30
+ * @default 'secondary'
31
+ */
32
+ secondaryColor?: ButtonColor;
33
+ /**
34
+ * Whether the close (X) icon shows by default for this scenario.
35
+ * @default false
36
+ */
37
+ showCloseIcon?: boolean;
38
+ /** Default help-row copy below the actions. */
39
+ help?: ResultDialogPresetHelp;
40
+ }
41
+ /**
42
+ * Canonical result scenarios, grouped by domain. Pass a leaf object straight to
43
+ * `ResultDialog`'s `preset` prop — there is no string key to remember; the IDE
44
+ * navigates and type-checks the path.
45
+ *
46
+ * The `account` / `auth` / `txn` entries are extracted verbatim from the Figma
47
+ * result-dialog frames (two obvious source typos corrected: "clicks",
48
+ * "encountered"); `account.taken` / `auth.linkExpired` mirror the scp-ui
49
+ * Failure screens that have no dedicated Figma frame here.
50
+ *
51
+ * @example
52
+ * ```tsx
53
+ * import { RESULT_DIALOG_PRESETS } from '@1money/component-ui/business/Dialog/ResultDialog';
54
+ *
55
+ * <ResultDialog
56
+ * open={open}
57
+ * preset={RESULT_DIALOG_PRESETS.account.locked}
58
+ * primaryAction={{ onClick: dismiss }}
59
+ * help={{ onClick: openSupport }}
60
+ * onClose={() => setOpen(false)}
61
+ * />;
62
+ * ```
63
+ */
64
+ export declare const RESULT_DIALOG_PRESETS: {
65
+ readonly account: {
66
+ readonly waitlisted: {
67
+ readonly illustration: "illusID";
68
+ readonly title: "This email is already on the waitlist";
69
+ readonly description: "We’ll notify you as soon as retail services become available. You can also sign up for business account or use a different email to join the retail waitlist.";
70
+ readonly primaryLabel: "Sign Up For Business";
71
+ readonly secondaryLabel: "Use another email";
72
+ readonly secondaryColor: "secondary";
73
+ };
74
+ readonly added: {
75
+ readonly illustration: "illusChecked";
76
+ readonly title: "Success!";
77
+ readonly description: "Your account has been added successfully";
78
+ readonly primaryLabel: "Done";
79
+ readonly showCloseIcon: true;
80
+ };
81
+ readonly created: {
82
+ readonly illustration: "illusChecked";
83
+ readonly title: "Success!";
84
+ readonly description: "Your account has been successfully created. To enhance your security, we recommend setting up Two-Factor Authentication.";
85
+ readonly primaryLabel: "Set up 2FA";
86
+ readonly secondaryLabel: "Skip For Now";
87
+ readonly secondaryColor: "secondary";
88
+ };
89
+ readonly pending: {
90
+ readonly illustration: "illusPending";
91
+ readonly title: "Pending";
92
+ readonly description: "Account review in progress. We will notify you via email once approved.";
93
+ readonly primaryLabel: "Done";
94
+ readonly showCloseIcon: true;
95
+ };
96
+ readonly locked: {
97
+ readonly illustration: "illusLocked";
98
+ readonly title: "Your account is temporarily locked";
99
+ readonly description: "Your account is temporarily locked due to incorrect code attempts. Please try again after 30 minutes.";
100
+ readonly primaryLabel: "Got It";
101
+ readonly showCloseIcon: true;
102
+ readonly help: {
103
+ readonly promptText: "Trouble with your account?";
104
+ readonly actionText: "Let us help!";
105
+ };
106
+ };
107
+ readonly taken: {
108
+ readonly illustration: "illusEmailError";
109
+ readonly title: "The email is already registered";
110
+ readonly description: "Please log in or use another email.";
111
+ readonly primaryLabel: "Log in";
112
+ readonly secondaryLabel: "Use another email";
113
+ readonly secondaryColor: "secondary";
114
+ };
115
+ };
116
+ readonly auth: {
117
+ readonly reset: {
118
+ readonly illustration: "illus2FA";
119
+ readonly title: "Reset password";
120
+ readonly description: "Set a new password in just a few clicks.";
121
+ readonly primaryLabel: "Reset Password";
122
+ readonly secondaryLabel: "Cancel";
123
+ readonly secondaryColor: "grey";
124
+ };
125
+ readonly linkExpired: {
126
+ readonly illustration: "illusLinkExpired";
127
+ readonly title: "The verification link expired";
128
+ readonly description: "The verification link has expired. To get a new one, please request email verification again. Your new link will be active for 10 minutes.";
129
+ };
130
+ readonly emailUnregistered: {
131
+ readonly illustration: "illusError";
132
+ readonly title: "The email is not registered";
133
+ readonly description: "Please complete the registration or use a different email to reset your password.";
134
+ readonly primaryLabel: "Sign Up";
135
+ readonly secondaryLabel: "Another Email";
136
+ readonly secondaryColor: "secondary";
137
+ };
138
+ };
139
+ readonly txn: {
140
+ readonly noPurchase: {
141
+ readonly illustration: "illusError";
142
+ readonly title: "Purchase not available";
143
+ readonly description: "Your account provider does not allow cryptocurrency purchases. Please try again using a different account.";
144
+ readonly primaryLabel: "Try Another Account";
145
+ readonly secondaryLabel: "Cancel";
146
+ readonly secondaryColor: "grey";
147
+ };
148
+ readonly noConversion: {
149
+ readonly illustration: "illusError";
150
+ readonly title: "Conversion Unavailable";
151
+ readonly description: "The conversion service is temporarily unavailable. If you don’t currently hold any assets, please make a deposit or contact support for assistance.";
152
+ readonly primaryLabel: "Deposit Now";
153
+ readonly secondaryLabel: "Cancel";
154
+ readonly secondaryColor: "grey";
155
+ };
156
+ readonly lowBalance: {
157
+ readonly illustration: "illusError";
158
+ readonly title: "Insufficient balance";
159
+ readonly description: "You don’t have enough funds to complete this action. Please deposit funds to continue.";
160
+ readonly primaryLabel: "Deposit Now";
161
+ readonly secondaryLabel: "Maybe Later";
162
+ readonly secondaryColor: "grey";
163
+ };
164
+ };
165
+ readonly error: {
166
+ readonly generic: {
167
+ readonly illustration: "illusError";
168
+ readonly title: "Something went wrong";
169
+ readonly description: "We encountered an unexpected error.";
170
+ readonly primaryLabel: "Try Again";
171
+ readonly showCloseIcon: true;
172
+ readonly help: {
173
+ readonly promptText: "Questions about access?";
174
+ readonly actionText: "Let us help!";
175
+ };
176
+ };
177
+ };
178
+ };