@mintmoney/react 0.1.0-alpha.11 → 0.1.0-alpha.14

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 (172) hide show
  1. package/README.md +19 -0
  2. package/dist/css/styles.css +34 -0
  3. package/dist/esm/api/checkouts.js +9 -9
  4. package/dist/esm/api/generated.js +544 -592
  5. package/dist/esm/api/index.js +10 -10
  6. package/dist/esm/api/payments.js +17 -21
  7. package/dist/esm/api/types.js +1 -1
  8. package/dist/esm/checkout/container.js +2 -2
  9. package/dist/esm/checkout/index.js +32 -38
  10. package/dist/esm/checkout/index.js.map +1 -1
  11. package/dist/esm/checkout/modal.js +58 -63
  12. package/dist/esm/checkout/modal.js.map +1 -1
  13. package/dist/esm/checkout/views/back.js +3 -7
  14. package/dist/esm/checkout/views/card-intent/details.js +4 -21
  15. package/dist/esm/checkout/views/crypto-intent/curreny.js +18 -43
  16. package/dist/esm/checkout/views/crypto-intent/direct-details.js +16 -60
  17. package/dist/esm/checkout/views/crypto-intent/methods.js +19 -27
  18. package/dist/esm/checkout/views/crypto-intent/methods.js.map +1 -1
  19. package/dist/esm/checkout/views/crypto-intent/processing.js +29 -39
  20. package/dist/esm/checkout/views/crypto-intent/success.js +14 -32
  21. package/dist/esm/checkout/views/crypto-intent/wallet-select.js +21 -0
  22. package/dist/esm/checkout/views/crypto-intent/wallet-select.js.map +1 -0
  23. package/dist/esm/checkout/views/initial.js +24 -29
  24. package/dist/esm/checkout/views/method-select.js +10 -24
  25. package/dist/esm/components/buttons/async-button.js +16 -0
  26. package/dist/esm/components/buttons/async-button.js.map +1 -0
  27. package/dist/esm/components/buttons/index.js +85 -21
  28. package/dist/esm/components/buttons/index.js.map +1 -1
  29. package/dist/esm/components/buttons/use-async-button.js +44 -0
  30. package/dist/esm/components/buttons/use-async-button.js.map +1 -0
  31. package/dist/esm/components/icons/alert.js +20 -0
  32. package/dist/esm/components/icons/alert.js.map +1 -0
  33. package/dist/esm/components/icons/checkMark.js +4 -16
  34. package/dist/esm/components/icons/close.js +4 -19
  35. package/dist/esm/components/icons/index.js +4 -1
  36. package/dist/esm/components/icons/index.js.map +1 -1
  37. package/dist/esm/components/icons/link.js +20 -0
  38. package/dist/esm/components/icons/link.js.map +1 -0
  39. package/dist/esm/components/icons/loading.js +20 -0
  40. package/dist/esm/components/icons/loading.js.map +1 -0
  41. package/dist/esm/components/index.js +1 -1
  42. package/dist/esm/components/inputs/index.js +32 -0
  43. package/dist/esm/components/inputs/index.js.map +1 -0
  44. package/dist/esm/components/lists/empty.js +2 -5
  45. package/dist/esm/components/lists/index.js +8 -47
  46. package/dist/esm/components/loading/index.js +6 -47
  47. package/dist/esm/components/modals/index.js +1 -1
  48. package/dist/esm/components/modals/modal-with-views.js +23 -62
  49. package/dist/esm/components/modals/modal.js +11 -67
  50. package/dist/esm/components/modals/use-modal-with-views.js +22 -25
  51. package/dist/esm/components/text/index.js +21 -21
  52. package/dist/esm/components/wallet-selector/component.js +61 -0
  53. package/dist/esm/components/wallet-selector/component.js.map +1 -0
  54. package/dist/esm/components/wallet-selector/domain.js +2 -0
  55. package/dist/esm/components/wallet-selector/domain.js.map +1 -0
  56. package/dist/esm/components/wallet-selector/helper.js +12 -0
  57. package/dist/esm/components/wallet-selector/helper.js.map +1 -0
  58. package/dist/esm/components/wallet-selector/index.js +5 -0
  59. package/dist/esm/components/wallet-selector/index.js.map +1 -0
  60. package/dist/esm/components/wallet-selector/provider.js +15 -0
  61. package/dist/esm/components/wallet-selector/provider.js.map +1 -0
  62. package/dist/esm/components/wallet-selector/schemas.js +6 -0
  63. package/dist/esm/components/wallet-selector/schemas.js.map +1 -0
  64. package/dist/esm/components/wallet-selector/store.js +79 -0
  65. package/dist/esm/components/wallet-selector/store.js.map +1 -0
  66. package/dist/esm/components/wallet-selector/util/exceptions.js +16 -0
  67. package/dist/esm/components/wallet-selector/util/exceptions.js.map +1 -0
  68. package/dist/esm/components/wallet-selector/wallets/address/addressInput.js +17 -0
  69. package/dist/esm/components/wallet-selector/wallets/address/addressInput.js.map +1 -0
  70. package/dist/esm/components/wallet-selector/wallets/address/index.js +75 -0
  71. package/dist/esm/components/wallet-selector/wallets/address/index.js.map +1 -0
  72. package/dist/esm/components/wallet-selector/wallets/index.js +5 -0
  73. package/dist/esm/components/wallet-selector/wallets/index.js.map +1 -0
  74. package/dist/esm/components/wallet-selector/wallets/recommended/index.js +64 -0
  75. package/dist/esm/components/wallet-selector/wallets/recommended/index.js.map +1 -0
  76. package/dist/esm/components/wallet-selector/wallets/wagmi/index.js +211 -0
  77. package/dist/esm/components/wallet-selector/wallets/wagmi/index.js.map +1 -0
  78. package/dist/esm/components/wallet-selector/wallets/wagmi/usdt-abi.json +671 -0
  79. package/dist/esm/config.js +5 -5
  80. package/dist/esm/context.js +10 -18
  81. package/dist/esm/index.js +1 -1
  82. package/dist/esm/state/checkout/store.js +143 -143
  83. package/dist/esm/themes/default.js +97 -55
  84. package/dist/esm/themes/default.js.map +1 -1
  85. package/dist/esm/themes/index.js +1 -1
  86. package/dist/esm/themes/types.js +1 -1
  87. package/dist/esm/utils/cn.js +1 -1
  88. package/dist/types/api/checkouts.d.ts +5 -5
  89. package/dist/types/api/generated.d.ts +835 -924
  90. package/dist/types/api/index.d.ts +1 -1
  91. package/dist/types/api/payments.d.ts +3 -10
  92. package/dist/types/api/types.d.ts +10 -14
  93. package/dist/types/checkout/container.d.ts +2 -12
  94. package/dist/types/checkout/index.d.ts +6 -10
  95. package/dist/types/checkout/index.d.ts.map +1 -1
  96. package/dist/types/checkout/modal.d.ts +5 -7
  97. package/dist/types/checkout/modal.d.ts.map +1 -1
  98. package/dist/types/checkout/views/back.d.ts +3 -5
  99. package/dist/types/checkout/views/card-intent/details.d.ts +1 -1
  100. package/dist/types/checkout/views/crypto-intent/curreny.d.ts +1 -1
  101. package/dist/types/checkout/views/crypto-intent/direct-details.d.ts +2 -4
  102. package/dist/types/checkout/views/crypto-intent/methods.d.ts +1 -1
  103. package/dist/types/checkout/views/crypto-intent/processing.d.ts +1 -1
  104. package/dist/types/checkout/views/crypto-intent/success.d.ts +3 -5
  105. package/dist/types/checkout/views/crypto-intent/wallet-select.d.ts +3 -0
  106. package/dist/types/checkout/views/crypto-intent/wallet-select.d.ts.map +1 -0
  107. package/dist/types/checkout/views/initial.d.ts +3 -5
  108. package/dist/types/checkout/views/method-select.d.ts +1 -1
  109. package/dist/types/components/buttons/async-button.d.ts +14 -0
  110. package/dist/types/components/buttons/async-button.d.ts.map +1 -0
  111. package/dist/types/components/buttons/index.d.ts +24 -17
  112. package/dist/types/components/buttons/index.d.ts.map +1 -1
  113. package/dist/types/components/buttons/use-async-button.d.ts +16 -0
  114. package/dist/types/components/buttons/use-async-button.d.ts.map +1 -0
  115. package/dist/types/components/icons/alert.d.ts +6 -0
  116. package/dist/types/components/icons/alert.d.ts.map +1 -0
  117. package/dist/types/components/icons/checkMark.d.ts +3 -5
  118. package/dist/types/components/icons/close.d.ts +3 -5
  119. package/dist/types/components/icons/index.d.ts +4 -1
  120. package/dist/types/components/icons/index.d.ts.map +1 -1
  121. package/dist/types/components/icons/link.d.ts +6 -0
  122. package/dist/types/components/icons/link.d.ts.map +1 -0
  123. package/dist/types/components/icons/loading.d.ts +6 -0
  124. package/dist/types/components/icons/loading.d.ts.map +1 -0
  125. package/dist/types/components/index.d.ts +1 -1
  126. package/dist/types/components/inputs/index.d.ts +7 -0
  127. package/dist/types/components/inputs/index.d.ts.map +1 -0
  128. package/dist/types/components/lists/empty.d.ts +3 -5
  129. package/dist/types/components/lists/index.d.ts +9 -17
  130. package/dist/types/components/loading/index.d.ts +4 -4
  131. package/dist/types/components/modals/index.d.ts +1 -1
  132. package/dist/types/components/modals/modal-with-views.d.ts +18 -23
  133. package/dist/types/components/modals/modal.d.ts +9 -17
  134. package/dist/types/components/modals/use-modal-with-views.d.ts +6 -9
  135. package/dist/types/components/text/index.d.ts +7 -17
  136. package/dist/types/components/wallet-selector/component.d.ts +13 -0
  137. package/dist/types/components/wallet-selector/component.d.ts.map +1 -0
  138. package/dist/types/components/wallet-selector/domain.d.ts +86 -0
  139. package/dist/types/components/wallet-selector/domain.d.ts.map +1 -0
  140. package/dist/types/components/wallet-selector/helper.d.ts +4 -0
  141. package/dist/types/components/wallet-selector/helper.d.ts.map +1 -0
  142. package/dist/types/components/wallet-selector/index.d.ts +7 -0
  143. package/dist/types/components/wallet-selector/index.d.ts.map +1 -0
  144. package/dist/types/components/wallet-selector/provider.d.ts +10 -0
  145. package/dist/types/components/wallet-selector/provider.d.ts.map +1 -0
  146. package/dist/types/components/wallet-selector/schemas.d.ts +4 -0
  147. package/dist/types/components/wallet-selector/schemas.d.ts.map +1 -0
  148. package/dist/types/components/wallet-selector/store.d.ts +27 -0
  149. package/dist/types/components/wallet-selector/store.d.ts.map +1 -0
  150. package/dist/types/components/wallet-selector/util/exceptions.d.ts +7 -0
  151. package/dist/types/components/wallet-selector/util/exceptions.d.ts.map +1 -0
  152. package/dist/types/components/wallet-selector/wallets/address/addressInput.d.ts +7 -0
  153. package/dist/types/components/wallet-selector/wallets/address/addressInput.d.ts.map +1 -0
  154. package/dist/types/components/wallet-selector/wallets/address/index.d.ts +7 -0
  155. package/dist/types/components/wallet-selector/wallets/address/index.d.ts.map +1 -0
  156. package/dist/types/components/wallet-selector/wallets/index.d.ts +5 -0
  157. package/dist/types/components/wallet-selector/wallets/index.d.ts.map +1 -0
  158. package/dist/types/components/wallet-selector/wallets/recommended/index.d.ts +23 -0
  159. package/dist/types/components/wallet-selector/wallets/recommended/index.d.ts.map +1 -0
  160. package/dist/types/components/wallet-selector/wallets/wagmi/index.d.ts +15 -0
  161. package/dist/types/components/wallet-selector/wallets/wagmi/index.d.ts.map +1 -0
  162. package/dist/types/config.d.ts +9 -12
  163. package/dist/types/context.d.ts +4 -7
  164. package/dist/types/index.d.ts +1 -1
  165. package/dist/types/state/checkout/store.d.ts +51 -74
  166. package/dist/types/themes/default.d.ts +1 -1
  167. package/dist/types/themes/default.d.ts.map +1 -1
  168. package/dist/types/themes/index.d.ts +1 -1
  169. package/dist/types/themes/types.d.ts +30 -25
  170. package/dist/types/themes/types.d.ts.map +1 -1
  171. package/dist/types/utils/cn.d.ts +1 -1
  172. package/package.json +6 -1
@@ -5,44 +5,34 @@ import { useMintMoneyConfig } from "../../../context.js";
5
5
  import { getPayment } from "../../../state/checkout/store.js";
6
6
  const POLL_INTERVAL = 5000;
7
7
  const CryptoIntentPaymentStatusViewContent = () => {
8
- const { goToView } = useModalWithView();
9
- const config = useMintMoneyConfig();
10
- useEffect(() => {
11
- let isMounted = true;
12
- const pollPaymentStatus = async () => {
13
- try {
14
- const updatedPayment = await getPayment();
15
- if (!updatedPayment || !isMounted) return;
16
- if (updatedPayment.status === "paid") {
17
- goToView("cryptoIntentPaymentSuccess");
18
- } else if (updatedPayment.status === "failed") {
19
- goToView("failed");
20
- }
21
- } catch (error) {
22
- console.error("Error fetching payment status:", error);
23
- }
24
- };
25
- void pollPaymentStatus();
26
- const interval = setInterval(
27
- async () => await pollPaymentStatus(),
28
- POLL_INTERVAL,
29
- );
30
- return () => {
31
- isMounted = false;
32
- clearInterval(interval);
33
- };
34
- }, []);
35
- return _jsxs("div", {
36
- className: "loading-container",
37
- children: [
38
- _jsx(Loader, { asChild: true }),
39
- _jsx(Text, {
40
- size: "base",
41
- color: config.theme.font.color.tertiary,
42
- children: "Payment pending...",
43
- }),
44
- ],
45
- });
8
+ const { goToView } = useModalWithView();
9
+ const config = useMintMoneyConfig();
10
+ useEffect(() => {
11
+ let isMounted = true;
12
+ const pollPaymentStatus = async () => {
13
+ try {
14
+ const updatedPayment = await getPayment();
15
+ if (!updatedPayment || !isMounted)
16
+ return;
17
+ if (updatedPayment.status === "paid") {
18
+ goToView("cryptoIntentPaymentSuccess");
19
+ }
20
+ else if (updatedPayment.status === "failed") {
21
+ goToView("failed");
22
+ }
23
+ }
24
+ catch (error) {
25
+ console.error("Error fetching payment status:", error);
26
+ }
27
+ };
28
+ void pollPaymentStatus();
29
+ const interval = setInterval(async () => await pollPaymentStatus(), POLL_INTERVAL);
30
+ return () => {
31
+ isMounted = false;
32
+ clearInterval(interval);
33
+ };
34
+ }, []);
35
+ return (_jsxs("div", { className: "loading-container", children: [_jsx(Loader, { asChild: true }), _jsx(Text, { size: "base", color: config.theme.font.color.tertiary, children: "Payment pending..." })] }));
46
36
  };
47
37
  export { CryptoIntentPaymentStatusViewContent };
48
- //# sourceMappingURL=processing.js.map
38
+ //# sourceMappingURL=processing.js.map
@@ -1,38 +1,20 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import {
3
- StyledButton,
4
- CheckMarkIcon,
5
- useModalWithView,
6
- } from "../../../components/index.js";
2
+ import { StyledButton, CheckMarkIcon, useModalWithView, } from "../../../components/index.js";
7
3
  import { resetCheckoutStore } from "../../../state/checkout/store.js";
8
4
  import { ModalViewContainer } from "../../container.js";
9
5
  const CryptoIntentPaymentSuccessViewContent = ({ onClose }) => {
10
- const { goToView } = useModalWithView();
11
- const handleClose = () => {
12
- resetCheckoutStore();
13
- goToView("initial");
14
- onClose(false);
15
- };
16
- return _jsxs(ModalViewContainer, {
17
- style: { justifyContent: "flex-end" },
18
- children: [
19
- _jsx("div", {
20
- style: {
21
- position: "absolute",
22
- top: "calc(50% - 24px)",
23
- left: "50%",
24
- transform: "translate(-50%, -50%)",
25
- },
26
- children: _jsx(CheckMarkIcon, { size: 64 }),
27
- }),
28
- _jsx(StyledButton, {
29
- style: { marginTop: "auto" },
30
- variant: "primary",
31
- onClick: handleClose,
32
- children: "Complete",
33
- }),
34
- ],
35
- });
6
+ const { goToView } = useModalWithView();
7
+ const handleClose = () => {
8
+ resetCheckoutStore();
9
+ goToView("initial");
10
+ onClose(false);
11
+ };
12
+ return (_jsxs(ModalViewContainer, { style: { justifyContent: "flex-end" }, children: [_jsx("div", { style: {
13
+ position: "absolute",
14
+ top: "calc(50% - 24px)",
15
+ left: "50%",
16
+ transform: "translate(-50%, -50%)",
17
+ }, children: _jsx(CheckMarkIcon, { size: 64 }) }), _jsx(StyledButton, { style: { marginTop: "auto" }, variant: "primary", onClick: handleClose, children: "Complete" })] }));
36
18
  };
37
19
  export { CryptoIntentPaymentSuccessViewContent };
38
- //# sourceMappingURL=success.js.map
20
+ //# sourceMappingURL=success.js.map
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useRef } from "react";
3
+ import { useConfig } from "wagmi";
4
+ import { useModalWithView, Text } from "../../../components/index.js";
5
+ import WalletSelector from "../../../components/wallet-selector/component.js";
6
+ import { WagmiWallets, } from "../../../components/wallet-selector/index.js";
7
+ import { useMintMoneyConfig } from "../../../context.js";
8
+ import { ModalViewContainer } from "../../container.js";
9
+ const CryptoIntentSelectWalletViewContent = () => {
10
+ const modalRef = useRef(null);
11
+ const { goToView: _view } = useModalWithView();
12
+ const config = useMintMoneyConfig();
13
+ const wagmiConfig = useConfig();
14
+ const providers = useMemo(() => [WagmiWallets(wagmiConfig)], [wagmiConfig]);
15
+ const handleConfirm = async (wallet) => {
16
+ await wallet.connect();
17
+ };
18
+ return (_jsxs(ModalViewContainer, { ref: modalRef, children: [_jsx(Text, { size: "base", weight: "normal", color: config.theme.font.color.secondary, children: "Select a Wallet provider" }), _jsx(WalletSelector, { className: "mm-selectable-list__button-group", onWalletSelect: handleConfirm, walletProviders: providers })] }));
19
+ };
20
+ export { CryptoIntentSelectWalletViewContent };
21
+ //# sourceMappingURL=wallet-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-select.js","sourceRoot":"","sources":["../../../../../src/checkout/views/crypto-intent/wallet-select.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,cAAc,MAAM,kDAAkD,CAAC;AAC9E,OAAO,EACL,YAAY,GAEb,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,mCAAmC,GAAG,GAAG,EAAE;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC9C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,SAAS,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5E,MAAM,aAAa,GAAG,KAAK,EAAE,MAAuB,EAAE,EAAE;QACtD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,kBAAkB,IAAC,GAAG,EAAE,QAAQ,aAC/B,KAAC,IAAI,IACH,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,QAAQ,EACf,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,yCAGnC,EACP,KAAC,cAAc,IACb,SAAS,EAAC,kCAAkC,EAC5C,cAAc,EAAE,aAAa,EAC7B,eAAe,EAAE,SAAS,GAC1B,IACiB,CACtB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,mCAAmC,EAAE,CAAC"}
@@ -1,35 +1,30 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from "react";
3
3
  import { Loader, useModalWithView } from "../../components/index.js";
4
- import {
5
- ACTIONS,
6
- initialiseStore,
7
- useCheckoutStore,
8
- } from "../../state/checkout/store.js";
4
+ import { ACTIONS, initialiseStore, useCheckoutStore, } from "../../state/checkout/store.js";
9
5
  const InitialiseCheckoutViewContent = (props) => {
10
- const { goToView } = useModalWithView();
11
- const { error, checkout, payment } = useCheckoutStore();
12
- const [loading, setLoading] = useState(true);
13
- useEffect(() => {
14
- const setup = async () => {
15
- await initialiseStore(props.payment);
16
- };
17
- void setup();
18
- const timeout = setTimeout(() => setLoading(false), 1500);
19
- return () => clearTimeout(timeout);
20
- }, [props.payment]);
21
- useEffect(() => {
22
- const hasErrors =
23
- error[ACTIONS.GET_CHECKOUT_CONFIG] || error[ACTIONS.CREATE_PAYMENT];
24
- if (hasErrors) {
25
- goToView("failed", { reason: "get_checkout" });
26
- return;
27
- }
28
- if (checkout && payment && !loading) {
29
- goToView("methods");
30
- }
31
- }, [error, checkout, payment, loading]);
32
- return loading ? _jsx(Loader, {}) : null;
6
+ const { goToView } = useModalWithView();
7
+ const { error, checkout, payment } = useCheckoutStore();
8
+ const [loading, setLoading] = useState(true);
9
+ useEffect(() => {
10
+ const setup = async () => {
11
+ await initialiseStore(props.payment);
12
+ };
13
+ void setup();
14
+ const timeout = setTimeout(() => setLoading(false), 1500);
15
+ return () => clearTimeout(timeout);
16
+ }, [props.payment]);
17
+ useEffect(() => {
18
+ const hasErrors = error[ACTIONS.GET_CHECKOUT_CONFIG] || error[ACTIONS.CREATE_PAYMENT];
19
+ if (hasErrors) {
20
+ goToView("failed", { reason: "get_checkout" });
21
+ return;
22
+ }
23
+ if (checkout && payment && !loading) {
24
+ goToView("methods");
25
+ }
26
+ }, [error, checkout, payment, loading]);
27
+ return loading ? _jsx(Loader, {}) : null;
33
28
  };
34
29
  export { InitialiseCheckoutViewContent };
35
- //# sourceMappingURL=initial.js.map
30
+ //# sourceMappingURL=initial.js.map
@@ -1,31 +1,17 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useRef } from "react";
3
3
  import { useModalWithView, SelectableList } from "../../components/index.js";
4
- import {
5
- useCheckoutStore,
6
- ACTIONS,
7
- setCheckoutMethod,
8
- } from "../../state/checkout/store.js";
4
+ import { useCheckoutStore, ACTIONS, setCheckoutMethod, } from "../../state/checkout/store.js";
9
5
  import { ModalViewContainer } from "../container.js";
10
6
  const MethodSelectViewContent = () => {
11
- const { goToView } = useModalWithView();
12
- const modalRef = useRef(null);
13
- const { methods, loading } = useCheckoutStore();
14
- const handleSelectMethod = (method) => {
15
- setCheckoutMethod(method);
16
- goToView(method.intentName);
17
- };
18
- return _jsx(ModalViewContainer, {
19
- ref: modalRef,
20
- children: _jsx(SelectableList, {
21
- title: "Select payment method",
22
- items: methods || [],
23
- getKey: (method) => method.name,
24
- getLabel: (method) => method.name,
25
- onSelect: handleSelectMethod,
26
- loading: loading[ACTIONS.GET_CHECKOUT_CONFIG],
27
- }),
28
- });
7
+ const { goToView } = useModalWithView();
8
+ const modalRef = useRef(null);
9
+ const { methods, loading } = useCheckoutStore();
10
+ const handleSelectMethod = (method) => {
11
+ setCheckoutMethod(method);
12
+ goToView(method.intentName);
13
+ };
14
+ return (_jsx(ModalViewContainer, { ref: modalRef, children: _jsx(SelectableList, { title: "Select payment method", items: methods || [], getKey: (method) => method.name, getLabel: (method) => method.name, onSelect: handleSelectMethod, loading: loading[ACTIONS.GET_CHECKOUT_CONFIG] }) }));
29
15
  };
30
16
  export { MethodSelectViewContent };
31
- //# sourceMappingURL=method-select.js.map
17
+ //# sourceMappingURL=method-select.js.map
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button } from "./index.js";
3
+ import { useAsyncButton } from "./use-async-button.js";
4
+ export const AsyncButton = ({ onAsyncClick, onSuccess, successDuration, successContent, loadingContent, errorContent, successMessage, ...buttonProps }) => {
5
+ const { loading, success, error, handleAsyncClick, handleSuccessComplete, handleErrorComplete, } = useAsyncButton();
6
+ const handleClick = async (e) => {
7
+ e.preventDefault();
8
+ await handleAsyncClick(onAsyncClick);
9
+ };
10
+ const onSuccessComplete = () => {
11
+ handleSuccessComplete();
12
+ onSuccess?.();
13
+ };
14
+ return (_jsx(Button, { ...buttonProps, loading: loading, success: success, error: error, onClick: handleClick, onSuccessComplete: onSuccessComplete, onErrorComplete: handleErrorComplete, successDuration: successDuration, successMessage: successMessage, loadingContent: loadingContent, successContent: successContent, errorContent: errorContent }));
15
+ };
16
+ //# sourceMappingURL=async-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-button.js","sourceRoot":"","sources":["../../../../src/components/buttons/async-button.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAe,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAavD,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACtD,YAAY,EACZ,SAAS,EACT,eAAe,EACf,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,GAAG,WAAW,EACf,EAAE,EAAE;IACH,MAAM,EACJ,OAAO,EACP,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,GACpB,GAAG,cAAc,EAAE,CAAC;IAErB,MAAM,WAAW,GAAG,KAAK,EAAE,CAAsC,EAAE,EAAE;QACnE,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC7B,qBAAqB,EAAE,CAAC;QACxB,SAAS,EAAE,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,MAAM,OACD,WAAW,EACf,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,mBAAmB,EACpC,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -1,17 +1,17 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState, forwardRef } from "react";
1
3
  import { styled } from "styled-components";
2
- const StyledButton = styled.button`
4
+ import { LoaderCircleIcon, CheckMarkIcon, AlertCircleIcon, } from "../icons/index.js";
5
+ const StyledButton = styled.button `
3
6
  width: 100%;
4
7
  height: 48px;
5
8
  padding: 10px 16px;
6
9
  border-radius: 48px;
7
10
  font-family: var(--mm-font-family);
8
11
  border: 2px solid
9
- ${({ theme, variant = "primary" }) =>
10
- theme?.btn?.[variant]?.default.borderColor};
11
- background-color: ${({ theme, variant = "primary" }) =>
12
- theme?.btn?.[variant]?.default.backgroundColor};
13
- color: ${({ theme, variant = "primary" }) =>
14
- theme?.btn?.[variant]?.default.textColor};
12
+ ${({ theme, variant = "primary" }) => theme?.btn?.[variant]?.default.borderColor};
13
+ background-color: ${({ theme, variant = "primary" }) => theme?.btn?.[variant]?.default.backgroundColor};
14
+ color: ${({ theme, variant = "primary" }) => theme?.btn?.[variant]?.default.textColor};
15
15
  transition: all 0.3s ease-in-out;
16
16
  font-size: 16px;
17
17
  font-weight: 700;
@@ -24,23 +24,87 @@ const StyledButton = styled.button`
24
24
  color 0.3s ease-in-out;
25
25
 
26
26
  &:hover {
27
- background-color: ${({ theme, variant = "primary" }) =>
28
- theme?.btn?.[variant]?.hover.backgroundColor};
29
- border-color: ${({ theme, variant = "primary" }) =>
30
- theme?.btn?.[variant]?.hover.borderColor};
31
- color: ${({ theme, variant = "primary" }) =>
32
- theme?.btn?.[variant]?.hover.textColor};
27
+ background-color: ${({ theme, variant = "primary" }) => theme?.btn?.[variant]?.hover.backgroundColor};
28
+ border-color: ${({ theme, variant = "primary" }) => theme?.btn?.[variant]?.hover.borderColor};
29
+ color: ${({ theme, variant = "primary" }) => theme?.btn?.[variant]?.hover.textColor};
33
30
  }
34
31
 
35
32
  &:disabled {
36
- background-color: ${({ theme, variant = "primary" }) =>
37
- theme?.btn?.[variant]?.disabled.backgroundColor};
38
- border-color: ${({ theme, variant = "primary" }) =>
39
- theme?.btn?.[variant]?.disabled.borderColor};
40
- color: ${({ theme, variant = "primary" }) =>
41
- theme?.btn?.[variant]?.disabled.textColor};
33
+ background-color: ${({ theme, variant = "primary" }) => theme?.btn?.[variant]?.disabled.backgroundColor};
34
+ border-color: ${({ theme, variant = "primary" }) => theme?.btn?.[variant]?.disabled.borderColor};
35
+ color: ${({ theme, variant = "primary" }) => theme?.btn?.[variant]?.disabled.textColor};
42
36
  cursor: not-allowed;
43
37
  }
38
+
39
+ /* Success and Error States */
40
+ ${({ status, theme }) => status === "success" &&
41
+ `
42
+ background-color: ${theme?.btn?.success?.default.backgroundColor};
43
+ color: ${theme?.btn.success.default.textColor};
44
+ border-color: ${theme?.btn?.success?.default.backgroundColor};
45
+ opacity: 1;
46
+ &:disabled {
47
+ background-color: ${theme?.btn?.success?.disabled.backgroundColor};
48
+ border-color: ${theme?.btn?.success?.disabled.borderColor};
49
+ color: ${theme?.btn.success.disabled.textColor};
50
+ opacity: 1;
51
+ cursor: default;
52
+ }
53
+ `}
54
+
55
+ ${({ status, theme }) => status === "error" &&
56
+ `
57
+ background-color: ${theme?.btn?.error?.default.backgroundColor};
58
+ color: ${theme?.btn.error.default.textColor};
59
+ border-color: ${theme?.btn?.error?.default.backgroundColor};
60
+ opacity: 1;
61
+ &:disabled {
62
+ background-color: ${theme?.btn?.error?.disabled.backgroundColor};
63
+ border-color: ${theme?.btn?.error?.disabled.borderColor};
64
+ color: ${theme?.btn.error.disabled.textColor};
65
+ opacity: 1;
66
+ cursor: default;
67
+ }
68
+ `}
44
69
  `;
45
- export { StyledButton };
46
- //# sourceMappingURL=index.js.map
70
+ const Button = forwardRef(({ loading, loadingContent, success, successContent, successDuration = 1000, onSuccessComplete, error, errorContent, errorString, errorDuration = 3000, onErrorComplete, successMessage, children, ...props }, ref) => {
71
+ const [status, setStatus] = useState("idle");
72
+ useEffect(() => {
73
+ if (loading) {
74
+ setStatus("loading");
75
+ return undefined;
76
+ }
77
+ else if (success) {
78
+ setStatus("success");
79
+ const timer = setTimeout(() => {
80
+ setStatus("idle");
81
+ onSuccessComplete?.();
82
+ }, successDuration);
83
+ return () => clearTimeout(timer);
84
+ }
85
+ else if (error) {
86
+ setStatus("error");
87
+ const timer = setTimeout(() => {
88
+ setStatus("idle");
89
+ onErrorComplete?.();
90
+ }, errorDuration);
91
+ return () => clearTimeout(timer);
92
+ }
93
+ else {
94
+ setStatus("idle");
95
+ return undefined;
96
+ }
97
+ }, [
98
+ loading,
99
+ success,
100
+ error,
101
+ successDuration,
102
+ errorDuration,
103
+ onSuccessComplete,
104
+ onErrorComplete,
105
+ ]);
106
+ return (_jsx(StyledButton, { ref: ref, ...props, status: status, disabled: props.disabled || status !== "idle", children: status === "loading" ? (_jsx("div", { className: "loading-animation", children: loadingContent || _jsx(LoaderCircleIcon, {}) })) : status === "success" ? (_jsx("div", { className: "success-animation", children: successContent || (_jsxs(_Fragment, { children: [_jsx(CheckMarkIcon, {}), successMessage || "Success!"] })) })) : status === "error" ? (_jsx("div", { className: "error-animation", children: errorContent || (_jsxs(_Fragment, { children: [_jsx(AlertCircleIcon, {}), errorString || "Error"] })) })) : (_jsx(_Fragment, { children: children })) }));
107
+ });
108
+ Button.displayName = "Button";
109
+ export { StyledButton, Button };
110
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/buttons/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAS3C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAmB;;;;;;;MAO/C,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,CACnC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW;sBAC1B,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,CACrD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe;WACvC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,CAC1C,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS;;;;;;;;;;;;;wBAapB,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,CACrD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,eAAe;oBAC9B,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,CACjD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW;aACjC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,CAC1C,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS;;;;wBAIpB,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,CACrD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,eAAe;oBACjC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,CACjD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,WAAW;aACpC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,CAC1C,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,SAAS;;;CAG9C,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/buttons/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { useState, useCallback } from "react";
2
+ /**
3
+ * Hook to manage async button states for loading, success, and error
4
+ * @returns State and handlers for async button operations
5
+ */
6
+ export const useAsyncButton = () => {
7
+ const [loading, setLoading] = useState(false);
8
+ const [success, setSuccess] = useState(false);
9
+ const [error, setError] = useState(false);
10
+ const handleAsyncClick = useCallback(async (asyncFunction) => {
11
+ setLoading(true);
12
+ try {
13
+ await asyncFunction();
14
+ setLoading(false);
15
+ setSuccess(true);
16
+ }
17
+ catch (err) {
18
+ console.error(err);
19
+ setLoading(false);
20
+ setError(true);
21
+ }
22
+ }, []);
23
+ const handleSuccessComplete = useCallback(() => {
24
+ setSuccess(false);
25
+ }, []);
26
+ const handleErrorComplete = useCallback(() => {
27
+ setError(false);
28
+ }, []);
29
+ const reset = useCallback(() => {
30
+ setLoading(false);
31
+ setSuccess(false);
32
+ setError(false);
33
+ }, []);
34
+ return {
35
+ loading,
36
+ success,
37
+ error,
38
+ handleAsyncClick,
39
+ handleSuccessComplete,
40
+ handleErrorComplete,
41
+ reset,
42
+ };
43
+ };
44
+ //# sourceMappingURL=use-async-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-async-button.js","sourceRoot":"","sources":["../../../../src/components/buttons/use-async-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAY9C;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAqB,EAAE;IACnD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,aAAkC,EAAE,EAAE;QAC3C,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,aAAa,EAAE,CAAC;YACtB,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7C,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,OAAO;QACP,OAAO;QACP,KAAK;QACL,gBAAgB;QAChB,qBAAqB;QACrB,mBAAmB;QACnB,KAAK;KACN,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { styled } from "styled-components";
3
+ import { useMintMoneyConfig } from "../../context.js";
4
+ const StyledSvg = styled.svg `
5
+ stroke: ${({ color }) => color};
6
+ width: ${({ width }) => width}px;
7
+ height: ${({ height }) => height}px;
8
+ cursor: pointer;
9
+ transition: stroke 0.2s ease-in-out;
10
+
11
+ &:hover {
12
+ stroke: ${({ color }) => color}CC;
13
+ }
14
+ `;
15
+ const AlertCircleIcon = ({ size = 20 }) => {
16
+ const { theme } = useMintMoneyConfig();
17
+ return (_jsxs(StyledSvg, { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: theme.icon.alert.strokeColor, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", color: theme.icon.alert.color, children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }), _jsx("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })] }));
18
+ };
19
+ export { AlertCircleIcon };
20
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../../src/components/icons/alert.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAmB;YACnC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;WACrB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;YACnB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM;;;;;cAKpB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;;CAEjC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAwB,EAAE,EAAE;IAC9D,MAAM,EAAE,KAAK,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAEvC,OAAO,CACL,MAAC,SAAS,IACR,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EACpC,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,aAE7B,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,GAAG,EACjC,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,EACvC,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,OAAO,EAAC,EAAE,EAAC,IAAI,GAAG,IACjC,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { styled } from "styled-components";
3
3
  import { useMintMoneyConfig } from "../../context.js";
4
- const StyledSvg = styled.svg`
4
+ const StyledSvg = styled.svg `
5
5
  stroke: ${({ color }) => color};
6
6
  width: ${({ width }) => width}px;
7
7
  height: ${({ height }) => height}px;
@@ -13,20 +13,8 @@ const StyledSvg = styled.svg`
13
13
  }
14
14
  `;
15
15
  const CheckMarkIcon = ({ size = 20 }) => {
16
- const { theme } = useMintMoneyConfig();
17
- return _jsx(StyledSvg, {
18
- xmlns: "http://www.w3.org/2000/svg",
19
- width: size,
20
- height: size,
21
- viewBox: "0 0 24 24",
22
- fill: "none",
23
- stroke: theme.icon.check.strokeColor,
24
- strokeWidth: "2",
25
- strokeLinecap: "round",
26
- strokeLinejoin: "round",
27
- color: theme.icon.check.color,
28
- children: _jsx("polyline", { points: "20 6 9 17 4 12" }),
29
- });
16
+ const { theme } = useMintMoneyConfig();
17
+ return (_jsx(StyledSvg, { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: theme.icon.check.strokeColor, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", color: theme.icon.check.color, children: _jsx("polyline", { points: "20 6 9 17 4 12" }) }));
30
18
  };
31
19
  export { CheckMarkIcon };
32
- //# sourceMappingURL=checkMark.js.map
20
+ //# sourceMappingURL=checkMark.js.map
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { styled } from "styled-components";
3
3
  import { useMintMoneyConfig } from "../../context.js";
4
- const StyledSvg = styled.svg`
4
+ const StyledSvg = styled.svg `
5
5
  stroke: ${({ color }) => color};
6
6
  width: ${({ width }) => width}px;
7
7
  height: ${({ height }) => height}px;
@@ -13,23 +13,8 @@ const StyledSvg = styled.svg`
13
13
  }
14
14
  `;
15
15
  const CloseIcon = ({ size = 20 }) => {
16
- const { theme } = useMintMoneyConfig();
17
- return _jsxs(StyledSvg, {
18
- xmlns: "http://www.w3.org/2000/svg",
19
- width: size,
20
- height: size,
21
- viewBox: "0 0 24 24",
22
- fill: "none",
23
- stroke: theme.icon.close.strokeColor,
24
- strokeWidth: "2",
25
- strokeLinecap: "round",
26
- strokeLinejoin: "round",
27
- color: theme.icon.close.color,
28
- children: [
29
- _jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
30
- _jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" }),
31
- ],
32
- });
16
+ const { theme } = useMintMoneyConfig();
17
+ return (_jsxs(StyledSvg, { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: theme.icon.close.strokeColor, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", color: theme.icon.close.color, children: [_jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), _jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] }));
33
18
  };
34
19
  export { CloseIcon };
35
- //# sourceMappingURL=close.js.map
20
+ //# sourceMappingURL=close.js.map
@@ -1,3 +1,6 @@
1
1
  export * from "./close.js";
2
2
  export * from "./checkMark.js";
3
- //# sourceMappingURL=index.js.map
3
+ export * from "./alert.js";
4
+ export * from "./link.js";
5
+ export * from "./loading.js";
6
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/icons/index.tsx"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/icons/index.tsx"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { styled } from "styled-components";
3
+ import { useMintMoneyConfig } from "../../context.js";
4
+ const StyledSvg = styled.svg `
5
+ stroke: ${({ color }) => color};
6
+ width: ${({ width }) => width}px;
7
+ height: ${({ height }) => height}px;
8
+ cursor: pointer;
9
+ transition: stroke 0.2s ease-in-out;
10
+
11
+ &:hover {
12
+ stroke: ${({ color }) => `${color}CC`}; /* Slight transparency on hover */
13
+ }
14
+ `;
15
+ const LinkIcon = ({ size = 24 }) => {
16
+ const { theme } = useMintMoneyConfig();
17
+ return (_jsxs(StyledSvg, { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: theme.icon.link.strokeColor, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", color: theme.icon.link.color, children: [_jsx("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" }), _jsx("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" })] }));
18
+ };
19
+ export { LinkIcon };
20
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../../src/components/icons/link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAkD;YAClE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;WACrB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;YACnB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM;;;;;cAKpB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI;;CAExC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAiB,EAAE,EAAE;IAChD,MAAM,EAAE,KAAK,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAEvC,OAAO,CACL,MAAC,SAAS,IACR,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EACnC,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,aAE5B,eAAM,CAAC,EAAC,6DAA6D,GAAG,EACxE,eAAM,CAAC,EAAC,8DAA8D,GAAG,IAC/D,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { styled } from "styled-components";
3
+ import { useMintMoneyConfig } from "../../context.js";
4
+ const StyledSvg = styled.svg `
5
+ stroke: ${({ color }) => color};
6
+ width: ${({ width }) => width}px;
7
+ height: ${({ height }) => height}px;
8
+ cursor: pointer;
9
+ transition: stroke 0.2s ease-in-out;
10
+
11
+ &:hover {
12
+ stroke: ${({ color }) => color}CC;
13
+ }
14
+ `;
15
+ const LoaderCircleIcon = ({ size = 20 }) => {
16
+ const { theme } = useMintMoneyConfig();
17
+ return (_jsx(StyledSvg, { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: theme.icon.loader.strokeColor, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", color: theme.icon.loader.color, children: _jsx("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" }) }));
18
+ };
19
+ export { LoaderCircleIcon };
20
+ //# sourceMappingURL=loading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading.js","sourceRoot":"","sources":["../../../../src/components/icons/loading.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAmB;YACnC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;WACrB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;YACnB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM;;;;;cAKpB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;;CAEjC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAyB,EAAE,EAAE;IAChE,MAAM,EAAE,KAAK,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAEvC,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EACrC,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,YAE9B,eAAM,CAAC,EAAC,6BAA6B,GAAG,GAC9B,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}