@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,89 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { IconName } from "../../../components/Icons";
3
+ /** Default copy for the optional help row. */
4
+ export interface TransactionDialogPresetHelp {
5
+ /** Muted prompt text. */
6
+ promptText?: ReactNode;
7
+ /** Trailing brand-colored action text. */
8
+ actionText?: ReactNode;
9
+ }
10
+ /**
11
+ * Pre-canned config for a transaction-status scenario. A preset fills the
12
+ * dialog's illustration, title, description, close icon, the primary action
13
+ * label, and the help row; the consumer wires the handlers and supplies the
14
+ * dynamic `details` rows. Any explicit prop overrides the preset.
15
+ */
16
+ export interface TransactionDialogPresetCopy {
17
+ /** Left-aligned 74px illustration. */
18
+ illustration: IconName;
19
+ /** Dialog heading. */
20
+ title: ReactNode;
21
+ /** Supporting copy under the title. */
22
+ description: ReactNode;
23
+ /** Default label for the primary action, when one is rendered. */
24
+ primaryLabel?: ReactNode;
25
+ /**
26
+ * Whether the close (X) icon shows by default.
27
+ * @default true
28
+ */
29
+ showCloseIcon?: boolean;
30
+ /** Default help-row copy below the actions. */
31
+ help?: TransactionDialogPresetHelp;
32
+ }
33
+ /**
34
+ * Canonical transaction-status scenarios. Pass a leaf straight to
35
+ * `TransactionDialog`'s `preset` prop — there is no string key to remember; the
36
+ * IDE navigates and type-checks it.
37
+ *
38
+ * Copy is taken from the Figma "Transaction completed" frame and the scp-ui Send
39
+ * result statuses (`INIT` → `initiated`, `FAILURE` → `failed`, `PENDING` →
40
+ * `pending`).
41
+ *
42
+ * @example
43
+ * ```tsx
44
+ * import { TRANSACTION_DIALOG_PRESETS } from '@1money/component-ui/business/Dialog/TransactionDialog';
45
+ *
46
+ * <TransactionDialog
47
+ * open={open}
48
+ * preset={TRANSACTION_DIALOG_PRESETS.failed}
49
+ * details={details}
50
+ * primaryAction={{ onClick: retry }}
51
+ * secondaryAction={{ label: 'Close', onClick: close }}
52
+ * help={{ onClick: openSupport }}
53
+ * onClose={close}
54
+ * />;
55
+ * ```
56
+ */
57
+ export declare const TRANSACTION_DIALOG_PRESETS: {
58
+ readonly completed: {
59
+ readonly illustration: "illusChecked";
60
+ readonly title: "Transaction completed";
61
+ readonly description: "Your funds have been sent successfully.";
62
+ readonly primaryLabel: "View in transaction history";
63
+ readonly showCloseIcon: true;
64
+ readonly help: TransactionDialogPresetHelp;
65
+ };
66
+ readonly initiated: {
67
+ readonly illustration: "illusChecked";
68
+ readonly title: "Your transaction initiated";
69
+ readonly description: "We will send you an email when the transaction is completed.";
70
+ readonly primaryLabel: "View in transaction history";
71
+ readonly showCloseIcon: true;
72
+ };
73
+ readonly failed: {
74
+ readonly illustration: "illusError";
75
+ readonly title: "Your transaction failed";
76
+ readonly description: "Please try again or contact support for assistance.";
77
+ readonly primaryLabel: "Try again";
78
+ readonly showCloseIcon: true;
79
+ readonly help: TransactionDialogPresetHelp;
80
+ };
81
+ readonly pending: {
82
+ readonly illustration: "illusPending";
83
+ readonly title: "Your Transaction is Under Review";
84
+ readonly description: "Please wait for the transaction to be completed.";
85
+ readonly primaryLabel: "View in transaction history";
86
+ readonly showCloseIcon: true;
87
+ readonly help: TransactionDialogPresetHelp;
88
+ };
89
+ };
@@ -0,0 +1,62 @@
1
+ var SUPPORT_HELP = {
2
+ promptText: 'Trouble with your transaction?',
3
+ actionText: 'Let us help!'
4
+ };
5
+ /**
6
+ * Canonical transaction-status scenarios. Pass a leaf straight to
7
+ * `TransactionDialog`'s `preset` prop — there is no string key to remember; the
8
+ * IDE navigates and type-checks it.
9
+ *
10
+ * Copy is taken from the Figma "Transaction completed" frame and the scp-ui Send
11
+ * result statuses (`INIT` → `initiated`, `FAILURE` → `failed`, `PENDING` →
12
+ * `pending`).
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * import { TRANSACTION_DIALOG_PRESETS } from '@1money/component-ui/business/Dialog/TransactionDialog';
17
+ *
18
+ * <TransactionDialog
19
+ * open={open}
20
+ * preset={TRANSACTION_DIALOG_PRESETS.failed}
21
+ * details={details}
22
+ * primaryAction={{ onClick: retry }}
23
+ * secondaryAction={{ label: 'Close', onClick: close }}
24
+ * help={{ onClick: openSupport }}
25
+ * onClose={close}
26
+ * />;
27
+ * ```
28
+ */
29
+ export var TRANSACTION_DIALOG_PRESETS = {
30
+ completed: {
31
+ illustration: 'illusChecked',
32
+ title: 'Transaction completed',
33
+ description: 'Your funds have been sent successfully.',
34
+ primaryLabel: 'View in transaction history',
35
+ showCloseIcon: true,
36
+ help: SUPPORT_HELP
37
+ },
38
+ initiated: {
39
+ illustration: 'illusChecked',
40
+ title: 'Your transaction initiated',
41
+ description: 'We will send you an email when the transaction is completed.',
42
+ primaryLabel: 'View in transaction history',
43
+ showCloseIcon: true
44
+ },
45
+ failed: {
46
+ illustration: 'illusError',
47
+ title: 'Your transaction failed',
48
+ description: 'Please try again or contact support for assistance.',
49
+ primaryLabel: 'Try again',
50
+ showCloseIcon: true,
51
+ help: SUPPORT_HELP
52
+ },
53
+ pending: {
54
+ illustration: 'illusPending',
55
+ title: 'Your Transaction is Under Review',
56
+ description: 'Please wait for the transaction to be completed.',
57
+ primaryLabel: 'View in transaction history',
58
+ showCloseIcon: true,
59
+ help: SUPPORT_HELP
60
+ }
61
+ };
62
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1RyYW5zYWN0aW9uRGlhbG9nL3ByZXNldHMudHMiLCJidXNpbmVzcy9EaWFsb2cvVHJhbnNhY3Rpb25EaWFsb2cvcHJlc2V0cy5qcyJdLCJuYW1lcyI6WyJTVVBQT1JUX0hFTFAiLCJwcm9tcHRUZXh0IiwiYWN0aW9uVGV4dCIsIlRSQU5TQUNUSU9OX0RJQUxPR19QUkVTRVRTIiwiY29tcGxldGVkIiwiaWxsdXN0cmF0aW9uIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsInByaW1hcnlMYWJlbCIsInNob3dDbG9zZUljb24iLCJoZWxwIiwiaW5pdGlhdGVkIiwiZmFpbGVkIiwicGVuZGluZyJdLCJtYXBwaW5ncyI6IkFBbUNBLElBQU1BLFlBQVksR0FBZ0M7RUFDaERDLFVBQVUsRUFBRSxnQ0FBZ0M7RUFDNUNDLFVBQVUsRUFBRTtBQ2xDZCxDRG1DQztBQUVEO0FDbkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURxQ0EsT0FBTyxJQUFNQywwQkFBMEIsR0FBRztFQUN4Q0MsU0FBUyxFQUFFO0lBQ1RDLFlBQVksRUFBRSxjQUFjO0lBQzVCQyxLQUFLLEVBQUUsdUJBQXVCO0lBQzlCQyxXQUFXLEVBQUUseUNBQXlDO0lBQ3REQyxZQUFZLEVBQUUsNkJBQTZCO0lBQzNDQyxhQUFhLEVBQUUsSUFBSTtJQUNuQkMsSUFBSSxFQUFFVjtFQ25DTixDRG9DRDtFQUNEVyxTQUFTLEVBQUU7SUFDVE4sWUFBWSxFQUFFLGNBQWM7SUFDNUJDLEtBQUssRUFBRSw0QkFBNEI7SUFDbkNDLFdBQVcsRUFBRSw4REFBOEQ7SUFDM0VDLFlBQVksRUFBRSw2QkFBNkI7SUFDM0NDLGFBQWEsRUFBRTtFQ25DZixDRG9DRDtFQUNERyxNQUFNLEVBQUU7SUFDTlAsWUFBWSxFQUFFLFlBQVk7SUFDMUJDLEtBQUssRUFBRSx5QkFBeUI7SUFDaENDLFdBQVcsRUFBRSxxREFBcUQ7SUFDbEVDLFlBQVksRUFBRSxXQUFXO0lBQ3pCQyxhQUFhLEVBQUUsSUFBSTtJQUNuQkMsSUFBSSxFQUFFVjtFQ25DTixDRG9DRDtFQUNEYSxPQUFPLEVBQUU7SUFDUFIsWUFBWSxFQUFFLGNBQWM7SUFDNUJDLEtBQUssRUFBRSxrQ0FBa0M7SUFDekNDLFdBQVcsRUFBRSxrREFBa0Q7SUFDL0RDLFlBQVksRUFBRSw2QkFBNkI7SUFDM0NDLGFBQWEsRUFBRSxJQUFJO0lBQ25CQyxJQUFJLEVBQUVWO0VDbkNOO0FBQ0osQ0RvQ2dFIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9UcmFuc2FjdGlvbkRpYWxvZy9wcmVzZXRzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJjb25zdCBTVVBQT1JUX0hFTFAgPSB7XG4gICAgcHJvbXB0VGV4dDogJ1Ryb3VibGUgd2l0aCB5b3VyIHRyYW5zYWN0aW9uPycsXG4gICAgYWN0aW9uVGV4dDogJ0xldCB1cyBoZWxwIScsXG59O1xuLyoqXG4gKiBDYW5vbmljYWwgdHJhbnNhY3Rpb24tc3RhdHVzIHNjZW5hcmlvcy4gUGFzcyBhIGxlYWYgc3RyYWlnaHQgdG9cbiAqIGBUcmFuc2FjdGlvbkRpYWxvZ2AncyBgcHJlc2V0YCBwcm9wIOKAlCB0aGVyZSBpcyBubyBzdHJpbmcga2V5IHRvIHJlbWVtYmVyOyB0aGVcbiAqIElERSBuYXZpZ2F0ZXMgYW5kIHR5cGUtY2hlY2tzIGl0LlxuICpcbiAqIENvcHkgaXMgdGFrZW4gZnJvbSB0aGUgRmlnbWEgXCJUcmFuc2FjdGlvbiBjb21wbGV0ZWRcIiBmcmFtZSBhbmQgdGhlIHNjcC11aSBTZW5kXG4gKiByZXN1bHQgc3RhdHVzZXMgKGBJTklUYCDihpIgYGluaXRpYXRlZGAsIGBGQUlMVVJFYCDihpIgYGZhaWxlZGAsIGBQRU5ESU5HYCDihpJcbiAqIGBwZW5kaW5nYCkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgVFJBTlNBQ1RJT05fRElBTE9HX1BSRVNFVFMgfSBmcm9tICdAMW1vbmV5L2NvbXBvbmVudC11aS9idXNpbmVzcy9EaWFsb2cvVHJhbnNhY3Rpb25EaWFsb2cnO1xuICpcbiAqIDxUcmFuc2FjdGlvbkRpYWxvZ1xuICogICBvcGVuPXtvcGVufVxuICogICBwcmVzZXQ9e1RSQU5TQUNUSU9OX0RJQUxPR19QUkVTRVRTLmZhaWxlZH1cbiAqICAgZGV0YWlscz17ZGV0YWlsc31cbiAqICAgcHJpbWFyeUFjdGlvbj17eyBvbkNsaWNrOiByZXRyeSB9fVxuICogICBzZWNvbmRhcnlBY3Rpb249e3sgbGFiZWw6ICdDbG9zZScsIG9uQ2xpY2s6IGNsb3NlIH19XG4gKiAgIGhlbHA9e3sgb25DbGljazogb3BlblN1cHBvcnQgfX1cbiAqICAgb25DbG9zZT17Y2xvc2V9XG4gKiAvPjtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgVFJBTlNBQ1RJT05fRElBTE9HX1BSRVNFVFMgPSB7XG4gICAgY29tcGxldGVkOiB7XG4gICAgICAgIGlsbHVzdHJhdGlvbjogJ2lsbHVzQ2hlY2tlZCcsXG4gICAgICAgIHRpdGxlOiAnVHJhbnNhY3Rpb24gY29tcGxldGVkJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdZb3VyIGZ1bmRzIGhhdmUgYmVlbiBzZW50IHN1Y2Nlc3NmdWxseS4nLFxuICAgICAgICBwcmltYXJ5TGFiZWw6ICdWaWV3IGluIHRyYW5zYWN0aW9uIGhpc3RvcnknLFxuICAgICAgICBzaG93Q2xvc2VJY29uOiB0cnVlLFxuICAgICAgICBoZWxwOiBTVVBQT1JUX0hFTFAsXG4gICAgfSxcbiAgICBpbml0aWF0ZWQ6IHtcbiAgICAgICAgaWxsdXN0cmF0aW9uOiAnaWxsdXNDaGVja2VkJyxcbiAgICAgICAgdGl0bGU6ICdZb3VyIHRyYW5zYWN0aW9uIGluaXRpYXRlZCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnV2Ugd2lsbCBzZW5kIHlvdSBhbiBlbWFpbCB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21wbGV0ZWQuJyxcbiAgICAgICAgcHJpbWFyeUxhYmVsOiAnVmlldyBpbiB0cmFuc2FjdGlvbiBoaXN0b3J5JyxcbiAgICAgICAgc2hvd0Nsb3NlSWNvbjogdHJ1ZSxcbiAgICB9LFxuICAgIGZhaWxlZDoge1xuICAgICAgICBpbGx1c3RyYXRpb246ICdpbGx1c0Vycm9yJyxcbiAgICAgICAgdGl0bGU6ICdZb3VyIHRyYW5zYWN0aW9uIGZhaWxlZCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuJyxcbiAgICAgICAgcHJpbWFyeUxhYmVsOiAnVHJ5IGFnYWluJyxcbiAgICAgICAgc2hvd0Nsb3NlSWNvbjogdHJ1ZSxcbiAgICAgICAgaGVscDogU1VQUE9SVF9IRUxQLFxuICAgIH0sXG4gICAgcGVuZGluZzoge1xuICAgICAgICBpbGx1c3RyYXRpb246ICdpbGx1c1BlbmRpbmcnLFxuICAgICAgICB0aXRsZTogJ1lvdXIgVHJhbnNhY3Rpb24gaXMgVW5kZXIgUmV2aWV3JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdQbGVhc2Ugd2FpdCBmb3IgdGhlIHRyYW5zYWN0aW9uIHRvIGJlIGNvbXBsZXRlZC4nLFxuICAgICAgICBwcmltYXJ5TGFiZWw6ICdWaWV3IGluIHRyYW5zYWN0aW9uIGhpc3RvcnknLFxuICAgICAgICBzaG93Q2xvc2VJY29uOiB0cnVlLFxuICAgICAgICBoZWxwOiBTVVBQT1JUX0hFTFAsXG4gICAgfSxcbn07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Retrieves the spacing value for a given token key.
3
+ *
4
+ * @param {string} $key - The spacing token key (e.g., '100', '200').
5
+ * @return {length|null} The computed spacing value or null if the key is invalid.
6
+ * @example
7
+ * .element {
8
+ * padding: om-spacing-token('200'); // Returns 8px if $om-sys-spacing-unit is 4px
9
+ * }
10
+ */
11
+ /**
12
+ * Computes the spacing value based on a token key or a direct length value.
13
+ *
14
+ * @param {string|length} $value - The spacing token key (e.g., '100') or a direct length value (e.g., '16px').
15
+ * @return {length} The computed spacing value.
16
+ * @example
17
+ * .element {
18
+ * margin: om-spacing-value('300'); // Returns 12px if $om-sys-spacing-unit is 4px
19
+ * padding: om-spacing-value(16px); // Returns 16px
20
+ * gap: om-spacing-value(2); // Returns 8px if $om-sys-spacing-unit is 4px
21
+ * }
22
+ */
23
+ .om-transaction-dialog-row {
24
+ padding: var(--om-spacing-300, 12px) 0;
25
+ border-top: 1px solid var(--om-border-default, #d1d2d2);
26
+ }
27
+ .om-transaction-dialog-value {
28
+ text-align: right;
29
+ }
30
+ .om-transaction-dialog-actions > button {
31
+ width: 100%;
32
+ white-space: nowrap;
33
+ }
34
+ .om-transaction-dialog-help a {
35
+ cursor: pointer;
36
+ }
@@ -0,0 +1,2 @@
1
+ import './TransactionDialog.css';
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9UcmFuc2FjdGlvbkRpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1RyYW5zYWN0aW9uRGlhbG9nL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sMEJBQTBCIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9UcmFuc2FjdGlvbkRpYWxvZy9zdHlsZS9jc3MuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1 @@
1
+ import './TransactionDialog.css';
@@ -0,0 +1,2 @@
1
+ import './TransactionDialog.css';
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9UcmFuc2FjdGlvbkRpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1RyYW5zYWN0aW9uRGlhbG9nL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sMEJBQTBCIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9UcmFuc2FjdGlvbkRpYWxvZy9zdHlsZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,14 @@
1
+ import type { FC } from 'react';
2
+ import type { VerificationDialogResend } from './interface';
3
+ export interface ResendRowProps {
4
+ resend: VerificationDialogResend;
5
+ }
6
+ /**
7
+ * The "Haven't received the code? Resend" row below the footer divider. Owns its
8
+ * own cooldown: while counting down (or while a resend is in flight) the row is
9
+ * inert — muted, non-clickable, default cursor — and shows the remaining time.
10
+ * When resending is allowed, both the prompt text and the link trigger it and
11
+ * show a pointer cursor. Rendered only when a `resend` config is provided, so
12
+ * the countdown hook never runs for dialogs without resend.
13
+ */
14
+ export declare const ResendRow: FC<ResendRowProps>;
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Divider } from '../../../components/Divider';
3
+ import { Flex } from '../../../components/Flex';
4
+ import { Typography } from '../../../components/Typography';
5
+ import { joinCls } from '../../../utils/classnames';
6
+ import { VERIFICATION_DIALOG } from './constants';
7
+ import { useResendCountdown } from './hooks';
8
+ /**
9
+ * The "Haven't received the code? Resend" row below the footer divider. Owns its
10
+ * own cooldown: while counting down (or while a resend is in flight) the row is
11
+ * inert — muted, non-clickable, default cursor — and shows the remaining time.
12
+ * When resending is allowed, both the prompt text and the link trigger it and
13
+ * show a pointer cursor. Rendered only when a `resend` config is provided, so
14
+ * the countdown hook never runs for dialogs without resend.
15
+ */
16
+ export var ResendRow = function ResendRow(_ref) {
17
+ var resend = _ref.resend;
18
+ var promptText = resend.promptText,
19
+ _resend$actionText = resend.actionText,
20
+ actionText = _resend$actionText === void 0 ? VERIFICATION_DIALOG.defaults.resendLabel : _resend$actionText,
21
+ onResend = resend.onResend,
22
+ cooldown = resend.cooldown;
23
+ var _useResendCountdown = useResendCountdown({
24
+ onResend: onResend,
25
+ cooldown: cooldown
26
+ }),
27
+ canResend = _useResendCountdown.canResend,
28
+ remaining = _useResendCountdown.remaining,
29
+ formatted = _useResendCountdown.formatted,
30
+ triggerResend = _useResendCountdown.resend;
31
+ var handleClick = function handleClick() {
32
+ if (canResend) triggerResend();
33
+ };
34
+ var handleKeyDown = function handleKeyDown(event) {
35
+ if (!canResend || !VERIFICATION_DIALOG.activationKeys.includes(event.key)) return;
36
+ event.preventDefault();
37
+ triggerResend();
38
+ };
39
+ return _jsxs(_Fragment, {
40
+ children: [_jsx(Divider, {}), _jsxs(Flex, {
41
+ align: 'center',
42
+ justify: 'space-between',
43
+ className: VERIFICATION_DIALOG.cls.recovery,
44
+ children: [promptText && _jsx(Typography.Body, {
45
+ size: 'md',
46
+ strong: true,
47
+ color: 'default-tertiary',
48
+ className: joinCls(VERIFICATION_DIALOG.cls.recoveryText, canResend && VERIFICATION_DIALOG.mod.clickable),
49
+ onClick: canResend ? handleClick : undefined,
50
+ children: promptText
51
+ }), _jsxs(Typography.Link, {
52
+ size: 'md',
53
+ role: 'button',
54
+ tabIndex: 0,
55
+ disabled: !canResend,
56
+ color: canResend ? 'brand' : 'default-tertiary',
57
+ className: joinCls(VERIFICATION_DIALOG.cls.resend, canResend && VERIFICATION_DIALOG.mod.clickable),
58
+ onClick: handleClick,
59
+ onKeyDown: handleKeyDown,
60
+ children: [actionText, remaining > 0 ? " (".concat(formatted, ")") : '']
61
+ })]
62
+ })]
63
+ });
64
+ };
65
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvUmVzZW5kUm93LmpzIiwiYnVzaW5lc3MvRGlhbG9nL3NyYy9idXNpbmVzcy9EaWFsb2cvVmVyaWZpY2F0aW9uRGlhbG9nL1Jlc2VuZFJvdy50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiRGl2aWRlciIsIkZsZXgiLCJUeXBvZ3JhcGh5Iiwiam9pbkNscyIsIlZFUklGSUNBVElPTl9ESUFMT0ciLCJ1c2VSZXNlbmRDb3VudGRvd24iLCJSZXNlbmRSb3ciLCJfcmVmIiwicmVzZW5kIiwicHJvbXB0VGV4dCIsIl9yZXNlbmQkYWN0aW9uVGV4dCIsImFjdGlvblRleHQiLCJkZWZhdWx0cyIsInJlc2VuZExhYmVsIiwib25SZXNlbmQiLCJjb29sZG93biIsIl91c2VSZXNlbmRDb3VudGRvd24iLCJjYW5SZXNlbmQiLCJyZW1haW5pbmciLCJmb3JtYXR0ZWQiLCJ0cmlnZ2VyUmVzZW5kIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVLZXlEb3duIiwiZXZlbnQiLCJhY3RpdmF0aW9uS2V5cyIsImluY2x1ZGVzIiwia2V5IiwicHJldmVudERlZmF1bHQiLCJjaGlsZHJlbiIsImFsaWduIiwianVzdGlmeSIsImNsYXNzTmFtZSIsImNscyIsInJlY292ZXJ5IiwiQm9keSIsInNpemUiLCJzdHJvbmciLCJjb2xvciIsInJlY292ZXJ5VGV4dCIsIm1vZCIsImNsaWNrYWJsZSIsIm9uQ2xpY2siLCJ1bmRlZmluZWQiLCJMaW5rIiwicm9sZSIsInRhYkluZGV4IiwiZGlzYWJsZWQiLCJvbktleURvd24iLCJjb25jYXQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxJQUFJLElBQUlDLEtBQUssRUFBRUMsUUFBUSxJQUFJQyxTQUFTLFFBQVEsbUJBQW1CO0FDQXJGLFNBQVNDLE9BQU8sUUFBUSw2QkFBNkI7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QU0sRUFDOUJTLFNBQVMsSUFBSWIsbUJBQW1CLENBQUNtQyxHQUFHLENBQUNDLFNBQVMsQ0FDL0M7UUFDREMsT0FBTyxFQUFFcEIsV0FBVztRQUNwQjBCLFNBQVMsRUFBRXpCLGFBQWE7UUFBQU0sUUFBQSxFQUFBLENBRXZCakIsVUFBVSxFQUNWTyxTQUFTLEdBQUcsQ0FBQyxRQUFBOEIsTUFBQSxDQUFRN0IsU0FBUyxTQUFNLEVBQUU7TUFBQSxDQUFBLENBQ3ZCO0lBQUEsQ0FBQSxDQUNiO0VBQUEsQ0FBQSxDQUNOO0FBRVAsQ0FBQyIsImZpbGUiOiJidXNpbmVzcy9EaWFsb2cvVmVyaWZpY2F0aW9uRGlhbG9nL1Jlc2VuZFJvdy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzLCBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IERpdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL0RpdmlkZXInO1xuaW1wb3J0IHsgRmxleCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvRmxleCc7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IFZFUklGSUNBVElPTl9ESUFMT0cgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VSZXNlbmRDb3VudGRvd24gfSBmcm9tICcuL2hvb2tzJztcbi8qKlxuICogVGhlIFwiSGF2ZW4ndCByZWNlaXZlZCB0aGUgY29kZT8gUmVzZW5kXCIgcm93IGJlbG93IHRoZSBmb290ZXIgZGl2aWRlci4gT3ducyBpdHNcbiAqIG93biBjb29sZG93bjogd2hpbGUgY291bnRpbmcgZG93biAob3Igd2hpbGUgYSByZXNlbmQgaXMgaW4gZmxpZ2h0KSB0aGUgcm93IGlzXG4gKiBpbmVydCDigJQgbXV0ZWQsIG5vbi1jbGlja2FibGUsIGRlZmF1bHQgY3Vyc29yIOKAlCBhbmQgc2hvd3MgdGhlIHJlbWFpbmluZyB0aW1lLlxuICogV2hlbiByZXNlbmRpbmcgaXMgYWxsb3dlZCwgYm90aCB0aGUgcHJvbXB0IHRleHQgYW5kIHRoZSBsaW5rIHRyaWdnZXIgaXQgYW5kXG4gKiBzaG93IGEgcG9pbnRlciBjdXJzb3IuIFJlbmRlcmVkIG9ubHkgd2hlbiBhIGByZXNlbmRgIGNvbmZpZyBpcyBwcm92aWRlZCwgc29cbiAqIHRoZSBjb3VudGRvd24gaG9vayBuZXZlciBydW5zIGZvciBkaWFsb2dzIHdpdGhvdXQgcmVzZW5kLlxuICovXG5leHBvcnQgY29uc3QgUmVzZW5kUm93ID0gKHsgcmVzZW5kIH0pID0+IHtcbiAgICBjb25zdCB7IHByb21wdFRleHQsIGFjdGlvblRleHQgPSBWRVJJRklDQVRJT05fRElBTE9HLmRlZmF1bHRzLnJlc2VuZExhYmVsLCBvblJlc2VuZCwgY29vbGRvd24sIH0gPSByZXNlbmQ7XG4gICAgY29uc3QgeyBjYW5SZXNlbmQsIHJlbWFpbmluZywgZm9ybWF0dGVkLCByZXNlbmQ6IHRyaWdnZXJSZXNlbmQgfSA9IHVzZVJlc2VuZENvdW50ZG93bih7XG4gICAgICAgIG9uUmVzZW5kLFxuICAgICAgICBjb29sZG93bixcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICAgICAgaWYgKGNhblJlc2VuZClcbiAgICAgICAgICAgIHRyaWdnZXJSZXNlbmQoKTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFjYW5SZXNlbmQgfHwgIVZFUklGSUNBVElPTl9ESUFMT0cuYWN0aXZhdGlvbktleXMuaW5jbHVkZXMoZXZlbnQua2V5KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdHJpZ2dlclJlc2VuZCgpO1xuICAgIH07XG4gICAgcmV0dXJuIChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtfanN4KERpdmlkZXIsIHt9KSwgX2pzeHMoRmxleCwgeyBhbGlnbjogJ2NlbnRlcicsIGp1c3RpZnk6ICdzcGFjZS1iZXR3ZWVuJywgY2xhc3NOYW1lOiBWRVJJRklDQVRJT05fRElBTE9HLmNscy5yZWNvdmVyeSwgY2hpbGRyZW46IFtwcm9tcHRUZXh0ICYmIChfanN4KFR5cG9ncmFwaHkuQm9keSwgeyBzaXplOiAnbWQnLCBzdHJvbmc6IHRydWUsIGNvbG9yOiAnZGVmYXVsdC10ZXJ0aWFyeScsIGNsYXNzTmFtZTogam9pbkNscyhWRVJJRklDQVRJT05fRElBTE9HLmNscy5yZWNvdmVyeVRleHQsIGNhblJlc2VuZCAmJiBWRVJJRklDQVRJT05fRElBTE9HLm1vZC5jbGlja2FibGUpLCBvbkNsaWNrOiBjYW5SZXNlbmQgPyBoYW5kbGVDbGljayA6IHVuZGVmaW5lZCwgY2hpbGRyZW46IHByb21wdFRleHQgfSkpLCBfanN4cyhUeXBvZ3JhcGh5LkxpbmssIHsgc2l6ZTogJ21kJywgcm9sZTogJ2J1dHRvbicsIHRhYkluZGV4OiAwLCBkaXNhYmxlZDogIWNhblJlc2VuZCwgY29sb3I6IGNhblJlc2VuZCA/ICdicmFuZCcgOiAnZGVmYXVsdC10ZXJ0aWFyeScsIGNsYXNzTmFtZTogam9pbkNscyhWRVJJRklDQVRJT05fRElBTE9HLmNscy5yZXNlbmQsIGNhblJlc2VuZCAmJiBWRVJJRklDQVRJT05fRElBTE9HLm1vZC5jbGlja2FibGUpLCBvbkNsaWNrOiBoYW5kbGVDbGljaywgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLCBjaGlsZHJlbjogW2FjdGlvblRleHQsIHJlbWFpbmluZyA+IDAgPyBgICgke2Zvcm1hdHRlZH0pYCA6ICcnXSB9KV0gfSldIH0pKTtcbn07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,3 @@
1
+ import type { VerificationDialogProps } from './interface';
2
+ import './style';
3
+ export declare const VerificationDialog: import("react").NamedExoticComponent<VerificationDialogProps>;
@@ -0,0 +1,116 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { memo, useEffect } from 'react';
3
+ import { Button } from '../../../components/Button';
4
+ import { Dialog } from '../../../components/Dialog';
5
+ import { Flex } from '../../../components/Flex';
6
+ import { Input } from '../../../components/Input';
7
+ import { Typography } from '../../../components/Typography';
8
+ import { joinCls } from '../../../utils/classnames';
9
+ import { VERIFICATION_DIALOG } from './constants';
10
+ import { ResendRow } from './ResendRow';
11
+ import { useOtpVerification } from './hooks';
12
+ import './style';
13
+ var VerificationDialogBase = function VerificationDialogBase(_ref) {
14
+ var open = _ref.open,
15
+ _ref$size = _ref.size,
16
+ size = _ref$size === void 0 ? VERIFICATION_DIALOG.defaults.size : _ref$size,
17
+ maskClosable = _ref.maskClosable,
18
+ _ref$showCloseIcon = _ref.showCloseIcon,
19
+ showCloseIcon = _ref$showCloseIcon === void 0 ? false : _ref$showCloseIcon,
20
+ showBackIcon = _ref.showBackIcon,
21
+ onBack = _ref.onBack,
22
+ className = _ref.className,
23
+ title = _ref.title,
24
+ description = _ref.description,
25
+ value = _ref.value,
26
+ defaultValue = _ref.defaultValue,
27
+ otpHint = _ref.otpHint,
28
+ _ref$autoFocus = _ref.autoFocus,
29
+ autoFocus = _ref$autoFocus === void 0 ? false : _ref$autoFocus,
30
+ _ref$mask = _ref.mask,
31
+ mask = _ref$mask === void 0 ? false : _ref$mask,
32
+ _ref$disabled = _ref.disabled,
33
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
34
+ _ref$autoSubmit = _ref.autoSubmit,
35
+ autoSubmit = _ref$autoSubmit === void 0 ? true : _ref$autoSubmit,
36
+ onVerify = _ref.onVerify,
37
+ onChange = _ref.onChange,
38
+ _ref$submitText = _ref.submitText,
39
+ submitText = _ref$submitText === void 0 ? VERIFICATION_DIALOG.defaults.submitText : _ref$submitText,
40
+ secondaryAction = _ref.secondaryAction,
41
+ resend = _ref.resend,
42
+ onClose = _ref.onClose;
43
+ var _a, _b;
44
+ var otp = useOtpVerification({
45
+ onVerify: onVerify,
46
+ value: value,
47
+ defaultValue: defaultValue,
48
+ autoSubmit: autoSubmit,
49
+ onChange: onChange
50
+ });
51
+ // Drop a stale error when the dialog is re-opened, without clobbering a
52
+ // controlled/prefilled value. `clearError` is stable, so this only runs on an
53
+ // open/close transition — not on every keystroke.
54
+ var clearError = otp.clearError;
55
+ useEffect(function () {
56
+ if (open) clearError();
57
+ }, [open, clearError]);
58
+ var body = _jsxs(Flex, {
59
+ vertical: true,
60
+ gap: VERIFICATION_DIALOG.gap.body,
61
+ className: VERIFICATION_DIALOG.cls.body,
62
+ children: [description && _jsx(Typography.Body, {
63
+ as: 'p',
64
+ size: 'md',
65
+ strong: true,
66
+ color: 'default-secondary',
67
+ children: description
68
+ }), _jsx(Input.OTP, {
69
+ value: otp.value,
70
+ status: otp.status,
71
+ feedback: (_a = otp.feedback) !== null && _a !== void 0 ? _a : otpHint,
72
+ autoFocus: autoFocus,
73
+ mask: mask,
74
+ disabled: disabled,
75
+ onChange: otp.onChange
76
+ })]
77
+ });
78
+ var footerNode = _jsxs(Flex, {
79
+ vertical: true,
80
+ gap: VERIFICATION_DIALOG.gap.footer,
81
+ className: VERIFICATION_DIALOG.cls.footer,
82
+ children: [_jsxs(Flex, {
83
+ gap: VERIFICATION_DIALOG.gap.actions,
84
+ className: VERIFICATION_DIALOG.cls.actions,
85
+ children: [secondaryAction && _jsx(Button, {
86
+ color: (_b = secondaryAction.color) !== null && _b !== void 0 ? _b : VERIFICATION_DIALOG.defaults.secondaryColor,
87
+ disabled: secondaryAction.disabled,
88
+ onClick: secondaryAction.onClick,
89
+ children: secondaryAction.label
90
+ }), _jsx(Button, {
91
+ color: 'primary',
92
+ loading: otp.submitting,
93
+ disabled: !otp.valid || otp.submitting || disabled,
94
+ onClick: otp.submit,
95
+ children: submitText
96
+ })]
97
+ }), resend && _jsx(ResendRow, {
98
+ resend: resend
99
+ })]
100
+ });
101
+ return _jsx(Dialog, {
102
+ open: open,
103
+ size: size,
104
+ maskClosable: maskClosable,
105
+ showCloseIcon: showCloseIcon,
106
+ showBackIcon: showBackIcon,
107
+ onBack: onBack,
108
+ className: joinCls(VERIFICATION_DIALOG.cls.wrap, className),
109
+ title: title,
110
+ footer: footerNode,
111
+ onCancel: onClose,
112
+ children: body
113
+ });
114
+ };
115
+ export var VerificationDialog = /*#__PURE__*/memo(VerificationDialogBase);
116
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvVmVyaWZpY2F0aW9uRGlhbG9nLmpzIiwiYnVzaW5lc3MvRGlhbG9nL3NyYy9idXNpbmVzcy9EaWFsb2cvVmVyaWZpY2F0aW9uRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJCdXR0b24iLCJEaWFsb2ciLCJGbGV4IiwiSW5wdXQiLCJUeXBvZ3JhcGh5Iiwiam9pbkNscyIsIlZFUklGSUNBVElPTl9ESUFMT0ciLCJSZXNlbmRSb3ciLCJ1c2VPdHBWZXJpZmljYXRpb24iLCJWZXJpZmljYXRpb25EaWFsb2dCYXNlIiwiX3JlZiIsIm9wZW4iLCJfcmVmJHNpemUiLCJzaXplIiwiZGVmYXVsdHMiLCJtYXNrQ2xvc2FibGUiLCJfcmVmJHNob3dDbG9zZUljb24iLCJzaG93Q2xvc2VJY29uIiwic2hvd0JhY2tJY29uIiwib25CYWNrIiwiY2xhc3NOYW1lIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwib3RwSGludCIsIl9yZWYkYXV0b0ZvY3VzIiwiYXV0b0ZvY3VzIiwiX3JlZiRtYXNrIiwibWFzayIsIl9yZWYkZGlzYWJsZWQiLCJkaXNhYmxlZCIsIl9yZWYkYXV0b1N1Ym1pdCIsImF1dG9TdWJtaXQiLCJvblZlcmlmeSIsIm9uQ2hhbmdlIiwiX3JlZiRzdWJtaXRUZXh0Iiwic3VibWl0VGV4dCIsInNlY29uZGFyeUFjdGlvbiIsInJlc2VuZCIsIm9uQ2xvc2UiLCJfYSIsIl9iIiwib3RwIiwiY2xlYXJFcnJvciIsImJvZHkiLCJ2ZXJ0aWNhbCIsImdhcCIsImNscyIsImNoaWxkcmVuIiwiQm9keSIsImFzIiwic3Ryb25nIiwiY29sb3IiLCJPVFAiLCJzdGF0dXMiLCJmZWVkYmFjayIsImZvb3Rlck5vZGUiLCJmb290ZXIiLCJhY3Rpb25zIiwic2Vjb25kYXJ5Q29sb3IiLCJvbkNsaWNrIiwibGFiZWwiLCJsb2FkaW5nIiwic3VibWl0dGluZyIsInZhbGlkIiwic3VibWl0Iiwid3JhcCIsIm9uQ2FuY2VsIiwiVmVyaWZpY2F0aW9uRGlhbG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFBSSxJQUFJQyxLQUFLLFFBQVEsbUJBQW1CO0FDQTlELFNBQVNDLElBQUksRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDdkMsU0FBU0MsTUFBTSxRQUFRLDRCQUE0QjtBQUNuRCxTQUFTQyxNQUFNLFFBQVEsNEJBQTRCO0FBQ25ELFNBQVNDLElBQUksUUFBUSwwQkFBMEI7QUFDL0MsU0FBU0MsS0FBSyxRQUFRLDJCQUEyQjtBQUNqRCxTQUFTQyxVQUFVLFFBQVEsZ0NBQWdDO0FBQzNELFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsbUJBQW1CLFFBQVEsYUFBYTtBQUNqRCxTQUFTQyxTQUFTLFFBQVEsYUFBYTtBQUN2QyxTQUFTQyxrQkFBa0IsUUFBUSxTQUFTO0FBRzVDLE9BQU8sU0FBUztBQUVoQixJQUFNQyxzQkFBc0IsR0FBZ0MsU0FBdERBLHNCQUFzQkEsQ0FBQUMsSUFBQSxFQXVCdkI7RUFBQSxJQXRCSEMsSUFBSSxHQUFBRCxJQUFBLENBQUpDLElBQUk7SUFBQUMsU0FBQSxHQUFBRixJQUFBLENBQ0pHLElBQUk7SUFBSkEsSUFBSSxHQUFBRCxTQUFBLGNBQUdOLG1CQUFtQixDQUFDUSxRQUFRLENBQUNELElBQUksR0FBQUQsU0FBQTtJQUN4Q0csWUFBWSxHQUFBTCxJQUFBLENBQVpLLFlBQVk7SUFBQUMsa0JBQUEsR0FBQU4sSUFBQSxDQUNaTyxhQUFhO0lBQWJBLGFBQWEsR0FBQUQsa0JBQUEsY0FBRyxLQUFLLEdBQUFBLGtCQUFBO0lBQ3JCRSxZQUFZLEdBQUFSLElBQUEsQ0FBWlEsWUFBWTtJQUNaQyxNQUFNLEdBQUFULElBQUEsQ0FBTlMsTUFBTTtJQUNOQyxTQUFTLEdBQUFWLElBQUEsQ0FB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NUMsSUFBQSxDQUFDWSxTQUFTLEVBQUE7TUFBQ2dDLE1BQU0sRUFBRUE7SUFBTSxDQUFBLENBQUk7RUFBQSxDQUFBLENBRTNDO0VBRUQsT0FDRTVDLElBQUEsQ0FBQ00sTUFBTSxFQUFBO0lBQ0xVLElBQUksRUFBRUEsSUFBSTtJQUNWRSxJQUFJLEVBQUVBLElBQUk7SUFDVkUsWUFBWSxFQUFFQSxZQUFZO0lBQzFCRSxhQUFhLEVBQUVBLGFBQWE7SUFDNUJDLFlBQVksRUFBRUEsWUFBWTtJQUMxQkMsTUFBTSxFQUFFQSxNQUFNO0lBQ2RDLFNBQVMsRUFBRWYsT0FBTyxDQUFDQyxtQkFBbUIsQ0FBQzBDLEdBQUcsQ0FBQ21CLElBQUksRUFBRS9DLFNBQVMsQ0FBQztJQUMzREMsS0FBSyxFQUFFQSxLQUFLO0lBQ1pxQyxNQUFNLEVBQUVELFVBQVU7SUFDbEJXLFFBQVEsRUFBRTVCLE9BQU87SUFBQVMsUUFBQSxFQUVoQko7RUFBSSxDQUFBLENBQ0U7QUFFYixDQUFDO0FBRUQsT0FBTyxJQUFNd0Isa0JBQWtCLGdCQUFHdkUsSUFBSSxDQUFDVyxzQkFBc0IsQ0FBQyIsImZpbGUiOiJidXNpbmVzcy9EaWFsb2cvVmVyaWZpY2F0aW9uRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL0J1dHRvbic7XG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL0RpYWxvZyc7XG5pbXBvcnQgeyBGbGV4IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9GbGV4JztcbmltcG9ydCB7IElucHV0IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9JbnB1dCc7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IFZFUklGSUNBVElPTl9ESUFMT0cgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSZXNlbmRSb3cgfSBmcm9tICcuL1Jlc2VuZFJvdyc7XG5pbXBvcnQgeyB1c2VPdHBWZXJpZmljYXRpb24gfSBmcm9tICcuL2hvb2tzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5jb25zdCBWZXJpZmljYXRpb25EaWFsb2dCYXNlID0gKHsgb3Blbiwgc2l6ZSA9IFZFUklGSUNBVElPTl9ESUFMT0cuZGVmYXVsdHMuc2l6ZSwgbWFza0Nsb3NhYmxlLCBzaG93Q2xvc2VJY29uID0gZmFsc2UsIHNob3dCYWNrSWNvbiwgb25CYWNrLCBjbGFzc05hbWUsIHRpdGxlLCBkZXNjcmlwdGlvbiwgdmFsdWUsIGRlZmF1bHRWYWx1ZSwgb3RwSGludCwgYXV0b0ZvY3VzID0gZmFsc2UsIG1hc2sgPSBmYWxzZSwgZGlzYWJsZWQgPSBmYWxzZSwgYXV0b1N1Ym1pdCA9IHRydWUsIG9uVmVyaWZ5LCBvbkNoYW5nZSwgc3VibWl0VGV4dCA9IFZFUklGSUNBVElPTl9ESUFMT0cuZGVmYXVsdHMuc3VibWl0VGV4dCwgc2Vjb25kYXJ5QWN0aW9uLCByZXNlbmQsIG9uQ2xvc2UsIH0pID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IG90cCA9IHVzZU90cFZlcmlmaWNhdGlvbih7XG4gICAgICAgIG9uVmVyaWZ5LFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgICBhdXRvU3VibWl0LFxuICAgICAgICBvbkNoYW5nZSxcbiAgICB9KTtcbiAgICAvLyBEcm9wIGEgc3RhbGUgZXJyb3Igd2hlbiB0aGUgZGlhbG9nIGlzIHJlLW9wZW5lZCwgd2l0aG91dCBjbG9iYmVyaW5nIGFcbiAgICAvLyBjb250cm9sbGVkL3ByZWZpbGxlZCB2YWx1ZS4gYGNsZWFyRXJyb3JgIGlzIHN0YWJsZSwgc28gdGhpcyBvbmx5IHJ1bnMgb24gYW5cbiAgICAvLyBvcGVuL2Nsb3NlIHRyYW5zaXRpb24g4oCUIG5vdCBvbiBldmVyeSBrZXlzdHJva2UuXG4gICAgY29uc3QgeyBjbGVhckVycm9yIH0gPSBvdHA7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG9wZW4pXG4gICAgICAgICAgICBjbGVhckVycm9yKCk7XG4gICAgfSwgW29wZW4sIGNsZWFyRXJyb3JdKTtcbiAgICBjb25zdCBib2R5ID0gKF9qc3hzKEZsZXgsIHsgdmVydGljYWw6IHRydWUsIGdhcDogVkVSSUZJQ0FUSU9OX0RJQUxPRy5nYXAuYm9keSwgY2xhc3NOYW1lOiBWRVJJRklDQVRJT05fRElBTE9HLmNscy5ib2R5LCBjaGlsZHJlbjogW2Rlc2NyaXB0aW9uICYmIChfanN4KFR5cG9ncmFwaHkuQm9keSwgeyBhczogJ3AnLCBzaXplOiAnbWQnLCBzdHJvbmc6IHRydWUsIGNvbG9yOiAnZGVmYXVsdC1zZWNvbmRhcnknLCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpLCBfanN4KElucHV0Lk9UUCwgeyB2YWx1ZTogb3RwLnZhbHVlLCBzdGF0dXM6IG90cC5zdGF0dXMsIGZlZWRiYWNrOiAoX2EgPSBvdHAuZmVlZGJhY2spICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG90cEhpbnQsIGF1dG9Gb2N1czogYXV0b0ZvY3VzLCBtYXNrOiBtYXNrLCBkaXNhYmxlZDogZGlzYWJsZWQsIG9uQ2hhbmdlOiBvdHAub25DaGFuZ2UgfSldIH0pKTtcbiAgICBjb25zdCBmb290ZXJOb2RlID0gKF9qc3hzKEZsZXgsIHsgdmVydGljYWw6IHRydWUsIGdhcDogVkVSSUZJQ0FUSU9OX0RJQUxPRy5nYXAuZm9vdGVyLCBjbGFzc05hbWU6IFZFUklGSUNBVElPTl9ESUFMT0cuY2xzLmZvb3RlciwgY2hpbGRyZW46IFtfanN4cyhGbGV4LCB7IGdhcDogVkVSSUZJQ0FUSU9OX0RJQUxPRy5nYXAuYWN0aW9ucywgY2xhc3NOYW1lOiBWRVJJRklDQVRJT05fRElBTE9HLmNscy5hY3Rpb25zLCBjaGlsZHJlbjogW3NlY29uZGFyeUFjdGlvbiAmJiAoX2pzeChCdXR0b24sIHsgY29sb3I6IChfYiA9IHNlY29uZGFyeUFjdGlvbi5jb2xvcikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogVkVSSUZJQ0FUSU9OX0RJQUxPRy5kZWZhdWx0cy5zZWNvbmRhcnlDb2xvciwgZGlzYWJsZWQ6IHNlY29uZGFyeUFjdGlvbi5kaXNhYmxlZCwgb25DbGljazogc2Vjb25kYXJ5QWN0aW9uLm9uQ2xpY2ssIGNoaWxkcmVuOiBzZWNvbmRhcnlBY3Rpb24ubGFiZWwgfSkpLCBfanN4KEJ1dHRvbiwgeyBjb2xvcjogJ3ByaW1hcnknLCBsb2FkaW5nOiBvdHAuc3VibWl0dGluZywgZGlzYWJsZWQ6ICFvdHAudmFsaWQgfHwgb3RwLnN1Ym1pdHRpbmcgfHwgZGlzYWJsZWQsIG9uQ2xpY2s6IG90cC5zdWJtaXQsIGNoaWxkcmVuOiBzdWJtaXRUZXh0IH0pXSB9KSwgcmVzZW5kICYmIF9qc3goUmVzZW5kUm93LCB7IHJlc2VuZDogcmVzZW5kIH0pXSB9KSk7XG4gICAgcmV0dXJuIChfanN4KERpYWxvZywgeyBvcGVuOiBvcGVuLCBzaXplOiBzaXplLCBtYXNrQ2xvc2FibGU6IG1hc2tDbG9zYWJsZSwgc2hvd0Nsb3NlSWNvbjogc2hvd0Nsb3NlSWNvbiwgc2hvd0JhY2tJY29uOiBzaG93QmFja0ljb24sIG9uQmFjazogb25CYWNrLCBjbGFzc05hbWU6IGpvaW5DbHMoVkVSSUZJQ0FUSU9OX0RJQUxPRy5jbHMud3JhcCwgY2xhc3NOYW1lKSwgdGl0bGU6IHRpdGxlLCBmb290ZXI6IGZvb3Rlck5vZGUsIG9uQ2FuY2VsOiBvbkNsb3NlLCBjaGlsZHJlbjogYm9keSB9KSk7XG59O1xuZXhwb3J0IGNvbnN0IFZlcmlmaWNhdGlvbkRpYWxvZyA9IG1lbW8oVmVyaWZpY2F0aW9uRGlhbG9nQmFzZSk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,35 @@
1
+ import type { ButtonColor } from "../../../components/Button";
2
+ import type { DialogSize } from "../../../components/Dialog";
3
+ interface VerificationDialogConstants {
4
+ /** BEM class names, all derived from the wrapper prefix. */
5
+ cls: {
6
+ wrap: string;
7
+ body: string;
8
+ footer: string;
9
+ actions: string;
10
+ recovery: string;
11
+ recoveryText: string;
12
+ resend: string;
13
+ };
14
+ /** BEM modifiers. */
15
+ mod: {
16
+ clickable: string;
17
+ };
18
+ /** Spacing in px, matching the 1money dialog rhythm. */
19
+ gap: {
20
+ body: number;
21
+ footer: number;
22
+ actions: number;
23
+ };
24
+ /** Fallback values when a prop is omitted. */
25
+ defaults: {
26
+ size: DialogSize;
27
+ secondaryColor: ButtonColor;
28
+ submitText: string;
29
+ resendLabel: string;
30
+ };
31
+ /** Keys that activate the resend link (an <a> with no href, like a button). */
32
+ activationKeys: readonly string[];
33
+ }
34
+ export declare const VERIFICATION_DIALOG: VerificationDialogConstants;
35
+ export {};
@@ -0,0 +1,31 @@
1
+ var PREFIX = 'om-verification-dialog';
2
+ export var VERIFICATION_DIALOG = {
3
+ cls: {
4
+ wrap: PREFIX,
5
+ body: "".concat(PREFIX, "-body"),
6
+ footer: "".concat(PREFIX, "-footer"),
7
+ actions: "".concat(PREFIX, "-actions"),
8
+ recovery: "".concat(PREFIX, "-recovery"),
9
+ recoveryText: "".concat(PREFIX, "-recovery-text"),
10
+ resend: "".concat(PREFIX, "-resend")
11
+ },
12
+ mod: {
13
+ clickable: 'is-clickable'
14
+ },
15
+ // 12px between the copy and the OTP row, 24px between the button row and the
16
+ // recovery prompt, 12px between the two footer buttons.
17
+ gap: {
18
+ body: 12,
19
+ footer: 24,
20
+ actions: 12
21
+ },
22
+ defaults: {
23
+ size: 'small',
24
+ secondaryColor: 'grey',
25
+ submitText: 'Submit',
26
+ resendLabel: 'Resend code'
27
+ },
28
+ // `Typography.Link` renders an <a> with no href, so Enter/Space activate it.
29
+ activationKeys: ['Enter', ' ']
30
+ };
31
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9jb25zdGFudHMudHMiLCJidXNpbmVzcy9EaWFsb2cvVmVyaWZpY2F0aW9uRGlhbG9nL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJQUkVGSVgiLCJWRVJJRklDQVRJT05fRElBTE9HIiwiY2xzIiwid3JhcCIsImJvZHkiLCJjb25jYXQiLCJmb290ZXIiLCJhY3Rpb25zIiwicmVjb3ZlcnkiLCJyZWNvdmVyeVRleHQiLCJyZXNlbmQiLCJtb2QiLCJjbGlja2FibGUiLCJnYXAiLCJkZWZhdWx0cyIsInNpemUiLCJzZWNvbmRhcnlDb2xvciIsInN1Ym1pdFRleHQiLCJyZXNlbmRMYWJlbCIsImFjdGl2YXRpb25LZXlzIl0sIm1hcHBpbmdzIjoiQUF3QkEsSUFBTUEsTUFBTSxHQUFHLHdCQUF3QjtBQUV2QyxPQUFPLElBQU1DLG1CQUFtQixHQUFnQztFQUM5REMsR0FBRyxFQUFFO0lBQ0hDLElBQUksRUFBRUgsTUFBTTtJQUNaSSxJQUFJLEtBQUFDLE1BQUEsQ0FBS0wsTUFBTSxVQUFPO0lBQ3RCTSxNQUFNLEtBQUFELE1BQUEsQ0FBS0wsTUFBTSxZQUFTO0lBQzFCTyxPQUFPLEtBQUFGLE1BQUEsQ0FBS0wsTUFBTSxhQUFVO0lBQzVCUSxRQUFRLEtBQUFILE1BQUEsQ0FBS0wsTUFBTSxjQUFXO0lBQzlCUyxZQUFZLEtBQUFKLE1BQUEsQ0FBS0wsTUFBTSxtQkFBZ0I7SUFDdkNVLE1BQU0sS0FBQUwsTUFBQSxDQUFLTCxNQUFNO0VDeEJqQixDRHlCRDtFQUNEVyxHQUFHLEVBQUU7SUFBRUMsU0FBUyxFQUFFO0VBQWMsQ0FBRTtFQUNsQztFQUNBO0VBQ0FDLEdBQUcsRUFBRTtJQUFFVCxJQUFJLEVBQUUsRUFBRTtJQUFFRSxNQUFNLEVBQUUsRUFBRTtJQUFFQyxPQUFPLEVBQUU7RUFBRSxDQUFFO0VBQzFDTyxRQUFRLEVBQUU7SUFBRUMsSUFBSSxFQUFFLE9BQU87SUFBRUMsY0FBYyxFQUFFLE1BQU07SUFBRUMsVUFBVSxFQUFFLFFBQVE7SUFBRUMsV0FBVyxFQUFFO0VBQWEsQ0FBRTtFQUNyRztFQUNBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRztBQ3hCL0IsQ0R5QkMiLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9jb25zdGFudHMuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImNvbnN0IFBSRUZJWCA9ICdvbS12ZXJpZmljYXRpb24tZGlhbG9nJztcbmV4cG9ydCBjb25zdCBWRVJJRklDQVRJT05fRElBTE9HID0ge1xuICAgIGNsczoge1xuICAgICAgICB3cmFwOiBQUkVGSVgsXG4gICAgICAgIGJvZHk6IGAke1BSRUZJWH0tYm9keWAsXG4gICAgICAgIGZvb3RlcjogYCR7UFJFRklYfS1mb290ZXJgLFxuICAgICAgICBhY3Rpb25zOiBgJHtQUkVGSVh9LWFjdGlvbnNgLFxuICAgICAgICByZWNvdmVyeTogYCR7UFJFRklYfS1yZWNvdmVyeWAsXG4gICAgICAgIHJlY292ZXJ5VGV4dDogYCR7UFJFRklYfS1yZWNvdmVyeS10ZXh0YCxcbiAgICAgICAgcmVzZW5kOiBgJHtQUkVGSVh9LXJlc2VuZGAsXG4gICAgfSxcbiAgICBtb2Q6IHsgY2xpY2thYmxlOiAnaXMtY2xpY2thYmxlJyB9LFxuICAgIC8vIDEycHggYmV0d2VlbiB0aGUgY29weSBhbmQgdGhlIE9UUCByb3csIDI0cHggYmV0d2VlbiB0aGUgYnV0dG9uIHJvdyBhbmQgdGhlXG4gICAgLy8gcmVjb3ZlcnkgcHJvbXB0LCAxMnB4IGJldHdlZW4gdGhlIHR3byBmb290ZXIgYnV0dG9ucy5cbiAgICBnYXA6IHsgYm9keTogMTIsIGZvb3RlcjogMjQsIGFjdGlvbnM6IDEyIH0sXG4gICAgZGVmYXVsdHM6IHsgc2l6ZTogJ3NtYWxsJywgc2Vjb25kYXJ5Q29sb3I6ICdncmV5Jywgc3VibWl0VGV4dDogJ1N1Ym1pdCcsIHJlc2VuZExhYmVsOiAnUmVzZW5kIGNvZGUnIH0sXG4gICAgLy8gYFR5cG9ncmFwaHkuTGlua2AgcmVuZGVycyBhbiA8YT4gd2l0aCBubyBocmVmLCBzbyBFbnRlci9TcGFjZSBhY3RpdmF0ZSBpdC5cbiAgICBhY3RpdmF0aW9uS2V5czogWydFbnRlcicsICcgJ10sXG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,4 @@
1
+ export { useOtpVerification } from './useOtpVerification';
2
+ export { useResendCountdown } from './useResendCountdown';
3
+ export type { OtpVerifyResult, UseOtpVerificationOptions, UseOtpVerificationResult, } from './useOtpVerification';
4
+ export type { UseResendCountdownOptions, UseResendCountdownResult, } from './useResendCountdown';
@@ -0,0 +1,3 @@
1
+ export { useOtpVerification } from './useOtpVerification';
2
+ export { useResendCountdown } from './useResendCountdown';
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvc3JjL2J1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvaW5kZXgudHMiXSwibmFtZXMiOlsidXNlT3RwVmVyaWZpY2F0aW9uIiwidXNlUmVzZW5kQ291bnRkb3duIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxrQkFBa0IsUUFBUSxzQkFBc0I7QUFDekQsU0FBU0Msa0JBQWtCLFFBQVEsc0JBQXNCIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,50 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { InputStatus } from "../../../../components/Input";
3
+ /**
4
+ * Result of an `onVerify` call: `true` for success, or an error-message string
5
+ * to display under the OTP boxes. Anything other than `true` is treated as a
6
+ * failure and clears the entered code.
7
+ */
8
+ export type OtpVerifyResult = boolean | string;
9
+ export interface UseOtpVerificationOptions {
10
+ /**
11
+ * Async verifier. Resolve `true` on success; resolve (or return) a string to
12
+ * show it as the error message. A thrown error uses its `message`, falling
13
+ * back to a generic message.
14
+ */
15
+ onVerify: (code: string) => Promise<OtpVerifyResult> | OtpVerifyResult;
16
+ /** Controlled OTP value. */
17
+ value?: string;
18
+ /** Initial OTP value when uncontrolled. */
19
+ defaultValue?: string;
20
+ /** Verify automatically once all digits are entered. @default true */
21
+ autoSubmit?: boolean;
22
+ /** Fires on every OTP change with the current value. */
23
+ onChange?: (value: string) => void;
24
+ }
25
+ export interface UseOtpVerificationResult {
26
+ /** Current OTP value. */
27
+ value: string;
28
+ /** `'error'` while an error message is showing, otherwise `'default'`. */
29
+ status: InputStatus;
30
+ /** Error message to render under the boxes, or `undefined` when clear. */
31
+ feedback: ReactNode;
32
+ /** `true` while `onVerify` is in flight. */
33
+ submitting: boolean;
34
+ /** `true` once all digits are entered. */
35
+ valid: boolean;
36
+ /** Wire to the OTP field's `onChange`. */
37
+ onChange: (value: string) => void;
38
+ /** Manually trigger verification with the current value. */
39
+ submit: () => void;
40
+ /** Clear the current error message. */
41
+ clearError: () => void;
42
+ /** Clear both the value and any error. */
43
+ reset: () => void;
44
+ }
45
+ /**
46
+ * Headless OTP verification logic shared by `VerificationDialog` and any other
47
+ * shell (popup, inline form, multi-step flow). Owns the value (controlled or
48
+ * uncontrolled), auto-submit on completion, loading state, and clear-on-error.
49
+ */
50
+ export declare const useOtpVerification: (options: UseOtpVerificationOptions) => UseOtpVerificationResult;