@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.
- package/es/business/Dialog/ResultDialog/ResultDialog.d.ts +3 -0
- package/es/business/Dialog/ResultDialog/ResultDialog.js +126 -0
- package/es/business/Dialog/ResultDialog/constants.d.ts +27 -0
- package/es/business/Dialog/ResultDialog/constants.js +24 -0
- package/es/business/Dialog/ResultDialog/index.d.ts +3 -0
- package/es/business/Dialog/ResultDialog/index.js +4 -0
- package/es/business/Dialog/ResultDialog/interface.d.ts +95 -0
- package/es/business/Dialog/ResultDialog/interface.js +2 -0
- package/es/business/Dialog/ResultDialog/presets.d.ts +178 -0
- package/es/business/Dialog/ResultDialog/presets.js +139 -0
- package/es/business/Dialog/ResultDialog/style/ResultDialog.css +29 -0
- package/es/business/Dialog/ResultDialog/style/css.js +2 -0
- package/es/business/Dialog/ResultDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/ResultDialog/style/index.js +2 -0
- package/es/business/Dialog/TransactionDialog/TransactionDialog.d.ts +3 -0
- package/es/business/Dialog/TransactionDialog/TransactionDialog.js +174 -0
- package/es/business/Dialog/TransactionDialog/constants.d.ts +34 -0
- package/es/business/Dialog/TransactionDialog/constants.js +33 -0
- package/es/business/Dialog/TransactionDialog/index.d.ts +3 -0
- package/es/business/Dialog/TransactionDialog/index.js +4 -0
- package/es/business/Dialog/TransactionDialog/interface.d.ts +116 -0
- package/es/business/Dialog/TransactionDialog/interface.js +2 -0
- package/es/business/Dialog/TransactionDialog/presets.d.ts +89 -0
- package/es/business/Dialog/TransactionDialog/presets.js +62 -0
- package/es/business/Dialog/TransactionDialog/style/TransactionDialog.css +36 -0
- package/es/business/Dialog/TransactionDialog/style/css.js +2 -0
- package/es/business/Dialog/TransactionDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/TransactionDialog/style/index.js +2 -0
- package/es/business/Dialog/VerificationDialog/ResendRow.d.ts +14 -0
- package/es/business/Dialog/VerificationDialog/ResendRow.js +65 -0
- package/es/business/Dialog/VerificationDialog/VerificationDialog.d.ts +3 -0
- package/es/business/Dialog/VerificationDialog/VerificationDialog.js +116 -0
- package/es/business/Dialog/VerificationDialog/constants.d.ts +35 -0
- package/es/business/Dialog/VerificationDialog/constants.js +31 -0
- package/es/business/Dialog/VerificationDialog/hooks/index.d.ts +4 -0
- package/es/business/Dialog/VerificationDialog/hooks/index.js +3 -0
- package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +50 -0
- package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +137 -0
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +26 -0
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +103 -0
- package/es/business/Dialog/VerificationDialog/index.d.ts +3 -0
- package/es/business/Dialog/VerificationDialog/index.js +4 -0
- package/es/business/Dialog/VerificationDialog/interface.d.ts +124 -0
- package/es/business/Dialog/VerificationDialog/interface.js +2 -0
- package/es/business/Dialog/VerificationDialog/style/VerificationDialog.css +30 -0
- package/es/business/Dialog/VerificationDialog/style/css.js +2 -0
- package/es/business/Dialog/VerificationDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/VerificationDialog/style/index.js +2 -0
- package/es/business/Dialog/index.d.ts +3 -0
- package/es/business/Dialog/index.js +4 -0
- package/es/business/index.d.ts +1 -0
- package/es/business/index.js +2 -1
- package/es/components/Button/Button.js +7 -3
- package/es/components/Button/constants.d.ts +1 -0
- package/es/components/Button/constants.js +2 -1
- package/es/components/Button/interface.d.ts +2 -0
- package/es/components/Button/style/Button.css +4 -0
- package/es/components/Dialog/Dialog.js +16 -7
- package/es/components/Dialog/constants.d.ts +1 -0
- package/es/components/Dialog/constants.js +3 -2
- package/es/components/Dialog/interface.d.ts +1 -0
- package/es/components/Dialog/style/Dialog.css +29 -0
- package/es/index.css +1 -1
- package/lib/business/Dialog/ResultDialog/ResultDialog.d.ts +3 -0
- package/lib/business/Dialog/ResultDialog/ResultDialog.js +132 -0
- package/lib/business/Dialog/ResultDialog/constants.d.ts +27 -0
- package/lib/business/Dialog/ResultDialog/constants.js +30 -0
- package/lib/business/Dialog/ResultDialog/index.d.ts +3 -0
- package/lib/business/Dialog/ResultDialog/index.js +40 -0
- package/lib/business/Dialog/ResultDialog/interface.d.ts +95 -0
- package/lib/business/Dialog/ResultDialog/interface.js +6 -0
- package/lib/business/Dialog/ResultDialog/presets.d.ts +178 -0
- package/lib/business/Dialog/ResultDialog/presets.js +145 -0
- package/lib/business/Dialog/ResultDialog/style/ResultDialog.css +29 -0
- package/lib/business/Dialog/ResultDialog/style/css.js +4 -0
- package/lib/business/Dialog/ResultDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/ResultDialog/style/index.js +4 -0
- package/lib/business/Dialog/TransactionDialog/TransactionDialog.d.ts +3 -0
- package/lib/business/Dialog/TransactionDialog/TransactionDialog.js +180 -0
- package/lib/business/Dialog/TransactionDialog/constants.d.ts +34 -0
- package/lib/business/Dialog/TransactionDialog/constants.js +39 -0
- package/lib/business/Dialog/TransactionDialog/index.d.ts +3 -0
- package/lib/business/Dialog/TransactionDialog/index.js +40 -0
- package/lib/business/Dialog/TransactionDialog/interface.d.ts +116 -0
- package/lib/business/Dialog/TransactionDialog/interface.js +6 -0
- package/lib/business/Dialog/TransactionDialog/presets.d.ts +89 -0
- package/lib/business/Dialog/TransactionDialog/presets.js +68 -0
- package/lib/business/Dialog/TransactionDialog/style/TransactionDialog.css +36 -0
- package/lib/business/Dialog/TransactionDialog/style/css.js +4 -0
- package/lib/business/Dialog/TransactionDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/TransactionDialog/style/index.js +4 -0
- package/lib/business/Dialog/VerificationDialog/ResendRow.d.ts +14 -0
- package/lib/business/Dialog/VerificationDialog/ResendRow.js +71 -0
- package/lib/business/Dialog/VerificationDialog/VerificationDialog.d.ts +3 -0
- package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +122 -0
- package/lib/business/Dialog/VerificationDialog/constants.d.ts +35 -0
- package/lib/business/Dialog/VerificationDialog/constants.js +37 -0
- package/lib/business/Dialog/VerificationDialog/hooks/index.d.ts +4 -0
- package/lib/business/Dialog/VerificationDialog/hooks/index.js +20 -0
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +50 -0
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +144 -0
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +26 -0
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +110 -0
- package/lib/business/Dialog/VerificationDialog/index.d.ts +3 -0
- package/lib/business/Dialog/VerificationDialog/index.js +43 -0
- package/lib/business/Dialog/VerificationDialog/interface.d.ts +124 -0
- package/lib/business/Dialog/VerificationDialog/interface.js +6 -0
- package/lib/business/Dialog/VerificationDialog/style/VerificationDialog.css +30 -0
- package/lib/business/Dialog/VerificationDialog/style/css.js +4 -0
- package/lib/business/Dialog/VerificationDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/VerificationDialog/style/index.js +4 -0
- package/lib/business/Dialog/index.d.ts +3 -0
- package/lib/business/Dialog/index.js +39 -0
- package/lib/business/index.d.ts +1 -0
- package/lib/business/index.js +12 -1
- package/lib/components/Button/Button.js +7 -3
- package/lib/components/Button/constants.d.ts +1 -0
- package/lib/components/Button/constants.js +2 -1
- package/lib/components/Button/interface.d.ts +2 -0
- package/lib/components/Button/style/Button.css +4 -0
- package/lib/components/Dialog/Dialog.js +16 -7
- package/lib/components/Dialog/constants.d.ts +1 -0
- package/lib/components/Dialog/constants.js +3 -2
- package/lib/components/Dialog/interface.d.ts +1 -0
- package/lib/components/Dialog/style/Dialog.css +29 -0
- package/lib/index.css +1 -1
- package/package.json +21 -1
- package/scripts/mcp-server/examples.generated.json +18 -6
- package/scripts/mcp-server/index.generated.json +25 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
var __rest = this && this.__rest || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
4
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
5
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
6
|
+
}
|
|
7
|
+
return t;
|
|
8
|
+
};
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { memo } from 'react';
|
|
11
|
+
import { Button } from '../../../components/Button';
|
|
12
|
+
import { Dialog } from '../../../components/Dialog';
|
|
13
|
+
import { Flex } from '../../../components/Flex';
|
|
14
|
+
import { Typography } from '../../../components/Typography';
|
|
15
|
+
import { joinCls } from '../../../utils/classnames';
|
|
16
|
+
import { RESULT_DIALOG } from './constants';
|
|
17
|
+
import './style';
|
|
18
|
+
var renderAction = function renderAction(action, label, defaultColor) {
|
|
19
|
+
var _a;
|
|
20
|
+
return _jsx(Button, {
|
|
21
|
+
color: (_a = action.color) !== null && _a !== void 0 ? _a : defaultColor,
|
|
22
|
+
loading: action.loading,
|
|
23
|
+
disabled: action.disabled,
|
|
24
|
+
onClick: action.onClick,
|
|
25
|
+
children: label
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
// The centered "Trouble…? Let us help!" row below the actions.
|
|
29
|
+
var HelpRow = function HelpRow(_ref) {
|
|
30
|
+
var promptText = _ref.promptText,
|
|
31
|
+
actionText = _ref.actionText,
|
|
32
|
+
onClick = _ref.onClick;
|
|
33
|
+
var handleKeyDown = function handleKeyDown(event) {
|
|
34
|
+
if (!RESULT_DIALOG.activationKeys.includes(event.key)) return;
|
|
35
|
+
event.preventDefault();
|
|
36
|
+
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
37
|
+
};
|
|
38
|
+
return _jsxs(Flex, {
|
|
39
|
+
align: 'center',
|
|
40
|
+
justify: 'center',
|
|
41
|
+
gap: RESULT_DIALOG.gap.help,
|
|
42
|
+
className: RESULT_DIALOG.cls.help,
|
|
43
|
+
children: [promptText && _jsx(Typography.Body, {
|
|
44
|
+
size: 'md',
|
|
45
|
+
strong: true,
|
|
46
|
+
color: 'default-tertiary',
|
|
47
|
+
children: promptText
|
|
48
|
+
}), actionText && _jsx(Typography.Link, {
|
|
49
|
+
size: 'md',
|
|
50
|
+
color: 'brand',
|
|
51
|
+
role: 'button',
|
|
52
|
+
tabIndex: 0,
|
|
53
|
+
onClick: onClick,
|
|
54
|
+
onKeyDown: handleKeyDown,
|
|
55
|
+
children: actionText
|
|
56
|
+
})]
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
var ResultDialogBase = function ResultDialogBase(_a) {
|
|
60
|
+
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
61
|
+
var preset = _a.preset,
|
|
62
|
+
rest = __rest(_a, ["preset"]);
|
|
63
|
+
// Pull `preset` out first so the rest can fall back to it: a destructuring
|
|
64
|
+
// default applies exactly when the prop is omitted, which is the
|
|
65
|
+
// "explicit wins over preset" semantics we want.
|
|
66
|
+
var open = rest.open,
|
|
67
|
+
_rest$size = rest.size,
|
|
68
|
+
size = _rest$size === void 0 ? RESULT_DIALOG.defaults.size : _rest$size,
|
|
69
|
+
maskClosable = rest.maskClosable,
|
|
70
|
+
showBackIcon = rest.showBackIcon,
|
|
71
|
+
onBack = rest.onBack,
|
|
72
|
+
className = rest.className,
|
|
73
|
+
primaryAction = rest.primaryAction,
|
|
74
|
+
secondaryAction = rest.secondaryAction,
|
|
75
|
+
help = rest.help,
|
|
76
|
+
onClose = rest.onClose,
|
|
77
|
+
_rest$illustration = rest.illustration,
|
|
78
|
+
illustration = _rest$illustration === void 0 ? preset === null || preset === void 0 ? void 0 : preset.illustration : _rest$illustration,
|
|
79
|
+
_rest$title = rest.title,
|
|
80
|
+
title = _rest$title === void 0 ? preset === null || preset === void 0 ? void 0 : preset.title : _rest$title,
|
|
81
|
+
_rest$description = rest.description,
|
|
82
|
+
description = _rest$description === void 0 ? preset === null || preset === void 0 ? void 0 : preset.description : _rest$description,
|
|
83
|
+
_rest$showCloseIcon = rest.showCloseIcon,
|
|
84
|
+
showCloseIcon = _rest$showCloseIcon === void 0 ? (_b = preset === null || preset === void 0 ? void 0 : preset.showCloseIcon) !== null && _b !== void 0 ? _b : false : _rest$showCloseIcon;
|
|
85
|
+
var hasActions = Boolean(primaryAction || secondaryAction);
|
|
86
|
+
var resolvedHelp = help || (preset === null || preset === void 0 ? void 0 : preset.help) ? {
|
|
87
|
+
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,
|
|
88
|
+
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,
|
|
89
|
+
onClick: help === null || help === void 0 ? void 0 : help.onClick
|
|
90
|
+
} : undefined;
|
|
91
|
+
var footer = hasActions || resolvedHelp ? _jsxs(Flex, {
|
|
92
|
+
vertical: true,
|
|
93
|
+
gap: RESULT_DIALOG.gap.footer,
|
|
94
|
+
className: RESULT_DIALOG.cls.footer,
|
|
95
|
+
children: [hasActions &&
|
|
96
|
+
// Secondary on the left, primary on the right; the SCSS makes each
|
|
97
|
+
// fill half the row, so a single action spans the full width.
|
|
98
|
+
_jsxs(Flex, {
|
|
99
|
+
gap: RESULT_DIALOG.gap.actions,
|
|
100
|
+
className: RESULT_DIALOG.cls.actions,
|
|
101
|
+
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 : RESULT_DIALOG.defaults.secondaryColor), primaryAction && renderAction(primaryAction, (_j = primaryAction.label) !== null && _j !== void 0 ? _j : preset === null || preset === void 0 ? void 0 : preset.primaryLabel, RESULT_DIALOG.defaults.primaryColor)]
|
|
102
|
+
}), resolvedHelp && _jsx(HelpRow, Object.assign({}, resolvedHelp))]
|
|
103
|
+
}) : null;
|
|
104
|
+
return _jsx(Dialog, {
|
|
105
|
+
open: open,
|
|
106
|
+
size: size,
|
|
107
|
+
maskClosable: maskClosable,
|
|
108
|
+
showCloseIcon: showCloseIcon,
|
|
109
|
+
showBackIcon: showBackIcon,
|
|
110
|
+
onBack: onBack,
|
|
111
|
+
className: joinCls(RESULT_DIALOG.cls.wrap, className),
|
|
112
|
+
title: title,
|
|
113
|
+
illustration: illustration,
|
|
114
|
+
footer: footer,
|
|
115
|
+
onCancel: onClose,
|
|
116
|
+
children: description && _jsx(Typography.Body, {
|
|
117
|
+
as: 'p',
|
|
118
|
+
size: 'lg',
|
|
119
|
+
strong: true,
|
|
120
|
+
color: 'default-secondary',
|
|
121
|
+
children: description
|
|
122
|
+
})
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
export var ResultDialog = /*#__PURE__*/memo(ResultDialogBase);
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9SZXN1bHREaWFsb2cvUmVzdWx0RGlhbG9nLmpzIiwiYnVzaW5lc3MvRGlhbG9nL3NyYy9idXNpbmVzcy9EaWFsb2cvUmVzdWx0RGlhbG9nL1Jlc3VsdERpYWxvZy50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsIkJ1dHRvbiIsIkRpYWxvZyIsIkZsZXgiLCJUeXBvZ3JhcGh5Iiwiam9pbkNscyIsIlJFU1VMVF9ESUFMT0ciLCJyZW5kZXJBY3Rpb24iLCJhY3Rpb24iLCJsYWJlbCIsImRlZmF1bHRDb2xvciIsIl9hIiwiY29sb3IiLCJsb2FkaW5nIiwiZGlzYWJsZWQiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJIZWxwUm93IiwiX3JlZiIsInByb21wdFRleHQiLCJhY3Rpb25UZXh0IiwiaGFuZGxlS2V5RG93biIsImV2ZW50IiwiYWN0aXZhdGlvbktleXMiLCJpbmNsdWRlcyIsImtleSIsInByZXZlbnREZWZhdWx0IiwiYWxpZ24iLCJqdXN0aWZ5IiwiZ2FwIiwiaGVscCIsImNsYXNzTmFtZSIsImNscyIsIkJvZHkiLCJzaXplIiwic3Ryb25nIiwiTGluayIsInJvbGUiLCJ0YWJJbmRleCIsIm9uS2V5RG93biIsIlJlc3VsdERpYWxvZ0Jhc2UiLCJfYiIsIl9jIiwiX2QiLCJfZSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwicHJlc2V0IiwicmVzdCIsIm9wZW4iLCJfcmVzdCRzaXplIiwiZGVmYXVsdHMiLCJtYXNrQ2xvc2FibGUiLCJzaG93QmFja0ljb24iLCJvbkJhY2siLCJwcmltYXJ5QWN0aW9uIiwic2Vjb25kYXJ5QWN0aW9uIiwib25DbG9zZSIsIl9yZXN0JGlsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbiIsIl9yZXN0JHRpdGxlIiwidGl0bGUiLCJfcmVzdCRkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwiX3Jlc3Qkc2hvd0Nsb3NlSWNvbiIsInNob3dDbG9zZUljb24iLCJoYXNBY3Rpb25zIiwiQm9vbGVhbiIsInJlc29sdmVkSGVscCIsInVuZGVmaW5lZCIsImZvb3RlciIsInZlcnRpY2FsIiwiYWN0aW9ucyIsInNlY29uZGFyeUxhYmVsIiwic2Vjb25kYXJ5Q29sb3IiLCJwcmltYXJ5TGFiZWwiLCJwcmltYXJ5Q29sb3IiLCJhc3NpZ24iLCJ3cmFwIiwib25DYW5jZWwiLCJhcyIsIlJlc3VsdERpYWxvZyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsTUFBTSxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFBRSxJQUFJSSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDLElBQUlGLENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFHSCxDQUFDLENBQUNHLENBQUMsQ0FBQztFQUNmLElBQUlILENBQUMsSUFBSSxJQUFJLElBQUksT0FBT0ksTUFBTSxDQUFDSyxxQkFBcUIsS0FBSyxVQUFVLEVBQy9ELEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRVAsQ0FBQyxHQUFHQyxNQUFNLENBQUNLLHFCQUFxQixDQUFDVCxDQUFDLENBQUMsRUFBRVUsQ0FBQyxHQUFHUCxDQUFDLENBQUNRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsSUFBSVQsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUlOLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDTyxvQkFBb0IsQ0FBQ0wsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsRUFDMUVSLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHVixDQUFDLENBQUNHLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUM7RUFDekI7RUFDSixPQUFPUixDQUFDO0FBQ1osQ0FBQztBQUNELFNBQVNXLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFBbUI7QUNYOUQsU0FBU0MsSUFBSSxRQUFRLE9BQU87QUFDNUIsU0FBU0MsTUFBTSxRQUFRLDRCQUE0QjtBQUNuRCxTQUFTQyxNQUFNLFFBQVEsNEJBQTRCO0FBQ25ELFNBQVNDLElBQUksUUFBUSwwQkFBMEI7QUFDL0MsU0FBU0MsVUFBVSxRQUFRLGdDQUFnQztBQUMzRCxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLGFBQWEsUUFBUSxhQUFhO0FBSTNDLE9BQU8sU0FBUztBQUVoQixJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBSUMsTUFBMEIsRUFBRUMsS0FBZ0IsRUFBRUMsWUFBeUIsRUFBSTtFRFM3RixJQUFJQyxFQUFFO0VDVHdGLE9BQ2hHZCxJQUFBLENBQUNJLE1BQU0sRUFBQTtJQUNMVyxLQUFLLEVBQUUsQ0FBQUQsRUFBQSxHQUFBSCxNQUFNLENBQUNJLEtBQUssTUFBQSxJQUFBLElBQUFELEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJRCxZQUFZO0lBQ25DRyxPQUFPLEVBQUVMLE1BQU0sQ0FBQ0ssT0FBTztJQUN2QkMsUUFBUSxFQUFFTixNQUFNLENBQUNNLFFBQVE7SUFDekJDLE9BQU8sRUFBRVAsTUFBTSxDQUFDTyxPQUFPO0lBQUFDLFFBQUEsRUFFdEJQO0VBQUssQ0FBQSxDQUNDO0FER1gsQ0NGQztBQUVEO0FBQ0EsSUFBTVEsT0FBTyxHQUF5QixTQUFoQ0EsT0FBT0EsQ0FBQUMsSUFBQSxFQUFpRTtFQUFBLElBQXJDQyxVQUFVLEdBQUFELElBQUEsQ0FBVkMsVUFBVTtJQUFFQyxVQUFVLEdBQUFGLElBQUEsQ0FBVkUsVUFBVTtJQUFFTCxPQUFPLEdBQUFHLElBQUEsQ0FBUEgsT0FBTztFQUN0RSxJQUFNTSxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUlDLEtBQXVDLEVBQUk7SUFDaEUsSUFBSSxDQUFDaEIsYUFBYSxDQUFDaUIsY0FBYyxDQUFDQyxRQUFRLENBQUNGLEtBQUssQ0FBQ0csR0FBRyxDQUFDLEVBQUU7SUFDdkRILEtBQUssQ0FBQ0ksY0FBYyxDQUFBLENBQUU7SUFDdEJYLE9BQU8sS0FBQSxJQUFBLElBQVBBLE9BQU8sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBUEEsT0FBTyxDQUFBLENBQUk7RUFDYixDQUFDO0VBRUQsT0FDRWhCLEtBQUEsQ0FBQ0ksSUFBSSxFQUFBO0lBQUN3QixLQUFLLEVBQUMsUUFBUTtJQUFDQyxPQUFPLEVBQUMsUUFBUTtJQUFDQyxHQUFHLEVBQUV2QixhQUFhLENBQUN1QixHQUFHLENBQUNDLElBQUk7SUFBRUMsU0FBUyxFQUFFekIsYUFBYSxDQUFDMEIsR0FBRyxDQUFDRixJQUFJO0lBQUFkLFFBQUEsRUFBQSxDQUNqR0csVUFBVSxJQUNUdEIsSUFBQSxDQUFDTyxVQUFVLENBQUM2QixJQUFJLEVBQUE7TUFBQ0MsSUFBSSxFQUFDLElBQUk7TUFBQ0MsTUFBTSxFQUFBLElBQUE7TUFBQ3ZCLEtBQUssRUFBQyxrQkFBa0I7TUFBQUksUUFBQSxFQUN2REc7SUFBVSxDQUFBLENBRWQsRUFDQUMsVUFBVSxJQUNUdkIsSUFBQSxDQUFDTyxVQUFVLENBQUNnQyxJQUFJLEVBQUE7TUFDZEYsSUFBSSxFQUFDLElBQUk7TUFDVHRCLEtBQUssRUFBQyxPQUFPO01BQ2J5QixJQUFJLEVBQUMsUUFBUTtNQUNiQyxRQUFRLEVBQUUsQ0FBQztNQUNYdkIsT0FBTyxFQUFFQSxPQUFPO01BQ2hCd0IsU0FBUyxFQUFFbEIsYUFBYTtNQUFBTCxRQUFBLEVBRXZCSTtJQUFVLENBQUEsQ0FFZDtFQUFBLENBQUEsQ0FDSTtBQUVYLENBQUM7QUFFRCxJQUFNb0IsZ0JBQWdCLEdBQTBCLFNBQTFDQSxnQkFBZ0JBLENBQTJCN0IsRUFBbUIsRUFBSTtFRG5CcEUsSUFBSThCLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBRUMsRUFBRTtFQ21CVyxJQUFFQyxNQUFNLEdBQUF0QyxFQUFXLENBQWpCc0MsTUFBTTtJQUFLQyxJQUFJLEdBQUFwRSxNQUFBLENBQUE2QixFQUFBLEVBQWpCLENBQUEsUUFBQSxDQUFtQixDQUFGO0VBQ2hFO0VBQ0E7RUFDQTtFQUNBLElBQ0V3QyxJQUFJLEdBY0ZELElBQUksQ0FkTkMsSUFBSTtJQUFBQyxVQUFBLEdBY0ZGLElBQUksQ0FiTmhCLElBQUk7SUFBSkEsSUFBSSxHQUFBa0IsVUFBQSxjQUFHOUMsYUFBYSxDQUFDK0MsUUFBUSxDQUFDbkIsSUFBSSxHQUFBa0IsVUFBQTtJQUNsQ0UsWUFBWSxHQVlWSixJQUFJLENBWk5JLFlBQVk7SUFDWkMsWUFBWSxHQVdWTCxJQUFJLENBWE5LLFlBQVk7SUFDWkMsTUFBTSxHQVVKTixJQUFJLENBVk5NLE1BQU07SUFDTnpCLFNBQVMsR0FTUG1CLElBQUksQ0FUTm5CLFNBQVM7SUFDVDBCLGFBQWEsR0FRWFAsSUFBSSxDQVJOTyxhQUFhO0lBQ2JDLGVBQWUsR0FPYlIsSUFBSSxDQVBOUSxlQUFlO0lBQ2Y1QixJQUFJLEdBTUZvQixJQUFJLENBTk5wQixJQUFJO0lBQ0o2QixPQUFPLEdBS0xULElBQUksQ0FMTlMsT0FBTztJQUFBQyxrQkFBQSxHQUtMVixJQUFJLENBSk5XLFlBQVk7SUFBWkEsWUFBWSxHQUFBRCxrQkFBQSxjQUFHWCxNQUFNLEtBQUEsSUFBQSxJQUFOQSxNQUFNLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQU5BLE1BQU0sQ0FBRVksWUFBWSxHQUFBRCxrQkFBQTtJQUFBRSxXQUFBLEdBSWpDWixJQUFJLENBSE5hLEtBQUs7SUFBTEEsS0FBSyxHQUFBRCxXQUFBLGNBQUdiLE1BQU0sS0FBQSxJQUFBLElBQU5BLE1BQU0sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBTkEsTUFBTSxDQUFFYyxLQUFLLEdBQUFELFdBQUE7SUFBQUUsaUJBQUEsR0FHbkJkLElBQUksQ0FGTmUsV0FBVztJQUFYQSxXQUFXLEdBQUFELGlCQUFBLGNBQUdmLE1BQU0sS0FBQSxJQUFBLElBQU5BLE1BQU0sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBTkEsTUFBTSxDQUFFZ0IsV0FBVyxHQUFBRCxpQkFBQTtJQUFBRSxtQkFBQSxHQUUvQmhCLElBQUksQ0FETmlCLGFBQWE7SUFBYkEsYUFBYSxHQUFBRCxtQkFBQSxjQUFHLENBQUF6QixFQUFBLEdBQUFRLE1BQU0sS0FBQSxJQUFBLElBQU5BLE1BQU0sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBTkEsTUFBTSxDQUFFa0IsYUFBYSxNQUFBLElBQUEsSUFBQTFCLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJLEtBQUssR0FBQXlCLG1CQUFBO0VBR2hELElBQU1FLFVBQVUsR0FBR0MsT0FBTyxDQUFDWixhQUFhLElBQUlDLGVBQWUsQ0FBQztFQUM1RCxJQUFNWSxZQUFZLEdBQ2hCeEMsSUFBSSxLQUFJbUIsTUFBTSxLQUFBLElBQUEsSUFBTkEsTUFBTSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFOQSxNQUFNLENBQUVuQixJQUFJLENBQUEsR0FDaEI7SUFDRVgsVUFBVSxFQUFFLENBQUF1QixFQUFBLEdBQUFaLElBQUksS0FBQSxJQUFBLElBQUpBLElBQUksS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBSkEsSUFBSSxDQUFFWCxVQUFVLE1BQUEsSUFBQSxJQUFBdUIsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQUMsRUFBQSxHQUFBTSxNQUFNLEtBQUEsSUFBQSxJQUFOQSxNQUFNLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQU5BLE1BQU0sQ0FBRW5CLElBQUksTUFBQSxJQUFBLElBQUFhLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFeEIsVUFBVTtJQUN4REMsVUFBVSxFQUFFLENBQUF3QixFQUFBLEdBQUFkLElBQUksS0FBQSxJQUFBLElBQUpBLElBQUksS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBSkEsSUFBSSxDQUFFVixVQUFVLE1BQUEsSUFBQSxJQUFBd0IsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQUMsRUFBQSxHQUFBSSxNQUFNLEtBQUEsSUFBQSxJQUFOQSxNQUFNLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQU5BLE1BQU0sQ0FBRW5CLElBQUksTUFBQSxJQUFBLElBQUFlLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFekIsVUFBVTtJQUN4REwsT0FBTyxFQUFFZSxJQUFJLEtBQUEsSUFBQSxJQUFKQSxJQUFJLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUpBLElBQUksQ0FBRWY7RURsQ2pCLENDbUNDLEdBQ0R3RCxTQUFTO0VBRWYsSUFBTUMsTUFBTSxHQUNWSixVQUFVLElBQUlFLFlBQVksR0FDeEJ2RSxLQUFBLENBQUNJLElBQUksRUFBQTtJQUFDc0UsUUFBUSxFQUFBLElBQUE7SUFBQzVDLEdBQUcsRUFBRXZCLGFBQWEsQ0FBQ3VCLEdBQUcsQ0FBQzJDLE1BQU07SUFBRXpDLFNBQVMsRUFBRXpCLGFBQWEsQ0FBQzBCLEdBQUcsQ0FBQ3dDLE1BQU07SUFBQXhELFFBQUEsRUFBQSxDQUM5RW9ELFVBQVU7SUFDVDtJQUNBO0lBQ0FyRSxLQUFBLENBQUNJLElBQUksRUFBQTtNQUFDMEIsR0FBRyxFQUFFdkIsYUFBYSxDQUFDdUIsR0FBRyxDQUFDNkMsT0FBTztNQUFFM0MsU0FBUyxFQUFFekIsYUFBYSxDQUFDMEIsR0FBRyxDQUFDMEMsT0FBTztNQUFBMUQsUUFBQSxFQUFBLENBQ3ZFMEMsZUFBZSxJQUNkbkQsWUFBWSxDQUNWbUQsZUFBZSxFQUNmLENBQUFaLEVBQUEsR0FBQVksZUFBZSxDQUFDakQsS0FBSyxNQUFBLElBQUEsSUFBQXFDLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJRyxNQUFNLEtBQUEsSUFBQSxJQUFOQSxNQUFNLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQU5BLE1BQU0sQ0FBRTBCLGNBQWMsRUFDL0MsQ0FBQTVCLEVBQUEsR0FBQUUsTUFBTSxLQUFBLElBQUEsSUFBTkEsTUFBTSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFOQSxNQUFNLENBQUUyQixjQUFjLE1BQUEsSUFBQSxJQUFBN0IsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUl6QyxhQUFhLENBQUMrQyxRQUFRLENBQUN1QixjQUFjLENBQ2hFLEVBQ0ZuQixhQUFhLElBQ1psRCxZQUFZLENBQ1ZrRCxhQUFhLEVBQ2IsQ0FBQVQsRUFBQSxHQUFBUyxhQUFhLENBQUNoRCxLQUFLLE1BQUEsSUFBQSxJQUFBdUMsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUlDLE1BQU0sS0FBQSxJQUFBLElBQU5BLE1BQU0sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBTkEsTUFBTSxDQUFFNEIsWUFBWSxFQUMzQ3ZFLGFBQWEsQ0FBQytDLFFBQVEsQ0FBQ3lCLFlBQVksQ0FDcEM7SUFBQSxDQUFBLENBRU4sRUFDQVIsWUFBWSxJQUFJekUsSUFBQSxDQUFDb0IsT0FBTyxFQUFBOUIsTUFBQSxDQUFBNEYsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFLVCxZQUFZLENBQUEsQ0FBSTtFQUFBLENBQUEsQ0FDekMsR0FDTCxJQUFJO0VBRVYsT0FDRXpFLElBQUEsQ0FBQ0ssTUFBTSxFQUFBO0lBQ0xpRCxJQUFJLEVBQUVBLElBQUk7SUFDVmpCLElBQUksRUFBRUEsSUFBSTtJQUNWb0IsWUFBWSxFQUFFQSxZQUFZO0lBQzFCYSxhQUFhLEVBQUVBLGFBQWE7SUFDNUJaLFlBQVksRUFBRUEsWUFBWTtJQUMxQkMsTUFBTSxFQUFFQSxNQUFNO0lBQ2R6QixTQUFTLEVBQUUxQixPQUFPLENBQUNDLGFBQWEsQ0FBQzBCLEdBQUcsQ0FBQ2dELElBQUksRUFBRWpELFNBQVMsQ0FBQztJQUNyRGdDLEtBQUssRUFBRUEsS0FBSztJQUNaRixZQUFZLEVBQUVBLFlBQVk7SUFDMUJXLE1BQU0sRUFBRUEsTUFBTTtJQUNkUyxRQUFRLEVBQUV0QixPQUFPO0lBQUEzQyxRQUFBLEVBSWhCaUQsV0FBVyxJQUNWcEUsSUFBQSxDQUFDTyxVQUFVLENBQUM2QixJQUFJLEVBQUE7TUFBQ2lELEVBQUUsRUFBQyxHQUFHO01BQUNoRCxJQUFJLEVBQUMsSUFBSTtNQUFDQyxNQUFNLEVBQUEsSUFBQTtNQUFDdkIsS0FBSyxFQUFDLG1CQUFtQjtNQUFBSSxRQUFBLEVBQy9EaUQ7SUFBVyxDQUFBO0VBRWYsQ0FBQSxDQUNNO0FBRWIsQ0FBQztBQUVELE9BQU8sSUFBTWtCLFlBQVksZ0JBQUduRixJQUFJLENBQUN3QyxnQkFBZ0IsQ0FBQyIsImZpbGUiOiJidXNpbmVzcy9EaWFsb2cvUmVzdWx0RGlhbG9nL1Jlc3VsdERpYWxvZy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9CdXR0b24nO1xuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9EaWFsb2cnO1xuaW1wb3J0IHsgRmxleCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvRmxleCc7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IFJFU1VMVF9ESUFMT0cgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgcmVuZGVyQWN0aW9uID0gKGFjdGlvbiwgbGFiZWwsIGRlZmF1bHRDb2xvcikgPT4ge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9qc3goQnV0dG9uLCB7IGNvbG9yOiAoX2EgPSBhY3Rpb24uY29sb3IpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGRlZmF1bHRDb2xvciwgbG9hZGluZzogYWN0aW9uLmxvYWRpbmcsIGRpc2FibGVkOiBhY3Rpb24uZGlzYWJsZWQsIG9uQ2xpY2s6IGFjdGlvbi5vbkNsaWNrLCBjaGlsZHJlbjogbGFiZWwgfSkpO1xufTtcbi8vIFRoZSBjZW50ZXJlZCBcIlRyb3VibGXigKY/IExldCB1cyBoZWxwIVwiIHJvdyBiZWxvdyB0aGUgYWN0aW9ucy5cbmNvbnN0IEhlbHBSb3cgPSAoeyBwcm9tcHRUZXh0LCBhY3Rpb25UZXh0LCBvbkNsaWNrIH0pID0+IHtcbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghUkVTVUxUX0RJQUxPRy5hY3RpdmF0aW9uS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTtcbiAgICB9O1xuICAgIHJldHVybiAoX2pzeHMoRmxleCwgeyBhbGlnbjogJ2NlbnRlcicsIGp1c3RpZnk6ICdjZW50ZXInLCBnYXA6IFJFU1VMVF9ESUFMT0cuZ2FwLmhlbHAsIGNsYXNzTmFtZTogUkVTVUxUX0RJQUxPRy5jbHMuaGVscCwgY2hpbGRyZW46IFtwcm9tcHRUZXh0ICYmIChfanN4KFR5cG9ncmFwaHkuQm9keSwgeyBzaXplOiAnbWQnLCBzdHJvbmc6IHRydWUsIGNvbG9yOiAnZGVmYXVsdC10ZXJ0aWFyeScsIGNoaWxkcmVuOiBwcm9tcHRUZXh0IH0pKSwgYWN0aW9uVGV4dCAmJiAoX2pzeChUeXBvZ3JhcGh5LkxpbmssIHsgc2l6ZTogJ21kJywgY29sb3I6ICdicmFuZCcsIHJvbGU6ICdidXR0b24nLCB0YWJJbmRleDogMCwgb25DbGljazogb25DbGljaywgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLCBjaGlsZHJlbjogYWN0aW9uVGV4dCB9KSldIH0pKTtcbn07XG5jb25zdCBSZXN1bHREaWFsb2dCYXNlID0gKF9hKSA9PiB7XG4gICAgdmFyIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfajtcbiAgICB2YXIgeyBwcmVzZXQgfSA9IF9hLCByZXN0ID0gX19yZXN0KF9hLCBbXCJwcmVzZXRcIl0pO1xuICAgIC8vIFB1bGwgYHByZXNldGAgb3V0IGZpcnN0IHNvIHRoZSByZXN0IGNhbiBmYWxsIGJhY2sgdG8gaXQ6IGEgZGVzdHJ1Y3R1cmluZ1xuICAgIC8vIGRlZmF1bHQgYXBwbGllcyBleGFjdGx5IHdoZW4gdGhlIHByb3AgaXMgb21pdHRlZCwgd2hpY2ggaXMgdGhlXG4gICAgLy8gXCJleHBsaWNpdCB3aW5zIG92ZXIgcHJlc2V0XCIgc2VtYW50aWNzIHdlIHdhbnQuXG4gICAgY29uc3QgeyBvcGVuLCBzaXplID0gUkVTVUxUX0RJQUxPRy5kZWZhdWx0cy5zaXplLCBtYXNrQ2xvc2FibGUsIHNob3dCYWNrSWNvbiwgb25CYWNrLCBjbGFzc05hbWUsIHByaW1hcnlBY3Rpb24sIHNlY29uZGFyeUFjdGlvbiwgaGVscCwgb25DbG9zZSwgaWxsdXN0cmF0aW9uID0gcHJlc2V0ID09PSBudWxsIHx8IHByZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJlc2V0LmlsbHVzdHJhdGlvbiwgdGl0bGUgPSBwcmVzZXQgPT09IG51bGwgfHwgcHJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmVzZXQudGl0bGUsIGRlc2NyaXB0aW9uID0gcHJlc2V0ID09PSBudWxsIHx8IHByZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJlc2V0LmRlc2NyaXB0aW9uLCBzaG93Q2xvc2VJY29uID0gKF9iID0gcHJlc2V0ID09PSBudWxsIHx8IHByZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJlc2V0LnNob3dDbG9zZUljb24pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlLCB9ID0gcmVzdDtcbiAgICBjb25zdCBoYXNBY3Rpb25zID0gQm9vbGVhbihwcmltYXJ5QWN0aW9uIHx8IHNlY29uZGFyeUFjdGlvbik7XG4gICAgY29uc3QgcmVzb2x2ZWRIZWxwID0gaGVscCB8fCAocHJlc2V0ID09PSBudWxsIHx8IHByZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJlc2V0LmhlbHApXG4gICAgICAgID8ge1xuICAgICAgICAgICAgcHJvbXB0VGV4dDogKF9jID0gaGVscCA9PT0gbnVsbCB8fCBoZWxwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBoZWxwLnByb21wdFRleHQpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IChfZCA9IHByZXNldCA9PT0gbnVsbCB8fCBwcmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByZXNldC5oZWxwKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QucHJvbXB0VGV4dCxcbiAgICAgICAgICAgIGFjdGlvblRleHQ6IChfZSA9IGhlbHAgPT09IG51bGwgfHwgaGVscCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGVscC5hY3Rpb25UZXh0KSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiAoX2YgPSBwcmVzZXQgPT09IG51bGwgfHwgcHJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmVzZXQuaGVscCkgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mLmFjdGlvblRleHQsXG4gICAgICAgICAgICBvbkNsaWNrOiBoZWxwID09PSBudWxsIHx8IGhlbHAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGhlbHAub25DbGljayxcbiAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmb290ZXIgPSBoYXNBY3Rpb25zIHx8IHJlc29sdmVkSGVscCA/IChfanN4cyhGbGV4LCB7IHZlcnRpY2FsOiB0cnVlLCBnYXA6IFJFU1VMVF9ESUFMT0cuZ2FwLmZvb3RlciwgY2xhc3NOYW1lOiBSRVNVTFRfRElBTE9HLmNscy5mb290ZXIsIGNoaWxkcmVuOiBbaGFzQWN0aW9ucyAmJiAoXG4gICAgICAgICAgICAvLyBTZWNvbmRhcnkgb24gdGhlIGxlZnQsIHByaW1hcnkgb24gdGhlIHJpZ2h0OyB0aGUgU0NTUyBtYWtlcyBlYWNoXG4gICAgICAgICAgICAvLyBmaWxsIGhhbGYgdGhlIHJvdywgc28gYSBzaW5nbGUgYWN0aW9uIHNwYW5zIHRoZSBmdWxsIHdpZHRoLlxuICAgICAgICAgICAgX2pzeHMoRmxleCwgeyBnYXA6IFJFU1VMVF9ESUFMT0cuZ2FwLmFjdGlvbnMsIGNsYXNzTmFtZTogUkVTVUxUX0RJQUxPRy5jbHMuYWN0aW9ucywgY2hpbGRyZW46IFtzZWNvbmRhcnlBY3Rpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckFjdGlvbihzZWNvbmRhcnlBY3Rpb24sIChfZyA9IHNlY29uZGFyeUFjdGlvbi5sYWJlbCkgIT09IG51bGwgJiYgX2cgIT09IHZvaWQgMCA/IF9nIDogcHJlc2V0ID09PSBudWxsIHx8IHByZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJlc2V0LnNlY29uZGFyeUxhYmVsLCAoX2ggPSBwcmVzZXQgPT09IG51bGwgfHwgcHJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmVzZXQuc2Vjb25kYXJ5Q29sb3IpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IFJFU1VMVF9ESUFMT0cuZGVmYXVsdHMuc2Vjb25kYXJ5Q29sb3IpLCBwcmltYXJ5QWN0aW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJBY3Rpb24ocHJpbWFyeUFjdGlvbiwgKF9qID0gcHJpbWFyeUFjdGlvbi5sYWJlbCkgIT09IG51bGwgJiYgX2ogIT09IHZvaWQgMCA/IF9qIDogcHJlc2V0ID09PSBudWxsIHx8IHByZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJlc2V0LnByaW1hcnlMYWJlbCwgUkVTVUxUX0RJQUxPRy5kZWZhdWx0cy5wcmltYXJ5Q29sb3IpXSB9KSksIHJlc29sdmVkSGVscCAmJiBfanN4KEhlbHBSb3csIE9iamVjdC5hc3NpZ24oe30sIHJlc29sdmVkSGVscCkpXSB9KSkgOiBudWxsO1xuICAgIHJldHVybiAoX2pzeChEaWFsb2csIHsgb3Blbjogb3Blbiwgc2l6ZTogc2l6ZSwgbWFza0Nsb3NhYmxlOiBtYXNrQ2xvc2FibGUsIHNob3dDbG9zZUljb246IHNob3dDbG9zZUljb24sIHNob3dCYWNrSWNvbjogc2hvd0JhY2tJY29uLCBvbkJhY2s6IG9uQmFjaywgY2xhc3NOYW1lOiBqb2luQ2xzKFJFU1VMVF9ESUFMT0cuY2xzLndyYXAsIGNsYXNzTmFtZSksIHRpdGxlOiB0aXRsZSwgaWxsdXN0cmF0aW9uOiBpbGx1c3RyYXRpb24sIGZvb3RlcjogZm9vdGVyLCBvbkNhbmNlbDogb25DbG9zZSwgY2hpbGRyZW46IGRlc2NyaXB0aW9uICYmIChfanN4KFR5cG9ncmFwaHkuQm9keSwgeyBhczogJ3AnLCBzaXplOiAnbGcnLCBzdHJvbmc6IHRydWUsIGNvbG9yOiAnZGVmYXVsdC1zZWNvbmRhcnknLCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpIH0pKTtcbn07XG5leHBvcnQgY29uc3QgUmVzdWx0RGlhbG9nID0gbWVtbyhSZXN1bHREaWFsb2dCYXNlKTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -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,24 @@
|
|
|
1
|
+
var PREFIX = 'om-result-dialog';
|
|
2
|
+
export var RESULT_DIALOG = {
|
|
3
|
+
cls: {
|
|
4
|
+
wrap: PREFIX,
|
|
5
|
+
actions: "".concat(PREFIX, "-actions"),
|
|
6
|
+
footer: "".concat(PREFIX, "-footer"),
|
|
7
|
+
help: "".concat(PREFIX, "-help")
|
|
8
|
+
},
|
|
9
|
+
// 12px between the two buttons, 24px between the action row and the help row,
|
|
10
|
+
// 4px between the help prompt and its link.
|
|
11
|
+
gap: {
|
|
12
|
+
actions: 12,
|
|
13
|
+
footer: 24,
|
|
14
|
+
help: 4
|
|
15
|
+
},
|
|
16
|
+
defaults: {
|
|
17
|
+
size: 'small',
|
|
18
|
+
primaryColor: 'primary',
|
|
19
|
+
secondaryColor: 'secondary'
|
|
20
|
+
},
|
|
21
|
+
// `Typography.Link` renders an <a> with no href, so Enter/Space activate it.
|
|
22
|
+
activationKeys: ['Enter', ' ']
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1Jlc3VsdERpYWxvZy9jb25zdGFudHMudHMiLCJidXNpbmVzcy9EaWFsb2cvUmVzdWx0RGlhbG9nL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJQUkVGSVgiLCJSRVNVTFRfRElBTE9HIiwiY2xzIiwid3JhcCIsImFjdGlvbnMiLCJjb25jYXQiLCJmb290ZXIiLCJoZWxwIiwiZ2FwIiwiZGVmYXVsdHMiLCJzaXplIiwicHJpbWFyeUNvbG9yIiwic2Vjb25kYXJ5Q29sb3IiLCJhY3RpdmF0aW9uS2V5cyJdLCJtYXBwaW5ncyI6IkFBY0EsSUFBTUEsTUFBTSxHQUFHLGtCQUFrQjtBQUVqQyxPQUFPLElBQU1DLGFBQWEsR0FBMEI7RUFDbERDLEdBQUcsRUFBRTtJQUNIQyxJQUFJLEVBQUVILE1BQU07SUFDWkksT0FBTyxLQUFBQyxNQUFBLENBQUtMLE1BQU0sYUFBVTtJQUM1Qk0sTUFBTSxLQUFBRCxNQUFBLENBQUtMLE1BQU0sWUFBUztJQUMxQk8sSUFBSSxLQUFBRixNQUFBLENBQUtMLE1BQU07RUNkZixDRGVEO0VBQ0Q7RUFDQTtFQUNBUSxHQUFHLEVBQUU7SUFBRUosT0FBTyxFQUFFLEVBQUU7SUFBRUUsTUFBTSxFQUFFLEVBQUU7SUFBRUMsSUFBSSxFQUFFO0VBQUMsQ0FBRTtFQUN6Q0UsUUFBUSxFQUFFO0lBQUVDLElBQUksRUFBRSxPQUFPO0lBQUVDLFlBQVksRUFBRSxTQUFTO0lBQUVDLGNBQWMsRUFBRTtFQUFXLENBQUU7RUFDakY7RUFDQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUc7QUNkL0IsQ0RlQyIsImZpbGUiOiJidXNpbmVzcy9EaWFsb2cvUmVzdWx0RGlhbG9nL2NvbnN0YW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiY29uc3QgUFJFRklYID0gJ29tLXJlc3VsdC1kaWFsb2cnO1xuZXhwb3J0IGNvbnN0IFJFU1VMVF9ESUFMT0cgPSB7XG4gICAgY2xzOiB7XG4gICAgICAgIHdyYXA6IFBSRUZJWCxcbiAgICAgICAgYWN0aW9uczogYCR7UFJFRklYfS1hY3Rpb25zYCxcbiAgICAgICAgZm9vdGVyOiBgJHtQUkVGSVh9LWZvb3RlcmAsXG4gICAgICAgIGhlbHA6IGAke1BSRUZJWH0taGVscGAsXG4gICAgfSxcbiAgICAvLyAxMnB4IGJldHdlZW4gdGhlIHR3byBidXR0b25zLCAyNHB4IGJldHdlZW4gdGhlIGFjdGlvbiByb3cgYW5kIHRoZSBoZWxwIHJvdyxcbiAgICAvLyA0cHggYmV0d2VlbiB0aGUgaGVscCBwcm9tcHQgYW5kIGl0cyBsaW5rLlxuICAgIGdhcDogeyBhY3Rpb25zOiAxMiwgZm9vdGVyOiAyNCwgaGVscDogNCB9LFxuICAgIGRlZmF1bHRzOiB7IHNpemU6ICdzbWFsbCcsIHByaW1hcnlDb2xvcjogJ3ByaW1hcnknLCBzZWNvbmRhcnlDb2xvcjogJ3NlY29uZGFyeScgfSxcbiAgICAvLyBgVHlwb2dyYXBoeS5MaW5rYCByZW5kZXJzIGFuIDxhPiB3aXRoIG5vIGhyZWYsIHNvIEVudGVyL1NwYWNlIGFjdGl2YXRlIGl0LlxuICAgIGFjdGl2YXRpb25LZXlzOiBbJ0VudGVyJywgJyAnXSxcbn07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ResultDialog } from './ResultDialog';
|
|
2
|
+
export * from './presets';
|
|
3
|
+
export * from './interface';
|
|
4
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1Jlc3VsdERpYWxvZy9pbmRleC50cyJdLCJuYW1lcyI6WyJSZXN1bHREaWFsb2ciXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFlBQVksUUFBUSxnQkFBZ0I7QUFDN0MsY0FBYyxXQUFXO0FBQ3pCLGNBQWMsYUFBYSIsImZpbGUiOiJidXNpbmVzcy9EaWFsb2cvUmVzdWx0RGlhbG9nL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -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,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL1Jlc3VsdERpYWxvZy9pbnRlcmZhY2UuanMiLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMiLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9SZXN1bHREaWFsb2cvaW50ZXJmYWNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwibWFwcGluZ3MiOiJBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -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
|
+
};
|