@antseed/payments 0.1.64 → 0.1.66

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 (96) hide show
  1. package/dist/card-link.d.ts +53 -0
  2. package/dist/card-link.js +79 -0
  3. package/dist/card-link.js.map +1 -0
  4. package/dist/card-link.test.d.ts +1 -0
  5. package/dist/card-link.test.js +37 -0
  6. package/dist/card-link.test.js.map +1 -0
  7. package/dist/web/assets/{add-BtgX-vcQ.js → add-BH1B9awd.js} +1 -1
  8. package/dist/web/assets/{all-wallets-ewJCaZyj.js → all-wallets-_qCsGG_7.js} +1 -1
  9. package/dist/web/assets/{app-store-jMAZLhAG.js → app-store-CSHeWZ3A.js} +1 -1
  10. package/dist/web/assets/{apple-B7uWMizT.js → apple-CCLilR66.js} +1 -1
  11. package/dist/web/assets/{arrow-bottom-CsoZ5x9A.js → arrow-bottom-D0-7ZiKn.js} +1 -1
  12. package/dist/web/assets/{arrow-bottom-circle-DCUF2HMm.js → arrow-bottom-circle-CFPJIeWc.js} +1 -1
  13. package/dist/web/assets/{arrow-left-C39_5HZy.js → arrow-left-DRn_13kc.js} +1 -1
  14. package/dist/web/assets/{arrow-right-DicxdE5M.js → arrow-right-BxjR0Fdz.js} +1 -1
  15. package/dist/web/assets/{arrow-top-Bam-Qg_n.js → arrow-top-B1R2CCVC.js} +1 -1
  16. package/dist/web/assets/{bank-DMmRcls8.js → bank-DmFNa7fg.js} +1 -1
  17. package/dist/web/assets/{basic-ClImcF9g.js → basic-6ijgoaZK.js} +1 -1
  18. package/dist/web/assets/{browser-aDoQxfBP.js → browser-1OdBkPhc.js} +1 -1
  19. package/dist/web/assets/{card-C1wvr8Tx.js → card-wfMgFFlG.js} +1 -1
  20. package/dist/web/assets/{ccip-BEBptPzL.js → ccip-DmsKDk5g.js} +1 -1
  21. package/dist/web/assets/{checkmark-BmtchP4Z.js → checkmark-BqOb1kkD.js} +1 -1
  22. package/dist/web/assets/{checkmark-bold-CJdUO939.js → checkmark-bold-CAb3w3RB.js} +1 -1
  23. package/dist/web/assets/{chevron-bottom-CgDQglbP.js → chevron-bottom-D6DCr_2U.js} +1 -1
  24. package/dist/web/assets/{chevron-left-BqP0rwn-.js → chevron-left-caamkB4m.js} +1 -1
  25. package/dist/web/assets/{chevron-right-ChdhiBdJ.js → chevron-right-DXelL4W3.js} +1 -1
  26. package/dist/web/assets/{chevron-top-nZjQUqJZ.js → chevron-top-Dc-JhIzj.js} +1 -1
  27. package/dist/web/assets/{chrome-store-8TfBkW9o.js → chrome-store-DR0k3JNl.js} +1 -1
  28. package/dist/web/assets/{clock-8M03j42c.js → clock-CPjOiNbo.js} +1 -1
  29. package/dist/web/assets/{close-BBotubE7.js → close-4izpZwFK.js} +1 -1
  30. package/dist/web/assets/{coinPlaceholder-J6KldJq_.js → coinPlaceholder-CkDN0oDk.js} +1 -1
  31. package/dist/web/assets/{compass-Dx2TmKEZ.js → compass-Gpl2RFCE.js} +1 -1
  32. package/dist/web/assets/{copy-DFP02T_J.js → copy-DUb4XGrQ.js} +1 -1
  33. package/dist/web/assets/{core-DqipEyLk.js → core-BKieXrcZ.js} +3 -3
  34. package/dist/web/assets/{cursor-BvzEKjHy.js → cursor-Dy03Wa8Z.js} +1 -1
  35. package/dist/web/assets/{cursor-transparent-J9rknAua.js → cursor-transparent-1LQJUNws.js} +1 -1
  36. package/dist/web/assets/{desktop-DwJySZ8f.js → desktop-B36kSY-u.js} +1 -1
  37. package/dist/web/assets/{disconnect-BfKqZiyq.js → disconnect-D_zTMBJY.js} +1 -1
  38. package/dist/web/assets/{discord-CUzuH6u9.js → discord-B71kN4a1.js} +1 -1
  39. package/dist/web/assets/{etherscan-CzyQmxVP.js → etherscan-DtvDcBvB.js} +1 -1
  40. package/dist/web/assets/{exclamation-triangle-B0bzTgAZ.js → exclamation-triangle-DHW_ckao.js} +1 -1
  41. package/dist/web/assets/{extension-BU_7RKiG.js → extension-DSt0r6TA.js} +1 -1
  42. package/dist/web/assets/{external-link-BG25Qrfd.js → external-link-D23iici8.js} +1 -1
  43. package/dist/web/assets/{facebook-DZqwPoiF.js → facebook-BCgWsphY.js} +1 -1
  44. package/dist/web/assets/{farcaster-Fu_edMG_.js → farcaster-CPbNdR9n.js} +1 -1
  45. package/dist/web/assets/{filters-C2ygSE1E.js → filters-yx-fOS2Z.js} +1 -1
  46. package/dist/web/assets/{github-DJ78VsZ8.js → github-DzVFsDt0.js} +1 -1
  47. package/dist/web/assets/{google-D2VC6AgH.js → google-C22h6w2X.js} +1 -1
  48. package/dist/web/assets/{help-circle-tFpgMIXF.js → help-circle-XPrHFzCp.js} +1 -1
  49. package/dist/web/assets/{id-CVI3wOKR.js → id-CAbpbNXN.js} +1 -1
  50. package/dist/web/assets/{image-CGpugEHz.js → image-CAbHz6Kb.js} +1 -1
  51. package/dist/web/assets/{index-BODxxsQV.js → index-B0ZMzNt2.js} +64 -64
  52. package/dist/web/assets/{index-B_GGRymc.js → index-B6MdJmon.js} +1 -1
  53. package/dist/web/assets/{index-D8q_GDui.js → index-BmXDjBlF.js} +1 -1
  54. package/dist/web/assets/index-DIXB2x06.css +1 -0
  55. package/dist/web/assets/{index-DY_lGc5g.js → index-DxSd4wAG.js} +1 -1
  56. package/dist/web/assets/{index-B6gkJ3Ch.js → index-NIrQDrBv.js} +3 -3
  57. package/dist/web/assets/{index.es-Bvhxi7dX.js → index.es-PNSreUip.js} +4 -4
  58. package/dist/web/assets/{info-B_mVSM_7.js → info-B3ihq4Hg.js} +1 -1
  59. package/dist/web/assets/{info-circle-BUDHk5y1.js → info-circle-Bp0ShBNM.js} +1 -1
  60. package/dist/web/assets/{lightbulb-CPz6e13C.js → lightbulb-DtaU6Y6W.js} +1 -1
  61. package/dist/web/assets/{mail-vOlixMBq.js → mail-C6MVCJLL.js} +1 -1
  62. package/dist/web/assets/{metamask-sdk-Nzy2sijx.js → metamask-sdk-OhaOLAOz.js} +1 -1
  63. package/dist/web/assets/{mobile-B6HVvZdI.js → mobile-DQiiYLPv.js} +1 -1
  64. package/dist/web/assets/{more-CFmXQRj9.js → more-BvW5J2p2.js} +1 -1
  65. package/dist/web/assets/{network-placeholder-BhBguXBh.js → network-placeholder-CMNIjtjb.js} +1 -1
  66. package/dist/web/assets/{nftPlaceholder-TFEjmElw.js → nftPlaceholder-CQp0_R7b.js} +1 -1
  67. package/dist/web/assets/{off-DKEAFih0.js → off-75zyyvtQ.js} +1 -1
  68. package/dist/web/assets/{play-store-CH0Txutx.js → play-store-B0D2Ns-8.js} +1 -1
  69. package/dist/web/assets/{plus-CVXVcZm_.js → plus-Cuelf191.js} +1 -1
  70. package/dist/web/assets/{qr-code-B48ghPGc.js → qr-code-DfBYh374.js} +1 -1
  71. package/dist/web/assets/{recycle-horizontal-DuBz0-YR.js → recycle-horizontal-BE5c8JHw.js} +1 -1
  72. package/dist/web/assets/{refresh--6EytzUA.js → refresh-D6wU-zn0.js} +1 -1
  73. package/dist/web/assets/{reown-logo-DR1f4ysK.js → reown-logo-CT3EzHXg.js} +1 -1
  74. package/dist/web/assets/{search-_4aEwMp9.js → search-CiHOJIGp.js} +1 -1
  75. package/dist/web/assets/{secp256k1-B4pZ52El.js → secp256k1-DvtKSY4S.js} +1 -1
  76. package/dist/web/assets/{send-BrN77HCf.js → send-BeWYoxiX.js} +1 -1
  77. package/dist/web/assets/{swapHorizontal-CqBJwJ5n.js → swapHorizontal-BAyuyg8R.js} +1 -1
  78. package/dist/web/assets/{swapHorizontalBold-Bdr55X9E.js → swapHorizontalBold-DMrS7UJv.js} +1 -1
  79. package/dist/web/assets/{swapHorizontalMedium-BXsGw1Oi.js → swapHorizontalMedium-DlBgIjGf.js} +1 -1
  80. package/dist/web/assets/{swapHorizontalRoundedBold-DKzQoKnU.js → swapHorizontalRoundedBold-BfkNJ2ny.js} +1 -1
  81. package/dist/web/assets/{swapVertical-C6h37icA.js → swapVertical-CBIcUZrs.js} +1 -1
  82. package/dist/web/assets/{telegram-DCT09W9P.js → telegram-Cy2_xt_O.js} +1 -1
  83. package/dist/web/assets/{three-dots-D-ReG6gn.js → three-dots-vB7ta4_-.js} +1 -1
  84. package/dist/web/assets/{twitch-fjBn1W6I.js → twitch-7Y1eQA1h.js} +1 -1
  85. package/dist/web/assets/{twitterIcon-6ZzSMlak.js → twitterIcon-CKgNo9ld.js} +1 -1
  86. package/dist/web/assets/{verify-filled-v2n91dlN.js → verify-filled-BDPn51ow.js} +1 -1
  87. package/dist/web/assets/{verify-CxZfOVXR.js → verify-jlPSjsG4.js} +1 -1
  88. package/dist/web/assets/{w3m-modal-Dk4ISjeu.js → w3m-modal-EYPy50rE.js} +1 -1
  89. package/dist/web/assets/{wallet-placeholder-Cq95xqIn.js → wallet-placeholder-CdvIS4fz.js} +1 -1
  90. package/dist/web/assets/{wallet-BT80X6uh.js → wallet-w8EJv7QT.js} +1 -1
  91. package/dist/web/assets/{walletconnect-DDSGaTxR.js → walletconnect-YbsJ1wsK.js} +1 -1
  92. package/dist/web/assets/{warning-circle-DEaOrl28.js → warning-circle-CQxns8mJ.js} +1 -1
  93. package/dist/web/assets/{x-BHP-nRp4.js → x-B_di2Xiy.js} +1 -1
  94. package/dist/web/index.html +2 -2
  95. package/package.json +5 -3
  96. package/dist/web/assets/index-Cqin3jYz.css +0 -1
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Signed Antseed Pay funding links (card checkout), shared by the desktop
3
+ * (`payments:open-card-provider`) and the gateway console
4
+ * (`POST /workspaces/:id/wallet/card-link`) so both build the same bytes.
5
+ *
6
+ * The pay page checks a personal-sign signature over a canonical message
7
+ * naming the buyer address, currency and amount, proving the params came
8
+ * from that wallet. Pure and dependency-free: import it as
9
+ * `@antseed/payments/card-link` without loading the payments server.
10
+ */
11
+ /** The pay page's integrations; the `provider` URL param opens exactly one. */
12
+ export type AntseedPayIntegration = 'crossmint' | 'stripe';
13
+ export declare const ANTSEED_PAY_INTEGRATIONS: readonly AntseedPayIntegration[];
14
+ export declare const DEFAULT_ANTSEED_PAY_URL = "https://antseed-pay.com/";
15
+ /**
16
+ * The signed message. Its header is a wire-format constant matching the pay
17
+ * page's `buildFundingMessage` byte for byte ("AntSeed Pay", capital S) — not
18
+ * display copy, so it must not follow product-name renames. The address is
19
+ * lowercased (verified against the reference sig the page accepts); the URL
20
+ * param stays checksummed. `amount` is '' when none was entered.
21
+ */
22
+ export declare function antseedPayMessage(address: string, amount: string): string;
23
+ /**
24
+ * Expands a provider URL template (`{address}`, optional `{amount}`) and
25
+ * checks it: https only, except loopback so a locally run pay page can be
26
+ * tested. With no amount (''), query params still carrying the `{amount}`
27
+ * placeholder are dropped. Throws 'Card provider URL is invalid' / '... must
28
+ * be https'.
29
+ */
30
+ export declare function resolveCardProviderUrl(template: string, address: string, amount: string): URL;
31
+ /**
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).
35
+ */
36
+ export declare function signAntseedPayUrl(url: URL, input: {
37
+ wallet: {
38
+ address: string;
39
+ signMessage(message: string): Promise<string>;
40
+ };
41
+ amount: string;
42
+ integration: AntseedPayIntegration;
43
+ }): Promise<URL>;
44
+ /** The full signed link for a pay-page base URL (or template). */
45
+ export declare function buildAntseedPayLink(input: {
46
+ baseUrl: string;
47
+ wallet: {
48
+ address: string;
49
+ signMessage(message: string): Promise<string>;
50
+ };
51
+ amount: string;
52
+ integration: AntseedPayIntegration;
53
+ }): Promise<string>;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Signed Antseed Pay funding links (card checkout), shared by the desktop
3
+ * (`payments:open-card-provider`) and the gateway console
4
+ * (`POST /workspaces/:id/wallet/card-link`) so both build the same bytes.
5
+ *
6
+ * The pay page checks a personal-sign signature over a canonical message
7
+ * naming the buyer address, currency and amount, proving the params came
8
+ * from that wallet. Pure and dependency-free: import it as
9
+ * `@antseed/payments/card-link` without loading the payments server.
10
+ */
11
+ export const ANTSEED_PAY_INTEGRATIONS = ['crossmint', 'stripe'];
12
+ export const DEFAULT_ANTSEED_PAY_URL = 'https://antseed-pay.com/';
13
+ const ANTSEED_PAY_CURRENCY = 'USD';
14
+ /**
15
+ * The signed message. Its header is a wire-format constant matching the pay
16
+ * page's `buildFundingMessage` byte for byte ("AntSeed Pay", capital S) — not
17
+ * display copy, so it must not follow product-name renames. The address is
18
+ * lowercased (verified against the reference sig the page accepts); the URL
19
+ * param stays checksummed. `amount` is '' when none was entered.
20
+ */
21
+ export function antseedPayMessage(address, amount) {
22
+ return [
23
+ 'AntSeed Pay',
24
+ `address: ${address.toLowerCase()}`,
25
+ `currency: ${ANTSEED_PAY_CURRENCY}`,
26
+ `amount: ${amount}`,
27
+ ].join('\n');
28
+ }
29
+ /**
30
+ * Expands a provider URL template (`{address}`, optional `{amount}`) and
31
+ * checks it: https only, except loopback so a locally run pay page can be
32
+ * tested. With no amount (''), query params still carrying the `{amount}`
33
+ * placeholder are dropped. Throws 'Card provider URL is invalid' / '... must
34
+ * be https'.
35
+ */
36
+ export function resolveCardProviderUrl(template, address, amount) {
37
+ let expanded = template.split('{address}').join(address);
38
+ if (amount)
39
+ expanded = expanded.split('{amount}').join(amount);
40
+ let parsed;
41
+ try {
42
+ parsed = new URL(expanded);
43
+ }
44
+ catch {
45
+ throw new Error('Card provider URL is invalid');
46
+ }
47
+ const isLoopback = parsed.hostname === '127.0.0.1' || parsed.hostname === 'localhost';
48
+ if (parsed.protocol !== 'https:' && !(parsed.protocol === 'http:' && isLoopback)) {
49
+ throw new Error('Card provider URL must be https');
50
+ }
51
+ if (!amount) {
52
+ for (const [key, value] of [...parsed.searchParams.entries()]) {
53
+ if (value.includes('{amount}'))
54
+ parsed.searchParams.delete(key);
55
+ }
56
+ }
57
+ return parsed;
58
+ }
59
+ /**
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).
63
+ */
64
+ export async function signAntseedPayUrl(url, input) {
65
+ const { wallet, amount, integration } = input;
66
+ url.searchParams.set('address', wallet.address);
67
+ url.searchParams.set('cur', ANTSEED_PAY_CURRENCY);
68
+ if (amount)
69
+ url.searchParams.set('amount', amount);
70
+ url.searchParams.set('sig', await wallet.signMessage(antseedPayMessage(wallet.address, amount)));
71
+ url.searchParams.set('provider', integration);
72
+ return url;
73
+ }
74
+ /** The full signed link for a pay-page base URL (or template). */
75
+ export async function buildAntseedPayLink(input) {
76
+ const url = resolveCardProviderUrl(input.baseUrl, input.wallet.address, input.amount);
77
+ return (await signAntseedPayUrl(url, input)).toString();
78
+ }
79
+ //# sourceMappingURL=card-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-link.js","sourceRoot":"","sources":["../src/card-link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,37 @@
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';
4
+ // Obvious fake key.
5
+ const WALLET = new Wallet(`0x${'11'.repeat(32)}`);
6
+ describe('card link', () => {
7
+ it('signs the pay page wire format', () => {
8
+ expect(antseedPayMessage('0xAbCdEf0000000000000000000000000000000001', '10.5'))
9
+ .toBe('AntSeed Pay\naddress: 0xabcdef0000000000000000000000000000000001\ncurrency: USD\namount: 10.5');
10
+ });
11
+ it('builds a link whose signature recovers to the wallet', async () => {
12
+ const url = new URL(await buildAntseedPayLink({ baseUrl: DEFAULT_ANTSEED_PAY_URL, wallet: WALLET, amount: '20', integration: 'stripe' }));
13
+ expect(url.origin).toBe('https://antseed-pay.com');
14
+ expect(url.searchParams.get('address')).toBe(WALLET.address);
15
+ expect(url.searchParams.get('cur')).toBe('USD');
16
+ expect(url.searchParams.get('amount')).toBe('20');
17
+ expect(url.searchParams.get('provider')).toBe('stripe');
18
+ expect(verifyMessage(antseedPayMessage(WALLET.address, '20'), url.searchParams.get('sig'))).toBe(WALLET.address);
19
+ });
20
+ it('expands templates and drops amount placeholders when no amount is given', () => {
21
+ expect(resolveCardProviderUrl('https://pay.example.test/?buyer={address}&amt={amount}', '0xabc', '5').toString())
22
+ .toBe('https://pay.example.test/?buyer=0xabc&amt=5');
23
+ expect(resolveCardProviderUrl('https://pay.example.test/?buyer={address}&amt={amount}', '0xabc', '').toString())
24
+ .toBe('https://pay.example.test/?buyer=0xabc');
25
+ });
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);
30
+ });
31
+ it('allows loopback http and refuses other plain http or bad URLs', () => {
32
+ expect(() => resolveCardProviderUrl('http://localhost:3120/', '0xabc', '1')).not.toThrow();
33
+ expect(() => resolveCardProviderUrl('http://pay.example.test/', '0xabc', '1')).toThrow('Card provider URL must be https');
34
+ expect(() => resolveCardProviderUrl('not a url', '0xabc', '1')).toThrow('Card provider URL is invalid');
35
+ });
36
+ });
37
+ //# sourceMappingURL=card-link.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-link.test.js","sourceRoot":"","sources":["../src/card-link.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,oBAAoB;AACpB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAElD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,iBAAiB,CAAC,4CAA4C,EAAE,MAAM,CAAC,CAAC;aAC5E,IAAI,CAAC,+FAA+F,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,mBAAmB,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1I,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,CAAC,sBAAsB,CAAC,wDAAwD,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;aAC9G,IAAI,CAAC,6CAA6C,CAAC,CAAC;QACvD,MAAM,CAAC,sBAAsB,CAAC,wDAAwD,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;aAC7G,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,IAAI,GAAG,CAAC,2BAA2B,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;QACpI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,wBAAwB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3F,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QAC1H,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC1G,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const e=o`<svg
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
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-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const r=o`<svg fill="none" viewBox="0 0 24 24">
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">
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-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const e=t`
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`
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-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const c=i`<svg fill="none" viewBox="0 0 40 40">
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">
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-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const i=o`<svg fill="none" viewBox="0 0 14 15">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as C}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const i=C`<svg
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
2
2
  fill="none"
3
3
  viewBox="0 0 21 20"
4
4
  >
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const p=o`<svg fill="none" viewBox="0 0 14 15">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const l=o`<svg
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
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-DqipEyLk.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-B6gkJ3Ch.js";import{n as En}from"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.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-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`
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-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const c=l`<svg fill="none" viewBox="0 0 20 20">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as C}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const i=C`<svg
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
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-BODxxsQV.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-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,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const l=o`<svg
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
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-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 14 14">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const i=o`<svg fill="none" viewBox="0 0 16 16">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 16 16">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 16 16">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as t}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const e=t`<svg width="36" height="36" fill="none">
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">
2
2
  <path
3
3
  fill="#fff"
4
4
  fill-opacity=".05"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.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-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">
2
2
  <path
3
3
  fill-rule="evenodd"
4
4
  clip-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as l}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const t=l`<svg fill="none" viewBox="0 0 16 16">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const t=o`<svg fill="none" viewBox="0 0 20 20">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as o}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const a=o`<svg fill="none" viewBox="0 0 16 16">
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">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{w as C}from"./core-DqipEyLk.js";import"./index-BODxxsQV.js";import"./index.es-Bvhxi7dX.js";import"./events-DQ172AOg.js";const t=C`<svg
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
2
2
  xmlns="http://www.w3.org/2000/svg"
3
3
  width="16"
4
4
  height="16"