@antseed/payments 0.1.67 → 0.1.69

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 (95) hide show
  1. package/dist/card-link.d.ts +29 -4
  2. package/dist/card-link.js +46 -6
  3. package/dist/card-link.js.map +1 -1
  4. package/dist/card-link.test.js +76 -6
  5. package/dist/card-link.test.js.map +1 -1
  6. package/dist/web/assets/{add-BH1B9awd.js → add-Cqgwg0NH.js} +1 -1
  7. package/dist/web/assets/{all-wallets-_qCsGG_7.js → all-wallets-XC-sVZ4b.js} +1 -1
  8. package/dist/web/assets/{app-store-CSHeWZ3A.js → app-store-Cu-mqs1g.js} +1 -1
  9. package/dist/web/assets/{apple-CCLilR66.js → apple-fWKogLWV.js} +1 -1
  10. package/dist/web/assets/{arrow-bottom-D0-7ZiKn.js → arrow-bottom-6nDWwqH2.js} +1 -1
  11. package/dist/web/assets/{arrow-bottom-circle-CFPJIeWc.js → arrow-bottom-circle-CgqymAGu.js} +1 -1
  12. package/dist/web/assets/{arrow-left-DRn_13kc.js → arrow-left-UANvHrPR.js} +1 -1
  13. package/dist/web/assets/{arrow-right-BxjR0Fdz.js → arrow-right-BXI4yzSa.js} +1 -1
  14. package/dist/web/assets/{arrow-top-B1R2CCVC.js → arrow-top-8iS9zJ4w.js} +1 -1
  15. package/dist/web/assets/{bank-DmFNa7fg.js → bank-h2BGbp7C.js} +1 -1
  16. package/dist/web/assets/{basic-6ijgoaZK.js → basic-BNEidV3B.js} +1 -1
  17. package/dist/web/assets/{browser-1OdBkPhc.js → browser-DVdhjbjS.js} +1 -1
  18. package/dist/web/assets/{card-wfMgFFlG.js → card-V33dssim.js} +1 -1
  19. package/dist/web/assets/{ccip-DmsKDk5g.js → ccip-Cm4aen93.js} +1 -1
  20. package/dist/web/assets/{checkmark-BqOb1kkD.js → checkmark-DaE92zr-.js} +1 -1
  21. package/dist/web/assets/{checkmark-bold-CAb3w3RB.js → checkmark-bold-BePHaS83.js} +1 -1
  22. package/dist/web/assets/{chevron-bottom-D6DCr_2U.js → chevron-bottom-CKUHxeXg.js} +1 -1
  23. package/dist/web/assets/{chevron-left-caamkB4m.js → chevron-left-BXLY6o0z.js} +1 -1
  24. package/dist/web/assets/{chevron-right-DXelL4W3.js → chevron-right-D6gC_lt-.js} +1 -1
  25. package/dist/web/assets/{chevron-top-Dc-JhIzj.js → chevron-top-Ds3ZuG4D.js} +1 -1
  26. package/dist/web/assets/{chrome-store-DR0k3JNl.js → chrome-store-GyEZYbUw.js} +1 -1
  27. package/dist/web/assets/{clock-CPjOiNbo.js → clock-DLWQcuSQ.js} +1 -1
  28. package/dist/web/assets/{close-4izpZwFK.js → close-BIsuR8NL.js} +1 -1
  29. package/dist/web/assets/{coinPlaceholder-CkDN0oDk.js → coinPlaceholder-NGqJM81N.js} +1 -1
  30. package/dist/web/assets/{compass-Gpl2RFCE.js → compass-s_tHwstj.js} +1 -1
  31. package/dist/web/assets/{copy-DUb4XGrQ.js → copy-BujN6zsZ.js} +1 -1
  32. package/dist/web/assets/{core-BKieXrcZ.js → core-B0QLjkxc.js} +3 -3
  33. package/dist/web/assets/{cursor-Dy03Wa8Z.js → cursor-C-hQar4J.js} +1 -1
  34. package/dist/web/assets/{cursor-transparent-1LQJUNws.js → cursor-transparent-o0YSxHsE.js} +1 -1
  35. package/dist/web/assets/{desktop-B36kSY-u.js → desktop-dGUGd7HW.js} +1 -1
  36. package/dist/web/assets/{disconnect-D_zTMBJY.js → disconnect-B2DOtGgq.js} +1 -1
  37. package/dist/web/assets/{discord-B71kN4a1.js → discord-Hgf1SDTL.js} +1 -1
  38. package/dist/web/assets/{etherscan-DtvDcBvB.js → etherscan-Cm2YdyQ0.js} +1 -1
  39. package/dist/web/assets/{exclamation-triangle-DHW_ckao.js → exclamation-triangle-HMjp8ojY.js} +1 -1
  40. package/dist/web/assets/{extension-DSt0r6TA.js → extension-TbXEX7V2.js} +1 -1
  41. package/dist/web/assets/{external-link-D23iici8.js → external-link-B2GFgz-U.js} +1 -1
  42. package/dist/web/assets/{facebook-BCgWsphY.js → facebook-DDIAONTO.js} +1 -1
  43. package/dist/web/assets/{farcaster-CPbNdR9n.js → farcaster-DF8-2Fv7.js} +1 -1
  44. package/dist/web/assets/{filters-yx-fOS2Z.js → filters-lu5cNtQs.js} +1 -1
  45. package/dist/web/assets/{github-DzVFsDt0.js → github-DygRgRcO.js} +1 -1
  46. package/dist/web/assets/{google-C22h6w2X.js → google-wYfxnDLL.js} +1 -1
  47. package/dist/web/assets/{help-circle-XPrHFzCp.js → help-circle-CvqFugBA.js} +1 -1
  48. package/dist/web/assets/{id-CAbpbNXN.js → id-BCb6Q-5X.js} +1 -1
  49. package/dist/web/assets/{image-CAbHz6Kb.js → image-DtG85Ccp.js} +1 -1
  50. package/dist/web/assets/{index-B0ZMzNt2.js → index-BX_g9ekT.js} +3 -3
  51. package/dist/web/assets/{index-NIrQDrBv.js → index-BnwdCeOo.js} +3 -3
  52. package/dist/web/assets/{index-BmXDjBlF.js → index-Bw5sB5Du.js} +1 -1
  53. package/dist/web/assets/{index-B6MdJmon.js → index-Bwu6PhbF.js} +1 -1
  54. package/dist/web/assets/{index-DxSd4wAG.js → index-DkMu-vXR.js} +1 -1
  55. package/dist/web/assets/index-xjMrU3Vb.css +1 -0
  56. package/dist/web/assets/{index.es-PNSreUip.js → index.es-oIJXoV2Y.js} +4 -4
  57. package/dist/web/assets/{info-B3ihq4Hg.js → info-B0QeyAW3.js} +1 -1
  58. package/dist/web/assets/{info-circle-Bp0ShBNM.js → info-circle-BfAw9xWu.js} +1 -1
  59. package/dist/web/assets/{lightbulb-DtaU6Y6W.js → lightbulb-BnO5R8Dj.js} +1 -1
  60. package/dist/web/assets/{mail-C6MVCJLL.js → mail-CiyXyLMn.js} +1 -1
  61. package/dist/web/assets/{metamask-sdk-OhaOLAOz.js → metamask-sdk-BbEnCSW3.js} +1 -1
  62. package/dist/web/assets/{mobile-DQiiYLPv.js → mobile-iK-DqJHm.js} +1 -1
  63. package/dist/web/assets/{more-BvW5J2p2.js → more-DJW3vEqZ.js} +1 -1
  64. package/dist/web/assets/{network-placeholder-CMNIjtjb.js → network-placeholder-CcV-pUQy.js} +1 -1
  65. package/dist/web/assets/{nftPlaceholder-CQp0_R7b.js → nftPlaceholder-CVuFeV9c.js} +1 -1
  66. package/dist/web/assets/{off-75zyyvtQ.js → off-hLBSvzk5.js} +1 -1
  67. package/dist/web/assets/{play-store-B0D2Ns-8.js → play-store-DLdGCHoA.js} +1 -1
  68. package/dist/web/assets/{plus-Cuelf191.js → plus-CXPJei1E.js} +1 -1
  69. package/dist/web/assets/{qr-code-DfBYh374.js → qr-code-Cw-Tblgb.js} +1 -1
  70. package/dist/web/assets/{recycle-horizontal-BE5c8JHw.js → recycle-horizontal-B3WLP5ib.js} +1 -1
  71. package/dist/web/assets/{refresh-D6wU-zn0.js → refresh-CZXYvY0G.js} +1 -1
  72. package/dist/web/assets/{reown-logo-CT3EzHXg.js → reown-logo-v4lIlaIU.js} +1 -1
  73. package/dist/web/assets/{search-CiHOJIGp.js → search-B8wBIlHq.js} +1 -1
  74. package/dist/web/assets/{secp256k1-DvtKSY4S.js → secp256k1-C55hiqqJ.js} +1 -1
  75. package/dist/web/assets/{send-BeWYoxiX.js → send-tTEW7MQf.js} +1 -1
  76. package/dist/web/assets/{swapHorizontal-BAyuyg8R.js → swapHorizontal-Chv-kag4.js} +1 -1
  77. package/dist/web/assets/{swapHorizontalBold-DMrS7UJv.js → swapHorizontalBold-CJPZxHC1.js} +1 -1
  78. package/dist/web/assets/{swapHorizontalMedium-DlBgIjGf.js → swapHorizontalMedium-BmSVK3-N.js} +1 -1
  79. package/dist/web/assets/{swapHorizontalRoundedBold-BfkNJ2ny.js → swapHorizontalRoundedBold-BZN2ZIF5.js} +1 -1
  80. package/dist/web/assets/{swapVertical-CBIcUZrs.js → swapVertical-DZZP5pQs.js} +1 -1
  81. package/dist/web/assets/{telegram-Cy2_xt_O.js → telegram-wrgFHHNY.js} +1 -1
  82. package/dist/web/assets/{three-dots-vB7ta4_-.js → three-dots-qMHX7BVe.js} +1 -1
  83. package/dist/web/assets/{twitch-7Y1eQA1h.js → twitch-BnZwlCjN.js} +1 -1
  84. package/dist/web/assets/{twitterIcon-CKgNo9ld.js → twitterIcon-BKyMf_HJ.js} +1 -1
  85. package/dist/web/assets/{verify-jlPSjsG4.js → verify-B6lcnnCt.js} +1 -1
  86. package/dist/web/assets/{verify-filled-BDPn51ow.js → verify-filled-BIp9ny0a.js} +1 -1
  87. package/dist/web/assets/{w3m-modal-EYPy50rE.js → w3m-modal-Cl5Mmkf0.js} +1 -1
  88. package/dist/web/assets/{wallet-w8EJv7QT.js → wallet-BoPYycb-.js} +1 -1
  89. package/dist/web/assets/{wallet-placeholder-CdvIS4fz.js → wallet-placeholder-B8_X_Xvx.js} +1 -1
  90. package/dist/web/assets/{walletconnect-YbsJ1wsK.js → walletconnect-DFBbrgBZ.js} +1 -1
  91. package/dist/web/assets/{warning-circle-CQxns8mJ.js → warning-circle-DzoI0B6d.js} +1 -1
  92. package/dist/web/assets/{x-B_di2Xiy.js → x-DyrvYi7T.js} +1 -1
  93. package/dist/web/index.html +2 -2
  94. package/package.json +4 -4
  95. package/dist/web/assets/index-DIXB2x06.css +0 -1
@@ -12,12 +12,35 @@
12
12
  export type AntseedPayIntegration = 'crossmint' | 'stripe';
13
13
  export declare const ANTSEED_PAY_INTEGRATIONS: readonly AntseedPayIntegration[];
14
14
  export declare const DEFAULT_ANTSEED_PAY_URL = "https://antseed-pay.com/";
15
+ /**
16
+ * The pay page's link rules (its `parseLink`): `amount` is required, whole
17
+ * dollars or up to two decimals, and between $1 and $200. A link outside
18
+ * these bounds — including one with no amount at all — is refused as
19
+ * "invalid or was altered" before the signature is even checked.
20
+ */
21
+ export declare const ANTSEED_PAY_MIN_USD = 1;
22
+ export declare const ANTSEED_PAY_MAX_USD = 200;
23
+ /** Opened when the caller has no amount; the user can change it on the page. */
24
+ export declare const ANTSEED_PAY_DEFAULT_AMOUNT = "20";
25
+ /**
26
+ * The amount as the page accepts it, or null when the page would refuse the
27
+ * link. Takes the desktop's `String(Number(input))` form and user input
28
+ * ("10.50" → "10.5"); '' and other non-amounts are null.
29
+ */
30
+ export declare function antseedPayAmount(input: unknown): string | null;
31
+ /**
32
+ * The amount a funding link opens on: the caller's when the page accepts it,
33
+ * else `ANTSEED_PAY_DEFAULT_AMOUNT`. The page refuses an empty amount, so a
34
+ * link is never signed without one.
35
+ */
36
+ export declare function antseedPayLinkAmount(input: unknown): string;
15
37
  /**
16
38
  * The signed message. Its header is a wire-format constant matching the pay
17
39
  * page's `buildFundingMessage` byte for byte ("AntSeed Pay", capital S) — not
18
40
  * display copy, so it must not follow product-name renames. The address is
19
41
  * lowercased (verified against the reference sig the page accepts); the URL
20
- * param stays checksummed. `amount` is '' when none was entered.
42
+ * param stays checksummed. `amount` must be one the page accepts (see
43
+ * `antseedPayAmount`): the page signs the same string it reads from the URL.
21
44
  */
22
45
  export declare function antseedPayMessage(address: string, amount: string): string;
23
46
  /**
@@ -29,9 +52,11 @@ export declare function antseedPayMessage(address: string, amount: string): stri
29
52
  */
30
53
  export declare function resolveCardProviderUrl(template: string, address: string, amount: string): URL;
31
54
  /**
32
- * Adds the Antseed Pay params to `url` in place: address, currency, amount
33
- * (when given), the wallet's signature over `antseedPayMessage`, and the
34
- * integration to open (unsigned, UX only).
55
+ * Adds the Antseed Pay params to `url` in place: address, currency, amount,
56
+ * the wallet's signature over `antseedPayMessage`, and the integration to
57
+ * open (unsigned, UX only). Throws when `amount` is one the page refuses
58
+ * (empty, more than two decimals, or outside $1–$200): the link would open
59
+ * to "invalid or was altered", so callers pass `antseedPayLinkAmount(...)`.
35
60
  */
36
61
  export declare function signAntseedPayUrl(url: URL, input: {
37
62
  wallet: {
package/dist/card-link.js CHANGED
@@ -11,12 +11,48 @@
11
11
  export const ANTSEED_PAY_INTEGRATIONS = ['crossmint', 'stripe'];
12
12
  export const DEFAULT_ANTSEED_PAY_URL = 'https://antseed-pay.com/';
13
13
  const ANTSEED_PAY_CURRENCY = 'USD';
14
+ /**
15
+ * The pay page's link rules (its `parseLink`): `amount` is required, whole
16
+ * dollars or up to two decimals, and between $1 and $200. A link outside
17
+ * these bounds — including one with no amount at all — is refused as
18
+ * "invalid or was altered" before the signature is even checked.
19
+ */
20
+ export const ANTSEED_PAY_MIN_USD = 1;
21
+ export const ANTSEED_PAY_MAX_USD = 200;
22
+ const ANTSEED_PAY_AMOUNT_RE = /^\d+(\.\d{1,2})?$/;
23
+ /** Opened when the caller has no amount; the user can change it on the page. */
24
+ export const ANTSEED_PAY_DEFAULT_AMOUNT = '20';
25
+ /**
26
+ * The amount as the page accepts it, or null when the page would refuse the
27
+ * link. Takes the desktop's `String(Number(input))` form and user input
28
+ * ("10.50" → "10.5"); '' and other non-amounts are null.
29
+ */
30
+ export function antseedPayAmount(input) {
31
+ let amount = Number.NaN;
32
+ if (typeof input === 'number')
33
+ amount = input;
34
+ else if (typeof input === 'string' && input.trim() !== '')
35
+ amount = Number(input);
36
+ if (!Number.isFinite(amount) || amount < ANTSEED_PAY_MIN_USD || amount > ANTSEED_PAY_MAX_USD)
37
+ return null;
38
+ const text = String(amount);
39
+ return ANTSEED_PAY_AMOUNT_RE.test(text) ? text : null;
40
+ }
41
+ /**
42
+ * The amount a funding link opens on: the caller's when the page accepts it,
43
+ * else `ANTSEED_PAY_DEFAULT_AMOUNT`. The page refuses an empty amount, so a
44
+ * link is never signed without one.
45
+ */
46
+ export function antseedPayLinkAmount(input) {
47
+ return antseedPayAmount(input) ?? ANTSEED_PAY_DEFAULT_AMOUNT;
48
+ }
14
49
  /**
15
50
  * The signed message. Its header is a wire-format constant matching the pay
16
51
  * page's `buildFundingMessage` byte for byte ("AntSeed Pay", capital S) — not
17
52
  * display copy, so it must not follow product-name renames. The address is
18
53
  * lowercased (verified against the reference sig the page accepts); the URL
19
- * param stays checksummed. `amount` is '' when none was entered.
54
+ * param stays checksummed. `amount` must be one the page accepts (see
55
+ * `antseedPayAmount`): the page signs the same string it reads from the URL.
20
56
  */
21
57
  export function antseedPayMessage(address, amount) {
22
58
  return [
@@ -57,16 +93,20 @@ export function resolveCardProviderUrl(template, address, amount) {
57
93
  return parsed;
58
94
  }
59
95
  /**
60
- * Adds the Antseed Pay params to `url` in place: address, currency, amount
61
- * (when given), the wallet's signature over `antseedPayMessage`, and the
62
- * integration to open (unsigned, UX only).
96
+ * Adds the Antseed Pay params to `url` in place: address, currency, amount,
97
+ * the wallet's signature over `antseedPayMessage`, and the integration to
98
+ * open (unsigned, UX only). Throws when `amount` is one the page refuses
99
+ * (empty, more than two decimals, or outside $1–$200): the link would open
100
+ * to "invalid or was altered", so callers pass `antseedPayLinkAmount(...)`.
63
101
  */
64
102
  export async function signAntseedPayUrl(url, input) {
65
103
  const { wallet, amount, integration } = input;
104
+ if (antseedPayAmount(amount) !== amount) {
105
+ throw new Error(`Antseed Pay amount must be $${ANTSEED_PAY_MIN_USD}–$${ANTSEED_PAY_MAX_USD} with at most 2 decimals`);
106
+ }
66
107
  url.searchParams.set('address', wallet.address);
67
108
  url.searchParams.set('cur', ANTSEED_PAY_CURRENCY);
68
- if (amount)
69
- url.searchParams.set('amount', amount);
109
+ url.searchParams.set('amount', amount);
70
110
  url.searchParams.set('sig', await wallet.signMessage(antseedPayMessage(wallet.address, amount)));
71
111
  url.searchParams.set('provider', integration);
72
112
  return url;
@@ -1 +1 @@
1
- {"version":3,"file":"card-link.js","sourceRoot":"","sources":["../src/card-link.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"card-link.js","sourceRoot":"","sources":["../src/card-link.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,36 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { Wallet, verifyMessage } from 'ethers';
3
- import { antseedPayMessage, buildAntseedPayLink, DEFAULT_ANTSEED_PAY_URL, resolveCardProviderUrl, signAntseedPayUrl, } from './card-link.js';
2
+ import { getAddress, Wallet, verifyMessage } from 'ethers';
3
+ import { ANTSEED_PAY_DEFAULT_AMOUNT, antseedPayAmount, antseedPayLinkAmount, antseedPayMessage, buildAntseedPayLink, DEFAULT_ANTSEED_PAY_URL, resolveCardProviderUrl, signAntseedPayUrl, } from './card-link.js';
4
4
  // Obvious fake key.
5
5
  const WALLET = new Wallet(`0x${'11'.repeat(32)}`);
6
+ /**
7
+ * The deployed antseed-pay.com link check, transcribed from its bundle
8
+ * (`buildFundingMessage` / `parseLink`): the page refuses a link whose
9
+ * amount is missing, has more than two decimals or is outside $1–$200
10
+ * before it checks the signature, and recovers the signer from the same
11
+ * header + lowercased address + currency + amount lines. Keep in step with
12
+ * the page; a signer that drifts from it opens to "This funding link is
13
+ * invalid or was altered".
14
+ */
15
+ function payPageParseLink(link) {
16
+ const params = new URL(link).searchParams;
17
+ const address = getAddress(params.get('address') ?? '');
18
+ const cur = params.get('cur') ?? '';
19
+ const amount = params.get('amount') ?? '';
20
+ const sig = params.get('sig') ?? '';
21
+ if (!['USD', 'GBP', 'EUR'].includes(cur))
22
+ throw new Error('unsupported currency');
23
+ if (!/^\d+(\.\d{1,2})?$/.test(amount))
24
+ throw new Error('invalid amount format');
25
+ if (Number(amount) < 1 || Number(amount) > 200)
26
+ throw new Error('amount must be between 1 and 200');
27
+ if (!/^0x[0-9a-fA-F]{130}$/.test(sig))
28
+ throw new Error('invalid signature format');
29
+ const message = ['AntSeed Pay', `address: ${address.toLowerCase()}`, `currency: ${cur}`, `amount: ${amount}`].join('\n');
30
+ if (verifyMessage(message, sig).toLowerCase() !== address.toLowerCase())
31
+ throw new Error('signature does not match the address');
32
+ return { address, amount };
33
+ }
6
34
  describe('card link', () => {
7
35
  it('signs the pay page wire format', () => {
8
36
  expect(antseedPayMessage('0xAbCdEf0000000000000000000000000000000001', '10.5'))
@@ -23,10 +51,52 @@ describe('card link', () => {
23
51
  expect(resolveCardProviderUrl('https://pay.example.test/?buyer={address}&amt={amount}', '0xabc', '').toString())
24
52
  .toBe('https://pay.example.test/?buyer=0xabc');
25
53
  });
26
- it('signs an empty amount without an amount param', async () => {
27
- const url = await signAntseedPayUrl(new URL('https://pay.example.test/'), { wallet: WALLET, amount: '', integration: 'crossmint' });
28
- expect(url.searchParams.has('amount')).toBe(false);
29
- expect(verifyMessage(antseedPayMessage(WALLET.address, ''), url.searchParams.get('sig'))).toBe(WALLET.address);
54
+ it('refuses to sign an amount the pay page would reject', async () => {
55
+ for (const amount of ['', '0.5', '250', '10.123', '1e1', ' 10', 'abc']) {
56
+ await expect(signAntseedPayUrl(new URL('https://pay.example.test/'), { wallet: WALLET, amount, integration: 'crossmint' }))
57
+ .rejects.toThrow('Antseed Pay amount must be $1–$200 with at most 2 decimals');
58
+ }
59
+ });
60
+ it('normalises amounts to what the pay page accepts', () => {
61
+ expect(antseedPayAmount('10.50')).toBe('10.5');
62
+ expect(antseedPayAmount(20)).toBe('20');
63
+ expect(antseedPayAmount('1')).toBe('1');
64
+ expect(antseedPayAmount('200')).toBe('200');
65
+ expect(antseedPayAmount('199.99')).toBe('199.99');
66
+ for (const bad of ['', '0', '0.99', '200.01', '10.125', 'abc', null, undefined, Number.NaN]) {
67
+ expect(antseedPayAmount(bad)).toBeNull();
68
+ }
69
+ expect(antseedPayLinkAmount('')).toBe(ANTSEED_PAY_DEFAULT_AMOUNT);
70
+ expect(antseedPayLinkAmount('25')).toBe('25');
71
+ expect(antseedPayLinkAmount('0.5')).toBe(ANTSEED_PAY_DEFAULT_AMOUNT);
72
+ });
73
+ // Regression: the desktop's Add Credits chooser opens the page with no
74
+ // amount entered, and the page refuses a link without one. Every link the
75
+ // signer builds — with or without a user amount — must pass the page's
76
+ // own check.
77
+ it('builds links the deployed pay page accepts, with and without a user amount', async () => {
78
+ for (const [input, expected] of [['', ANTSEED_PAY_DEFAULT_AMOUNT], ['5', '5'], ['10.50', '10.5'], ['200', '200']]) {
79
+ const link = await buildAntseedPayLink({
80
+ baseUrl: DEFAULT_ANTSEED_PAY_URL,
81
+ wallet: WALLET,
82
+ amount: antseedPayLinkAmount(input),
83
+ integration: 'crossmint',
84
+ });
85
+ expect(payPageParseLink(link)).toEqual({ address: WALLET.address, amount: expected });
86
+ }
87
+ });
88
+ it('is rejected by the pay page when the signed header or address casing drifts', async () => {
89
+ const good = antseedPayMessage(WALLET.address, '20');
90
+ const link = (sig) => `${DEFAULT_ANTSEED_PAY_URL}?address=${WALLET.address}&cur=USD&amount=20&sig=${sig}`;
91
+ expect(payPageParseLink(link(await WALLET.signMessage(good)))).toEqual({ address: WALLET.address, amount: '20' });
92
+ // The copy rename that broke the link once (CHANGELOG: "Antseed Pay").
93
+ const renamed = await WALLET.signMessage(good.replace('AntSeed Pay', 'Antseed Pay'));
94
+ expect(() => payPageParseLink(link(renamed))).toThrow('signature does not match the address');
95
+ const checksummed = await WALLET.signMessage(good.replace(WALLET.address.toLowerCase(), WALLET.address));
96
+ expect(() => payPageParseLink(link(checksummed))).toThrow('signature does not match the address');
97
+ // And a link with no amount at all is refused before the signature is read.
98
+ const unsigned = `${DEFAULT_ANTSEED_PAY_URL}?address=${WALLET.address}&cur=USD&sig=${await WALLET.signMessage(antseedPayMessage(WALLET.address, ''))}`;
99
+ expect(() => payPageParseLink(unsigned)).toThrow('invalid amount format');
30
100
  });
31
101
  it('allows loopback http and refuses other plain http or bad URLs', () => {
32
102
  expect(() => resolveCardProviderUrl('http://localhost:3120/', '0xabc', '1')).not.toThrow();
@@ -1 +1 @@
1
- {"version":3,"file":"card-link.test.js","sourceRoot":"","sources":["../src/card-link.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"card-link.test.js","sourceRoot":"","sources":["../src/card-link.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const e=o`<svg
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const e=o`<svg
2
2
  width="14"
3
3
  height="14"
4
4
  viewBox="0 0 14 14"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const r=o`<svg fill="none" viewBox="0 0 24 24">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const r=o`<svg fill="none" viewBox="0 0 24 24">
2
2
  <path
3
3
  style="fill: var(--wui-color-accent-100);"
4
4
  d="M10.2 6.6a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM21 6.6a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM10.2 17.4a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM21 17.4a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0Z"
@@ -1,4 +1,4 @@
1
- import{w as t}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const e=t`
1
+ import{w as t}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const e=t`
2
2
  <svg width="36" height="36">
3
3
  <path
4
4
  d="M28.724 0H7.271A7.269 7.269 0 0 0 0 7.272v21.46A7.268 7.268 0 0 0 7.271 36H28.73A7.272 7.272 0 0 0 36 28.728V7.272A7.275 7.275 0 0 0 28.724 0Z"
@@ -1,4 +1,4 @@
1
- import{w as i}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const c=i`<svg fill="none" viewBox="0 0 40 40">
1
+ import{w as i}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const c=i`<svg fill="none" viewBox="0 0 40 40">
2
2
  <g clip-path="url(#a)">
3
3
  <g clip-path="url(#b)">
4
4
  <circle cx="20" cy="19.89" r="20" fill="#000" />
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const i=o`<svg fill="none" viewBox="0 0 14 15">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const i=o`<svg fill="none" viewBox="0 0 14 15">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as C}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const i=C`<svg
1
+ import{w as C}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const i=C`<svg
2
2
  fill="none"
3
3
  viewBox="0 0 21 20"
4
4
  >
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const p=o`<svg fill="none" viewBox="0 0 14 15">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const p=o`<svg fill="none" viewBox="0 0 14 15">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const l=o`<svg
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const l=o`<svg
2
2
  xmlns="http://www.w3.org/2000/svg"
3
3
  width="12"
4
4
  height="13"
@@ -1,4 +1,4 @@
1
- import{i as N,e as G,r as q,c as O,d as c,k as M,n as z,O as ee,q as k,E as te,R as U,z as Me,g as K,B as j,D as ft,t as Cn,W as pt,C as Zt,h as vi,T as ei,m as Xe,M as on,F as rn,w as Ne,x as yi,f as Rn}from"./core-BKieXrcZ.js";import{n as u,c as B,o as E,r as _,U as he,e as $n,f as _n,a as In}from"./index-NIrQDrBv.js";import{n as En}from"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const Wn=N`
1
+ import{i as N,e as G,r as q,c as O,d as c,k as M,n as z,O as ee,q as k,E as te,R as U,z as Me,g as K,B as j,D as ft,t as Cn,W as pt,C as Zt,h as vi,T as ei,m as Xe,M as on,F as rn,w as Ne,x as yi,f as Rn}from"./core-B0QLjkxc.js";import{n as u,c as B,o as E,r as _,U as he,e as $n,f as _n,a as In}from"./index-BnwdCeOo.js";import{n as En}from"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const Wn=N`
2
2
  :host {
3
3
  position: relative;
4
4
  background-color: var(--wui-color-gray-glass-002);
@@ -1,4 +1,4 @@
1
- import{w as l}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const c=l`<svg fill="none" viewBox="0 0 20 20">
1
+ import{w as l}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const c=l`<svg fill="none" viewBox="0 0 20 20">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as C}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const i=C`<svg
1
+ import{w as C}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const i=C`<svg
2
2
  xmlns="http://www.w3.org/2000/svg"
3
3
  width="12"
4
4
  height="13"
@@ -1 +1 @@
1
- import{B as p,g as m,s as w,d as k,i as b,l as L,a as O,c as E,b as x,e as R,H as y,f as M}from"./index-B0ZMzNt2.js";class S extends p{constructor({callbackSelector:r,cause:a,data:n,extraData:i,sender:f,urls:t}){var o;super(a.shortMessage||"An error occurred while fetching for an offchain result.",{cause:a,metaMessages:[...a.metaMessages||[],(o=a.metaMessages)!=null&&o.length?"":[],"Offchain Gateway Call:",t&&[" Gateway URL(s):",...t.map(d=>` ${m(d)}`)],` Sender: ${f}`,` Data: ${n}`,` Callback selector: ${r}`,` Extra data: ${i}`].flat(),name:"OffchainLookupError"})}}class $ extends p{constructor({result:r,url:a}){super("Offchain gateway response is malformed. Response data must be a hex value.",{metaMessages:[`Gateway URL: ${m(a)}`,`Response: ${w(r)}`],name:"OffchainLookupResponseMalformedError"})}}class q extends p{constructor({sender:r,to:a}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${a}`,`OffchainLookup sender address: ${r}`],name:"OffchainLookupSenderMismatchError"})}}const A="0x556f1830",T={name:"OffchainLookup",type:"error",inputs:[{name:"sender",type:"address"},{name:"urls",type:"string[]"},{name:"callData",type:"bytes"},{name:"callbackFunction",type:"bytes4"},{name:"extraData",type:"bytes"}]};async function D(c,{blockNumber:r,blockTag:a,data:n,to:i}){const{args:f}=k({data:n,abi:[T]}),[t,o,d,l,s]=f,{ccipRead:e}=c,h=e&&typeof(e==null?void 0:e.request)=="function"?e.request:C;try{if(!b(i,t))throw new q({sender:t,to:i});const u=o.includes(L)?await O({data:d,ccipRequest:h}):await h({data:d,sender:t,urls:o}),{data:g}=await E(c,{blockNumber:r,blockTag:a,data:x([l,R([{type:"bytes"},{type:"bytes"}],[u,s])]),to:i});return g}catch(u){throw new S({callbackSelector:l,cause:u,data:n,extraData:s,sender:t,urls:o})}}async function C({data:c,sender:r,urls:a}){var i;let n=new Error("An unknown error occurred.");for(let f=0;f<a.length;f++){const t=a[f],o=t.includes("{data}")?"GET":"POST",d=o==="POST"?{data:c,sender:r}:void 0,l=o==="POST"?{"Content-Type":"application/json"}:{};try{const s=await fetch(t.replace("{sender}",r.toLowerCase()).replace("{data}",c),{body:JSON.stringify(d),headers:l,method:o});let e;if((i=s.headers.get("Content-Type"))!=null&&i.startsWith("application/json")?e=(await s.json()).data:e=await s.text(),!s.ok){n=new y({body:d,details:e!=null&&e.error?w(e.error):s.statusText,headers:s.headers,status:s.status,url:t});continue}if(!M(e)){n=new $({result:e,url:t});continue}return e}catch(s){n=new y({body:d,details:s.message,url:t})}}throw n}export{C as ccipRequest,D as offchainLookup,T as offchainLookupAbiItem,A as offchainLookupSignature};
1
+ import{B as p,g as m,s as w,d as k,i as b,l as L,a as O,c as E,b as x,e as R,H as y,f as M}from"./index-BX_g9ekT.js";class S extends p{constructor({callbackSelector:r,cause:a,data:n,extraData:i,sender:f,urls:t}){var o;super(a.shortMessage||"An error occurred while fetching for an offchain result.",{cause:a,metaMessages:[...a.metaMessages||[],(o=a.metaMessages)!=null&&o.length?"":[],"Offchain Gateway Call:",t&&[" Gateway URL(s):",...t.map(d=>` ${m(d)}`)],` Sender: ${f}`,` Data: ${n}`,` Callback selector: ${r}`,` Extra data: ${i}`].flat(),name:"OffchainLookupError"})}}class $ extends p{constructor({result:r,url:a}){super("Offchain gateway response is malformed. Response data must be a hex value.",{metaMessages:[`Gateway URL: ${m(a)}`,`Response: ${w(r)}`],name:"OffchainLookupResponseMalformedError"})}}class q extends p{constructor({sender:r,to:a}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${a}`,`OffchainLookup sender address: ${r}`],name:"OffchainLookupSenderMismatchError"})}}const A="0x556f1830",T={name:"OffchainLookup",type:"error",inputs:[{name:"sender",type:"address"},{name:"urls",type:"string[]"},{name:"callData",type:"bytes"},{name:"callbackFunction",type:"bytes4"},{name:"extraData",type:"bytes"}]};async function D(c,{blockNumber:r,blockTag:a,data:n,to:i}){const{args:f}=k({data:n,abi:[T]}),[t,o,d,l,s]=f,{ccipRead:e}=c,h=e&&typeof(e==null?void 0:e.request)=="function"?e.request:C;try{if(!b(i,t))throw new q({sender:t,to:i});const u=o.includes(L)?await O({data:d,ccipRequest:h}):await h({data:d,sender:t,urls:o}),{data:g}=await E(c,{blockNumber:r,blockTag:a,data:x([l,R([{type:"bytes"},{type:"bytes"}],[u,s])]),to:i});return g}catch(u){throw new S({callbackSelector:l,cause:u,data:n,extraData:s,sender:t,urls:o})}}async function C({data:c,sender:r,urls:a}){var i;let n=new Error("An unknown error occurred.");for(let f=0;f<a.length;f++){const t=a[f],o=t.includes("{data}")?"GET":"POST",d=o==="POST"?{data:c,sender:r}:void 0,l=o==="POST"?{"Content-Type":"application/json"}:{};try{const s=await fetch(t.replace("{sender}",r.toLowerCase()).replace("{data}",c),{body:JSON.stringify(d),headers:l,method:o});let e;if((i=s.headers.get("Content-Type"))!=null&&i.startsWith("application/json")?e=(await s.json()).data:e=await s.text(),!s.ok){n=new y({body:d,details:e!=null&&e.error?w(e.error):s.statusText,headers:s.headers,status:s.status,url:t});continue}if(!M(e)){n=new $({result:e,url:t});continue}return e}catch(s){n=new y({body:d,details:s.message,url:t})}}throw n}export{C as ccipRequest,D as offchainLookup,T as offchainLookupAbiItem,A as offchainLookupSignature};
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const l=o`<svg
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const l=o`<svg
2
2
  width="28"
3
3
  height="28"
4
4
  viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 14">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 14">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const i=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const i=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as t}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const e=t`<svg width="36" height="36" fill="none">
1
+ import{w as t}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const e=t`<svg width="36" height="36" fill="none">
2
2
  <path
3
3
  fill="#fff"
4
4
  fill-opacity=".05"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const r=o`<svg width="14" height="14" viewBox="0 0 14 14" fill="none">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const r=o`<svg width="14" height="14" viewBox="0 0 14 14" fill="none">
2
2
  <path
3
3
  fill-rule="evenodd"
4
4
  clip-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as l}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=l`<svg fill="none" viewBox="0 0 16 16">
1
+ import{w as l}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const t=l`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 20 20">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 20 20">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const a=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{w as o}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const a=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as C}from"./core-BKieXrcZ.js";import"./index-B0ZMzNt2.js";import"./index.es-PNSreUip.js";import"./events-DQ172AOg.js";const t=C`<svg
1
+ import{w as C}from"./core-B0QLjkxc.js";import"./index-BX_g9ekT.js";import"./index.es-oIJXoV2Y.js";import"./events-DQ172AOg.js";const t=C`<svg
2
2
  xmlns="http://www.w3.org/2000/svg"
3
3
  width="16"
4
4
  height="16"