@0xsquid/deposit-widget 0.0.2-beta.0

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 (62) hide show
  1. package/dist/cjs/index.cjs +4062 -0
  2. package/dist/cjs/index.cjs.map +1 -0
  3. package/dist/index.d.ts +52 -0
  4. package/dist/index.esm.js +4042 -0
  5. package/dist/index.esm.js.map +1 -0
  6. package/dist/types/DepositWidget.d.ts +8 -0
  7. package/dist/types/components/ViewTransition.d.ts +8 -0
  8. package/dist/types/components/shared/buttons/button.d.ts +4 -0
  9. package/dist/types/components/shared/icons/types.d.ts +4 -0
  10. package/dist/types/components/shared/icons/user-round.d.ts +3 -0
  11. package/dist/types/components/shared/navigation/base-navbar.d.ts +4 -0
  12. package/dist/types/components/shared/navigation/sub-navbar.d.ts +7 -0
  13. package/dist/types/components/token-badge-icon.d.ts +7 -0
  14. package/dist/types/components/token-list-item.d.ts +14 -0
  15. package/dist/types/components/view-container.d.ts +2 -0
  16. package/dist/types/constants.d.ts +2 -0
  17. package/dist/types/hooks/ui/useMainCTAButtonState.d.ts +9 -0
  18. package/dist/types/hooks/use-auto-select-token.d.ts +2 -0
  19. package/dist/types/hooks/use-deposit-route.d.ts +8 -0
  20. package/dist/types/hooks/use-token-selection.d.ts +6 -0
  21. package/dist/types/hooks/use-transaction-history.d.ts +7 -0
  22. package/dist/types/index.d.ts +4 -0
  23. package/dist/types/services/assets-service.d.ts +7 -0
  24. package/dist/types/services/wallet-history/format.d.ts +11 -0
  25. package/dist/types/services/wallet-history/format.test.d.ts +2 -0
  26. package/dist/types/services/wallet-history/get-main-explorer-url.d.ts +24 -0
  27. package/dist/types/services/wallet-history/get-wallet-history.d.ts +3 -0
  28. package/dist/types/services/wallet-history/types.d.ts +67 -0
  29. package/dist/types/services/wallet-history/validation.d.ts +3 -0
  30. package/dist/types/store/use-deposit-store.d.ts +10 -0
  31. package/dist/types/store/use-input-mode.d.ts +6 -0
  32. package/dist/types/store/useRouter.d.ts +13 -0
  33. package/dist/types/types.d.ts +44 -0
  34. package/dist/types/utils/format-date.d.ts +3 -0
  35. package/dist/types/utils/format-date.test.d.ts +2 -0
  36. package/dist/types/utils/transaction.d.ts +11 -0
  37. package/dist/types/views/connect-wallet/connect-wallet-view.d.ts +7 -0
  38. package/dist/types/views/connect-wallet/wallet-list-item.d.ts +10 -0
  39. package/dist/types/views/main/amount-input.d.ts +11 -0
  40. package/dist/types/views/main/connect-prompt.d.ts +2 -0
  41. package/dist/types/views/main/deposit-amount-input.d.ts +2 -0
  42. package/dist/types/views/main/deposit-form.d.ts +2 -0
  43. package/dist/types/views/main/main-cta-button.d.ts +2 -0
  44. package/dist/types/views/main/main-view.d.ts +2 -0
  45. package/dist/types/views/main/navbar/actions.d.ts +2 -0
  46. package/dist/types/views/main/navbar/icon.d.ts +2 -0
  47. package/dist/types/views/main/navbar/navbar.d.ts +2 -0
  48. package/dist/types/views/main/navbar/title.d.ts +11 -0
  49. package/dist/types/views/main/recipient/account.d.ts +15 -0
  50. package/dist/types/views/main/recipient/recipient.d.ts +2 -0
  51. package/dist/types/views/main/token-selector.d.ts +2 -0
  52. package/dist/types/views/qr-code.d.ts +2 -0
  53. package/dist/types/views/render-view.d.ts +4 -0
  54. package/dist/types/views/select-chain/chain-type-meta.d.ts +8 -0
  55. package/dist/types/views/select-chain/select-chain-view.d.ts +7 -0
  56. package/dist/types/views/select-token.d.ts +2 -0
  57. package/dist/types/views/transaction-history/activity-list-item.d.ts +5 -0
  58. package/dist/types/views/transaction-history/transaction-history-view.d.ts +2 -0
  59. package/dist/types/views/transaction-progress/helpers.d.ts +15 -0
  60. package/dist/types/views/transaction-progress/transaction-progress-view.d.ts +2 -0
  61. package/dist/types/views/transaction-progress/use-transaction-progress.d.ts +18 -0
  62. package/package.json +102 -0
@@ -0,0 +1,4062 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var reactHooks = require('@0xsquid/react-hooks');
6
+ var ui = require('@0xsquid/ui');
7
+ var zustand = require('zustand');
8
+ var Fuse = require('fuse.js');
9
+ var reactWindow = require('react-window');
10
+
11
+ function _interopNamespaceDefault(e) {
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
29
+
30
+ var css_248z = "#squid-style-container .tw-font-geistvariable {\n font-feature-settings:\n \"ss01\" on,\n \"ss03\" on;\n }\n #squid-style-container .tw-timeline-gradient-mask {\n -webkit-mask-image: linear-gradient(\n to bottom,\n transparent 0%,\n black calc(50% - 15px),\n black calc(50% + 15px),\n transparent 100%\n );\n mask-image: linear-gradient(\n to bottom,\n transparent 0%,\n black calc(50% - 15px),\n black calc(50% + 15px),\n transparent 100%\n );\n }\n #squid-style-container input.date-input-no-icon::-webkit-inner-spin-button,\n #squid-style-container input.date-input-no-icon::-webkit-calendar-picker-indicator {\n display: none;\n -webkit-appearance: none;\n }\n /* boost badge colour swapping */\n #squid-style-container .boost-badge {\n --boost-badge-badge-color: var(--st-color-royal-500);\n --boost-badge-text-color: var(--st-color-grey-900);\n --boost-badge-shadow-color: #e4fe53;\n }\n [data-squid-theme-type=\"dark\"] #squid-style-container .boost-badge {\n --boost-badge-badge-color: #e4fe53;\n --boost-badge-shadow-color: var(--st-color-royal-500);\n }\n /* styling for React DayPicker */\n #squid-style-container :root .rdp {\n margin: 0 !important;\n --rdp-accent-color: var(--st-color-material-light-thin);\n --rdp-background-color: transparent;\n }\n #squid-style-container :root .rdp-month,\n #squid-style-container :root .rdp-table {\n width: 100%;\n }\n #squid-style-container :root .rdp-table {\n border-spacing: 2px;\n }\n #squid-style-container :root .rdp-nav {\n width: 28.5%;\n }\n #squid-style-container :root .rdp-nav button {\n width: 50%;\n }\n #squid-style-container :root .rdp-head_cell,\n #squid-style-container :root .rdp-cell {\n flex-grow: 1;\n width: auto;\n height: auto;\n }\n #squid-style-container :root .rdp-head_cell,\n #squid-style-container :root .rdp-cell {\n font-size:\n var(--st-font-size-caption);\n }\n #squid-style-container :root .rdp-head_cell,\n #squid-style-container :root .rdp-cell {\n font-weight:\n var(--st-font-weight-caption);\n }\n #squid-style-container :root .rdp-head_cell {\n height:\n 2.5rem;\n }\n #squid-style-container :root .rdp-day {\n width: 100%;\n }\n #squid-style-container :root .rdp-caption_label {\n font-weight: normal;\n }\n #squid-style-container :root .rdp-day,\n #squid-style-container :root .rdp-day_range_end.rdp-day_range_start {\n border-radius:\n 0.3125rem !important;\n }\n #squid-style-container :root .day-picker-from .rdp-day_range_start,\n #squid-style-container :root .day-picker-to .rdp-day_range_end {\n background-color:\n var(--st-color-royal-500);\n }\n #squid-style-container :root .day-picker-from .rdp-day_range_start,\n #squid-style-container :root .day-picker-to .rdp-day_range_end {\n --tw-text-opacity:\n 1;\n color:\n rgb(255 255 255 / var(--tw-text-opacity));\n }\n #squid-style-container :root .rdp-button:hover:not([disabled]):not(.rdp-nav_button) {\n border: 2px solid var(--st-color-royal-500);\n }\n /* Storybook */\n #squid-style-container .sb-show-main.sb-main-centered #storybook-root {\n padding: 0;\n margin: 0;\n width: 100%;\n }\n @media (min-width: 480px) {\n #squid-style-container .sb-show-main.sb-main-centered #storybook-root {\n margin:\n auto;\n }\n }\n @media (min-width: 480px) {\n #squid-style-container .sb-show-main.sb-main-centered #storybook-root {\n width:\n auto;\n }\n }\n\n@font-face {\n font-family: \"DMSansVariable\";\n\n src:\n local(\"DMSansVariable\"),\n url(\"data:font/woff2;base64,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\") format(\"woff2\");\n\n font-display: swap;\n}\n\n/* ! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com */\n\n/*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n.squid-style-container--preflight *,\n.squid-style-container--preflight ::before,\n.squid-style-container--preflight ::after {\n box-sizing: border-box;\n /* 1 */\n border-width: 0;\n /* 2 */\n border-style: solid;\n /* 2 */\n border-color: #e5e7eb;\n /* 2 */\n }\n\n.squid-style-container--preflight ::before,\n.squid-style-container--preflight ::after {\n --tw-content: '';\n }\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n7. Disable tap highlights on iOS\n*/\n\n.squid-style-container--preflight html,\n.squid-style-container--preflight :host {\n line-height: 1.5;\n /* 1 */\n -webkit-text-size-adjust: 100%;\n /* 2 */\n -moz-tab-size: 4;\n /* 3 */\n -o-tab-size: 4;\n tab-size: 4;\n /* 3 */\n font-family: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n /* 4 */\n font-feature-settings: normal;\n /* 5 */\n font-variation-settings: normal;\n /* 6 */\n -webkit-tap-highlight-color: transparent;\n /* 7 */\n }\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\n.squid-style-container--preflight body {\n margin: 0;\n /* 1 */\n line-height: inherit;\n /* 2 */\n }\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\n.squid-style-container--preflight hr {\n height: 0;\n /* 1 */\n color: inherit;\n /* 2 */\n border-top-width: 1px;\n /* 3 */\n }\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\n.squid-style-container--preflight abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n\n/*\nRemove the default font size and weight for headings.\n*/\n\n.squid-style-container--preflight h1,\n.squid-style-container--preflight h2,\n.squid-style-container--preflight h3,\n.squid-style-container--preflight h4,\n.squid-style-container--preflight h5,\n.squid-style-container--preflight h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\n.squid-style-container--preflight a {\n color: inherit;\n text-decoration: inherit;\n }\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\n.squid-style-container--preflight b,\n.squid-style-container--preflight strong {\n font-weight: bolder;\n }\n\n/*\n1. Use the user's configured `mono` font-family by default.\n2. Use the user's configured `mono` font-feature-settings by default.\n3. Use the user's configured `mono` font-variation-settings by default.\n4. Correct the odd `em` font sizing in all browsers.\n*/\n\n.squid-style-container--preflight code,\n.squid-style-container--preflight kbd,\n.squid-style-container--preflight samp,\n.squid-style-container--preflight pre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n /* 1 */\n font-feature-settings: normal;\n /* 2 */\n font-variation-settings: normal;\n /* 3 */\n font-size: 1em;\n /* 4 */\n }\n\n/*\nAdd the correct font size in all browsers.\n*/\n\n.squid-style-container--preflight small {\n font-size: 80%;\n }\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\n.squid-style-container--preflight sub,\n.squid-style-container--preflight sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n\n.squid-style-container--preflight sub {\n bottom: -0.25em;\n }\n\n.squid-style-container--preflight sup {\n top: -0.5em;\n }\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\n.squid-style-container--preflight table {\n text-indent: 0;\n /* 1 */\n border-color: inherit;\n /* 2 */\n border-collapse: collapse;\n /* 3 */\n }\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\n.squid-style-container--preflight button,\n.squid-style-container--preflight input,\n.squid-style-container--preflight optgroup,\n.squid-style-container--preflight select,\n.squid-style-container--preflight textarea {\n font-family: inherit;\n /* 1 */\n font-feature-settings: inherit;\n /* 1 */\n font-variation-settings: inherit;\n /* 1 */\n font-size: 100%;\n /* 1 */\n font-weight: inherit;\n /* 1 */\n line-height: inherit;\n /* 1 */\n color: inherit;\n /* 1 */\n margin: 0;\n /* 2 */\n padding: 0;\n /* 3 */\n }\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\n.squid-style-container--preflight button,\n.squid-style-container--preflight select {\n text-transform: none;\n }\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\n.squid-style-container--preflight button,\n.squid-style-container--preflight [type='button'],\n.squid-style-container--preflight [type='reset'],\n.squid-style-container--preflight [type='submit'] {\n -webkit-appearance: button;\n /* 1 */\n background-color: transparent;\n /* 2 */\n background-image: none;\n /* 2 */\n }\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n.squid-style-container--preflight :-moz-focusring {\n outline: auto;\n }\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n.squid-style-container--preflight :-moz-ui-invalid {\n box-shadow: none;\n }\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\n.squid-style-container--preflight progress {\n vertical-align: baseline;\n }\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n.squid-style-container--preflight ::-webkit-inner-spin-button,\n.squid-style-container--preflight ::-webkit-outer-spin-button {\n height: auto;\n }\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n.squid-style-container--preflight [type='search'] {\n -webkit-appearance: textfield;\n /* 1 */\n outline-offset: -2px;\n /* 2 */\n }\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n.squid-style-container--preflight ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n.squid-style-container--preflight ::-webkit-file-upload-button {\n -webkit-appearance: button;\n /* 1 */\n font: inherit;\n /* 2 */\n }\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\n.squid-style-container--preflight summary {\n display: list-item;\n }\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\n.squid-style-container--preflight blockquote,\n.squid-style-container--preflight dl,\n.squid-style-container--preflight dd,\n.squid-style-container--preflight h1,\n.squid-style-container--preflight h2,\n.squid-style-container--preflight h3,\n.squid-style-container--preflight h4,\n.squid-style-container--preflight h5,\n.squid-style-container--preflight h6,\n.squid-style-container--preflight hr,\n.squid-style-container--preflight figure,\n.squid-style-container--preflight p,\n.squid-style-container--preflight pre {\n margin: 0;\n }\n\n.squid-style-container--preflight fieldset {\n margin: 0;\n padding: 0;\n }\n\n.squid-style-container--preflight legend {\n padding: 0;\n }\n\n.squid-style-container--preflight ol,\n.squid-style-container--preflight ul,\n.squid-style-container--preflight menu {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n/*\nReset default styling for dialogs.\n*/\n\n.squid-style-container--preflight dialog {\n padding: 0;\n }\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\n.squid-style-container--preflight textarea {\n resize: vertical;\n }\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\n.squid-style-container--preflight input::-moz-placeholder, .squid-style-container--preflight textarea::-moz-placeholder {\n opacity: 1;\n /* 1 */\n color: #9ca3af;\n /* 2 */\n }\n\n.squid-style-container--preflight input::placeholder,\n.squid-style-container--preflight textarea::placeholder {\n opacity: 1;\n /* 1 */\n color: #9ca3af;\n /* 2 */\n }\n\n/*\nSet the default cursor for buttons.\n*/\n\n.squid-style-container--preflight button,\n.squid-style-container--preflight [role=\"button\"] {\n cursor: pointer;\n }\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n\n.squid-style-container--preflight :disabled {\n cursor: default;\n }\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\n.squid-style-container--preflight img,\n.squid-style-container--preflight svg,\n.squid-style-container--preflight video,\n.squid-style-container--preflight canvas,\n.squid-style-container--preflight audio,\n.squid-style-container--preflight iframe,\n.squid-style-container--preflight embed,\n.squid-style-container--preflight object {\n display: block;\n /* 1 */\n vertical-align: middle;\n /* 2 */\n }\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\n.squid-style-container--preflight img,\n.squid-style-container--preflight video {\n max-width: 100%;\n height: auto;\n }\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n\n.squid-style-container--preflight [hidden] {\n display: none;\n }\n\n.squid-style-container--preflight *, .squid-style-container--preflight ::before, .squid-style-container--preflight ::after {\n --tw-border-spacing-x:\n 0;\n --tw-border-spacing-y:\n 0;\n --tw-translate-x:\n 0;\n --tw-translate-y:\n 0;\n --tw-rotate:\n 0;\n --tw-skew-x:\n 0;\n --tw-skew-y:\n 0;\n --tw-scale-x:\n 1;\n --tw-scale-y:\n 1;\n --tw-pan-x:\n ;\n --tw-pan-y:\n ;\n --tw-pinch-zoom:\n ;\n --tw-scroll-snap-strictness:\n proximity;\n --tw-gradient-from-position:\n ;\n --tw-gradient-via-position:\n ;\n --tw-gradient-to-position:\n ;\n --tw-ordinal:\n ;\n --tw-slashed-zero:\n ;\n --tw-numeric-figure:\n ;\n --tw-numeric-spacing:\n ;\n --tw-numeric-fraction:\n ;\n --tw-ring-inset:\n ;\n --tw-ring-offset-width:\n 0px;\n --tw-ring-offset-color:\n #fff;\n --tw-ring-color:\n rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow:\n 0 0 #0000;\n --tw-ring-shadow:\n 0 0 #0000;\n --tw-shadow:\n 0 0 #0000;\n --tw-shadow-colored:\n 0 0 #0000;\n --tw-blur:\n ;\n --tw-brightness:\n ;\n --tw-contrast:\n ;\n --tw-grayscale:\n ;\n --tw-hue-rotate:\n ;\n --tw-invert:\n ;\n --tw-saturate:\n ;\n --tw-sepia:\n ;\n --tw-drop-shadow:\n ;\n --tw-backdrop-blur:\n ;\n --tw-backdrop-brightness:\n ;\n --tw-backdrop-contrast:\n ;\n --tw-backdrop-grayscale:\n ;\n --tw-backdrop-hue-rotate:\n ;\n --tw-backdrop-invert:\n ;\n --tw-backdrop-opacity:\n ;\n --tw-backdrop-saturate:\n ;\n --tw-backdrop-sepia:\n ;\n }\n\n.squid-style-container--preflight ::backdrop {\n --tw-border-spacing-x:\n 0;\n --tw-border-spacing-y:\n 0;\n --tw-translate-x:\n 0;\n --tw-translate-y:\n 0;\n --tw-rotate:\n 0;\n --tw-skew-x:\n 0;\n --tw-skew-y:\n 0;\n --tw-scale-x:\n 1;\n --tw-scale-y:\n 1;\n --tw-pan-x:\n ;\n --tw-pan-y:\n ;\n --tw-pinch-zoom:\n ;\n --tw-scroll-snap-strictness:\n proximity;\n --tw-gradient-from-position:\n ;\n --tw-gradient-via-position:\n ;\n --tw-gradient-to-position:\n ;\n --tw-ordinal:\n ;\n --tw-slashed-zero:\n ;\n --tw-numeric-figure:\n ;\n --tw-numeric-spacing:\n ;\n --tw-numeric-fraction:\n ;\n --tw-ring-inset:\n ;\n --tw-ring-offset-width:\n 0px;\n --tw-ring-offset-color:\n #fff;\n --tw-ring-color:\n rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow:\n 0 0 #0000;\n --tw-ring-shadow:\n 0 0 #0000;\n --tw-shadow:\n 0 0 #0000;\n --tw-shadow-colored:\n 0 0 #0000;\n --tw-blur:\n ;\n --tw-brightness:\n ;\n --tw-contrast:\n ;\n --tw-grayscale:\n ;\n --tw-hue-rotate:\n ;\n --tw-invert:\n ;\n --tw-saturate:\n ;\n --tw-sepia:\n ;\n --tw-drop-shadow:\n ;\n --tw-backdrop-blur:\n ;\n --tw-backdrop-brightness:\n ;\n --tw-backdrop-contrast:\n ;\n --tw-backdrop-grayscale:\n ;\n --tw-backdrop-hue-rotate:\n ;\n --tw-backdrop-invert:\n ;\n --tw-backdrop-opacity:\n ;\n --tw-backdrop-saturate:\n ;\n --tw-backdrop-sepia:\n ;\n }\n\n.squid-style-container :is(.tw-sr-only) {\n position:\n absolute;\n width:\n 1px;\n height:\n 1px;\n padding:\n 0;\n margin:\n -1px;\n overflow:\n hidden;\n clip:\n rect(0, 0, 0, 0);\n white-space:\n nowrap;\n border-width:\n 0;\n}\n\n.squid-style-container :is(.tw-pointer-events-none) {\n pointer-events:\n none;\n}\n\n.squid-style-container :is(.tw-visible) {\n visibility:\n visible;\n}\n\n.squid-style-container :is(.tw-invisible) {\n visibility:\n hidden;\n}\n\n.squid-style-container :is(.\\!tw-static) {\n position:\n static !important;\n}\n\n.squid-style-container :is(.tw-fixed) {\n position:\n fixed;\n}\n\n.squid-style-container :is(.tw-absolute) {\n position:\n absolute;\n}\n\n.squid-style-container :is(.tw-relative) {\n position:\n relative;\n}\n\n.squid-style-container :is(.tw-inset-0) {\n inset:\n 0px;\n}\n\n.squid-style-container :is(.tw-inset-x-0) {\n left:\n 0px;\n right:\n 0px;\n}\n\n.squid-style-container :is(.tw-inset-y-0) {\n top:\n 0px;\n bottom:\n 0px;\n}\n\n.squid-style-container :is(.\\!tw-right-\\[calc\\(100\\%\\+3px\\)\\]) {\n right:\n calc(100% + 3px) !important;\n}\n\n.squid-style-container :is(.-tw-bottom-0) {\n bottom:\n -0px;\n}\n\n.squid-style-container :is(.-tw-bottom-1) {\n bottom:\n -0.25rem;\n}\n\n.squid-style-container :is(.-tw-bottom-\\[1px\\]) {\n bottom:\n -1px;\n}\n\n.squid-style-container :is(.-tw-bottom-\\[3px\\]) {\n bottom:\n -3px;\n}\n\n.squid-style-container :is(.-tw-bottom-\\[calc\\(100\\%\\+5px\\)\\]) {\n bottom:\n calc(calc(100% + 5px) * -1);\n}\n\n.squid-style-container :is(.-tw-left-1) {\n left:\n -0.25rem;\n}\n\n.squid-style-container :is(.-tw-left-\\[2px\\]) {\n left:\n -2px;\n}\n\n.squid-style-container :is(.-tw-left-\\[4px\\]) {\n left:\n -4px;\n}\n\n.squid-style-container :is(.-tw-left-\\[5px\\]) {\n left:\n -5px;\n}\n\n.squid-style-container :is(.-tw-right-0) {\n right:\n -0px;\n}\n\n.squid-style-container :is(.-tw-right-\\[1px\\]) {\n right:\n -1px;\n}\n\n.squid-style-container :is(.-tw-right-\\[3px\\]) {\n right:\n -3px;\n}\n\n.squid-style-container :is(.-tw-right-squid-xxs) {\n right:\n -0.3125rem;\n}\n\n.squid-style-container :is(.-tw-top-0) {\n top:\n -0px;\n}\n\n.squid-style-container :is(.-tw-top-\\[2px\\]) {\n top:\n -2px;\n}\n\n.squid-style-container :is(.-tw-top-\\[35px\\]) {\n top:\n -35px;\n}\n\n.squid-style-container :is(.-tw-top-\\[4px\\]) {\n top:\n -4px;\n}\n\n.squid-style-container :is(.-tw-top-squid-xxs) {\n top:\n -0.3125rem;\n}\n\n.squid-style-container :is(.tw-bottom-0) {\n bottom:\n 0px;\n}\n\n.squid-style-container :is(.tw-bottom-\\[50px\\]) {\n bottom:\n 50px;\n}\n\n.squid-style-container :is(.tw-bottom-full) {\n bottom:\n 100%;\n}\n\n.squid-style-container :is(.tw-left-0) {\n left:\n 0px;\n}\n\n.squid-style-container :is(.tw-left-1\\/2) {\n left:\n 50%;\n}\n\n.squid-style-container :is(.tw-left-\\[17px\\]) {\n left:\n 17px;\n}\n\n.squid-style-container :is(.tw-left-\\[1px\\]) {\n left:\n 1px;\n}\n\n.squid-style-container :is(.tw-left-\\[26px\\]) {\n left:\n 26px;\n}\n\n.squid-style-container :is(.tw-left-\\[2px\\]) {\n left:\n 2px;\n}\n\n.squid-style-container :is(.tw-left-\\[54px\\]) {\n left:\n 54px;\n}\n\n.squid-style-container :is(.tw-left-squid-s) {\n left:\n 0.9375rem;\n}\n\n.squid-style-container :is(.tw-right-0) {\n right:\n 0px;\n}\n\n.squid-style-container :is(.tw-right-1) {\n right:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-right-1\\.5) {\n right:\n 0.375rem;\n}\n\n.squid-style-container :is(.tw-right-\\[50px\\]) {\n right:\n 50px;\n}\n\n.squid-style-container :is(.tw-right-\\[unset\\]) {\n right:\n unset;\n}\n\n.squid-style-container :is(.tw-right-full) {\n right:\n 100%;\n}\n\n.squid-style-container :is(.tw-right-squid-m) {\n right:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-right-squid-s) {\n right:\n 0.9375rem;\n}\n\n.squid-style-container :is(.tw-right-squid-xs) {\n right:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-right-squid-xxs) {\n right:\n 0.3125rem;\n}\n\n.squid-style-container :is(.tw-top-0) {\n top:\n 0px;\n}\n\n.squid-style-container :is(.tw-top-1\\/2) {\n top:\n 50%;\n}\n\n.squid-style-container :is(.tw-top-\\[50px\\]) {\n top:\n 50px;\n}\n\n.squid-style-container :is(.tw-top-\\[calc\\(100\\%\\+5px\\)\\]) {\n top:\n calc(100% + 5px);\n}\n\n.squid-style-container :is(.tw-top-full) {\n top:\n 100%;\n}\n\n.squid-style-container :is(.tw-top-squid-xs) {\n top:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-top-squid-xxs) {\n top:\n 0.3125rem;\n}\n\n.squid-style-container :is(.-tw-z-40) {\n z-index:\n -40;\n}\n\n.squid-style-container :is(.tw-z-0) {\n z-index:\n 0;\n}\n\n.squid-style-container :is(.tw-z-10) {\n z-index:\n 10;\n}\n\n.squid-style-container :is(.tw-z-20) {\n z-index:\n 20;\n}\n\n.squid-style-container :is(.tw-z-30) {\n z-index:\n 30;\n}\n\n.squid-style-container :is(.tw-z-40) {\n z-index:\n 40;\n}\n\n.squid-style-container :is(.tw-z-\\[1\\]) {\n z-index:\n 1;\n}\n\n.squid-style-container :is(.tw-z-\\[5\\]) {\n z-index:\n 5;\n}\n\n.squid-style-container :is(.tw-mx-auto) {\n margin-left:\n auto;\n margin-right:\n auto;\n}\n\n.squid-style-container :is(.tw-mx-squid-xxs) {\n margin-left:\n 0.3125rem;\n margin-right:\n 0.3125rem;\n}\n\n.squid-style-container :is(.tw-my-squid-s) {\n margin-top:\n 0.9375rem;\n margin-bottom:\n 0.9375rem;\n}\n\n.squid-style-container :is(.tw-my-squid-xs) {\n margin-top:\n 0.625rem;\n margin-bottom:\n 0.625rem;\n}\n\n.squid-style-container :is(.-tw-mb-1) {\n margin-bottom:\n -0.25rem;\n}\n\n.squid-style-container :is(.-tw-ml-1) {\n margin-left:\n -0.25rem;\n}\n\n.squid-style-container :is(.-tw-ml-2) {\n margin-left:\n -0.5rem;\n}\n\n.squid-style-container :is(.-tw-mt-2) {\n margin-top:\n -0.5rem;\n}\n\n.squid-style-container :is(.tw-mb-squid-xs) {\n margin-bottom:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-ml-0) {\n margin-left:\n 0px;\n}\n\n.squid-style-container :is(.tw-ml-0\\.5) {\n margin-left:\n 0.125rem;\n}\n\n.squid-style-container :is(.tw-ml-auto) {\n margin-left:\n auto;\n}\n\n.squid-style-container :is(.tw-mr-1) {\n margin-right:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-mr-1\\.5) {\n margin-right:\n 0.375rem;\n}\n\n.squid-style-container :is(.tw-mr-squid-xl) {\n margin-right:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-mt-0) {\n margin-top:\n 0px;\n}\n\n.squid-style-container :is(.tw-mt-0\\.5) {\n margin-top:\n 0.125rem;\n}\n\n.squid-style-container :is(.tw-mt-2) {\n margin-top:\n 0.5rem;\n}\n\n.squid-style-container :is(.tw-mt-auto) {\n margin-top:\n auto;\n}\n\n.squid-style-container :is(.tw-mt-squid-s) {\n margin-top:\n 0.9375rem;\n}\n\n.squid-style-container :is(.tw-block) {\n display:\n block;\n}\n\n.squid-style-container :is(.tw-inline-block) {\n display:\n inline-block;\n}\n\n.squid-style-container :is(.tw-flex) {\n display:\n flex;\n}\n\n.squid-style-container :is(.tw-inline-flex) {\n display:\n inline-flex;\n}\n\n.squid-style-container :is(.tw-grid) {\n display:\n grid;\n}\n\n.squid-style-container :is(.tw-hidden) {\n display:\n none;\n}\n\n.squid-style-container :is(.tw-aspect-square) {\n aspect-ratio:\n 1 / 1;\n}\n\n.squid-style-container :is(.tw-size-10) {\n width:\n 2.5rem;\n height:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-size-12) {\n width:\n 3rem;\n height:\n 3rem;\n}\n\n.squid-style-container :is(.tw-size-3) {\n width:\n 0.75rem;\n height:\n 0.75rem;\n}\n\n.squid-style-container :is(.tw-size-8) {\n width:\n 2rem;\n height:\n 2rem;\n}\n\n.squid-style-container :is(.tw-size-\\[22\\.5rem\\]) {\n width:\n 22.5rem;\n height:\n 22.5rem;\n}\n\n.squid-style-container :is(.tw-size-full) {\n width:\n 100%;\n height:\n 100%;\n}\n\n.squid-style-container :is(.tw-size-squid-xl) {\n width:\n 2.5rem;\n height:\n 2.5rem;\n}\n\n.squid-style-container :is(.\\!tw-h-6) {\n height:\n 1.5rem !important;\n}\n\n.squid-style-container :is(.\\!tw-h-8) {\n height:\n 2rem !important;\n}\n\n.squid-style-container :is(.\\!tw-h-\\[30px\\]) {\n height:\n 30px !important;\n}\n\n.squid-style-container :is(.\\!tw-h-full) {\n height:\n 100% !important;\n}\n\n.squid-style-container :is(.tw-h-0) {\n height:\n 0px;\n}\n\n.squid-style-container :is(.tw-h-0\\.5) {\n height:\n 0.125rem;\n}\n\n.squid-style-container :is(.tw-h-10) {\n height:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-h-12) {\n height:\n 3rem;\n}\n\n.squid-style-container :is(.tw-h-14) {\n height:\n 3.5rem;\n}\n\n.squid-style-container :is(.tw-h-16) {\n height:\n 4rem;\n}\n\n.squid-style-container :is(.tw-h-2) {\n height:\n 0.5rem;\n}\n\n.squid-style-container :is(.tw-h-2\\.5) {\n height:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-h-20) {\n height:\n 5rem;\n}\n\n.squid-style-container :is(.tw-h-3) {\n height:\n 0.75rem;\n}\n\n.squid-style-container :is(.tw-h-32) {\n height:\n 8rem;\n}\n\n.squid-style-container :is(.tw-h-4) {\n height:\n 1rem;\n}\n\n.squid-style-container :is(.tw-h-5) {\n height:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-h-6) {\n height:\n 1.5rem;\n}\n\n.squid-style-container :is(.tw-h-8) {\n height:\n 2rem;\n}\n\n.squid-style-container :is(.tw-h-\\[0\\.8em\\]) {\n height:\n 0.8em;\n}\n\n.squid-style-container :is(.tw-h-\\[100px\\]) {\n height:\n 100px;\n}\n\n.squid-style-container :is(.tw-h-\\[130px\\]) {\n height:\n 130px;\n}\n\n.squid-style-container :is(.tw-h-\\[13px\\]) {\n height:\n 13px;\n}\n\n.squid-style-container :is(.tw-h-\\[14px\\]) {\n height:\n 14px;\n}\n\n.squid-style-container :is(.tw-h-\\[160px\\]) {\n height:\n 160px;\n}\n\n.squid-style-container :is(.tw-h-\\[16px\\]) {\n height:\n 16px;\n}\n\n.squid-style-container :is(.tw-h-\\[17px\\]) {\n height:\n 17px;\n}\n\n.squid-style-container :is(.tw-h-\\[21px\\]) {\n height:\n 21px;\n}\n\n.squid-style-container :is(.tw-h-\\[26px\\]) {\n height:\n 26px;\n}\n\n.squid-style-container :is(.tw-h-\\[30px\\]) {\n height:\n 30px;\n}\n\n.squid-style-container :is(.tw-h-\\[31px\\]) {\n height:\n 31px;\n}\n\n.squid-style-container :is(.tw-h-\\[4\\.5rem\\]) {\n height:\n 4.5rem;\n}\n\n.squid-style-container :is(.tw-h-\\[40px\\]) {\n height:\n 40px;\n}\n\n.squid-style-container :is(.tw-h-\\[42px\\]) {\n height:\n 42px;\n}\n\n.squid-style-container :is(.tw-h-\\[45px\\]) {\n height:\n 45px;\n}\n\n.squid-style-container :is(.tw-h-\\[46px\\]) {\n height:\n 46px;\n}\n\n.squid-style-container :is(.tw-h-\\[470px\\]) {\n height:\n 470px;\n}\n\n.squid-style-container :is(.tw-h-\\[50px\\]) {\n height:\n 50px;\n}\n\n.squid-style-container :is(.tw-h-\\[52px\\]) {\n height:\n 52px;\n}\n\n.squid-style-container :is(.tw-h-\\[55px\\]) {\n height:\n 55px;\n}\n\n.squid-style-container :is(.tw-h-\\[60px\\]) {\n height:\n 60px;\n}\n\n.squid-style-container :is(.tw-h-\\[65px\\]) {\n height:\n 65px;\n}\n\n.squid-style-container :is(.tw-h-\\[69px\\]) {\n height:\n 69px;\n}\n\n.squid-style-container :is(.tw-h-\\[71px\\]) {\n height:\n 71px;\n}\n\n.squid-style-container :is(.tw-h-\\[80px\\]) {\n height:\n 80px;\n}\n\n.squid-style-container :is(.tw-h-\\[94px\\]) {\n height:\n 94px;\n}\n\n.squid-style-container :is(.tw-h-button) {\n height:\n 3.75rem;\n}\n\n.squid-style-container :is(.tw-h-fit) {\n height:\n -moz-fit-content;\n height:\n fit-content;\n}\n\n.squid-style-container :is(.tw-h-full) {\n height:\n 100%;\n}\n\n.squid-style-container :is(.tw-h-list-item-large) {\n height:\n 3.125rem;\n}\n\n.squid-style-container :is(.tw-h-list-item-small) {\n height:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-h-px) {\n height:\n 1px;\n}\n\n.squid-style-container :is(.tw-h-squid-l) {\n height:\n 1.875rem;\n}\n\n.squid-style-container :is(.tw-h-squid-m) {\n height:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-h-squid-xl) {\n height:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-h-squid-xl2) {\n height:\n 3.125rem;\n}\n\n.squid-style-container :is(.tw-h-squid-xs) {\n height:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-h-squid-xxl) {\n height:\n 3.75rem;\n}\n\n.squid-style-container :is(.tw-h-widget-card) {\n height:\n 30rem;\n}\n\n.squid-style-container :is(.\\!tw-max-h-squid-xl) {\n max-height:\n 2.5rem !important;\n}\n\n.squid-style-container :is(.tw-max-h-0) {\n max-height:\n 0px;\n}\n\n.squid-style-container :is(.tw-max-h-20) {\n max-height:\n 5rem;\n}\n\n.squid-style-container :is(.tw-max-h-\\[120px\\]) {\n max-height:\n 120px;\n}\n\n.squid-style-container :is(.tw-max-h-\\[415px\\]) {\n max-height:\n 415px;\n}\n\n.squid-style-container :is(.tw-max-h-\\[470px\\]) {\n max-height:\n 470px;\n}\n\n.squid-style-container :is(.tw-max-h-\\[55px\\]) {\n max-height:\n 55px;\n}\n\n.squid-style-container :is(.tw-max-h-\\[80vh\\]) {\n max-height:\n 80vh;\n}\n\n.squid-style-container :is(.tw-max-h-full) {\n max-height:\n 100%;\n}\n\n.squid-style-container :is(.tw-max-h-list-item-small) {\n max-height:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-max-h-modal-compact) {\n max-height:\n 631px;\n}\n\n.squid-style-container :is(.tw-max-h-squid-m) {\n max-height:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-max-h-squid-xl) {\n max-height:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-min-h-10) {\n min-height:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-min-h-12) {\n min-height:\n 3rem;\n}\n\n.squid-style-container :is(.tw-min-h-14) {\n min-height:\n 3.5rem;\n}\n\n.squid-style-container :is(.tw-min-h-\\[30px\\]) {\n min-height:\n 30px;\n}\n\n.squid-style-container :is(.tw-min-h-\\[55px\\]) {\n min-height:\n 55px;\n}\n\n.squid-style-container :is(.tw-min-h-\\[631px\\]) {\n min-height:\n 631px;\n}\n\n.squid-style-container :is(.tw-min-h-\\[95px\\]) {\n min-height:\n 95px;\n}\n\n.squid-style-container :is(.tw-min-h-button) {\n min-height:\n 3.75rem;\n}\n\n.squid-style-container :is(.tw-min-h-card-small) {\n min-height:\n 580px;\n}\n\n.squid-style-container :is(.tw-min-h-squid-l) {\n min-height:\n 1.875rem;\n}\n\n.squid-style-container :is(.tw-min-h-squid-m) {\n min-height:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-min-h-squid-xl) {\n min-height:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-min-h-squid-xxl) {\n min-height:\n 3.75rem;\n}\n\n.squid-style-container :is(.\\!tw-w-6) {\n width:\n 1.5rem !important;\n}\n\n.squid-style-container :is(.\\!tw-w-\\[72px\\]) {\n width:\n 72px !important;\n}\n\n.squid-style-container :is(.\\!tw-w-fit) {\n width:\n -moz-fit-content !important;\n width:\n fit-content !important;\n}\n\n.squid-style-container :is(.tw-w-0) {\n width:\n 0px;\n}\n\n.squid-style-container :is(.tw-w-0\\.5) {\n width:\n 0.125rem;\n}\n\n.squid-style-container :is(.tw-w-1) {\n width:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-w-10) {\n width:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-w-20) {\n width:\n 5rem;\n}\n\n.squid-style-container :is(.tw-w-32) {\n width:\n 8rem;\n}\n\n.squid-style-container :is(.tw-w-4) {\n width:\n 1rem;\n}\n\n.squid-style-container :is(.tw-w-40) {\n width:\n 10rem;\n}\n\n.squid-style-container :is(.tw-w-48) {\n width:\n 12rem;\n}\n\n.squid-style-container :is(.tw-w-5) {\n width:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-w-56) {\n width:\n 14rem;\n}\n\n.squid-style-container :is(.tw-w-6) {\n width:\n 1.5rem;\n}\n\n.squid-style-container :is(.tw-w-8) {\n width:\n 2rem;\n}\n\n.squid-style-container :is(.tw-w-\\[108px\\]) {\n width:\n 108px;\n}\n\n.squid-style-container :is(.tw-w-\\[120px\\]) {\n width:\n 120px;\n}\n\n.squid-style-container :is(.tw-w-\\[157px\\]) {\n width:\n 157px;\n}\n\n.squid-style-container :is(.tw-w-\\[160px\\]) {\n width:\n 160px;\n}\n\n.squid-style-container :is(.tw-w-\\[16px\\]) {\n width:\n 16px;\n}\n\n.squid-style-container :is(.tw-w-\\[22px\\]) {\n width:\n 22px;\n}\n\n.squid-style-container :is(.tw-w-\\[26px\\]) {\n width:\n 26px;\n}\n\n.squid-style-container :is(.tw-w-\\[2px\\]) {\n width:\n 2px;\n}\n\n.squid-style-container :is(.tw-w-\\[30px\\]) {\n width:\n 30px;\n}\n\n.squid-style-container :is(.tw-w-\\[31px\\]) {\n width:\n 31px;\n}\n\n.squid-style-container :is(.tw-w-\\[36px\\]) {\n width:\n 36px;\n}\n\n.squid-style-container :is(.tw-w-\\[40px\\]) {\n width:\n 40px;\n}\n\n.squid-style-container :is(.tw-w-\\[42px\\]) {\n width:\n 42px;\n}\n\n.squid-style-container :is(.tw-w-\\[44px\\]) {\n width:\n 44px;\n}\n\n.squid-style-container :is(.tw-w-\\[52px\\]) {\n width:\n 52px;\n}\n\n.squid-style-container :is(.tw-w-\\[54px\\]) {\n width:\n 54px;\n}\n\n.squid-style-container :is(.tw-w-\\[56\\%\\]) {\n width:\n 56%;\n}\n\n.squid-style-container :is(.tw-w-\\[67\\%\\]) {\n width:\n 67%;\n}\n\n.squid-style-container :is(.tw-w-\\[69px\\]) {\n width:\n 69px;\n}\n\n.squid-style-container :is(.tw-w-\\[70px\\]) {\n width:\n 70px;\n}\n\n.squid-style-container :is(.tw-w-\\[72px\\]) {\n width:\n 72px;\n}\n\n.squid-style-container :is(.tw-w-\\[78\\.75rem\\]) {\n width:\n 78.75rem;\n}\n\n.squid-style-container :is(.tw-w-\\[80px\\]) {\n width:\n 80px;\n}\n\n.squid-style-container :is(.tw-w-\\[92px\\]) {\n width:\n 92px;\n}\n\n.squid-style-container :is(.tw-w-\\[94px\\]) {\n width:\n 94px;\n}\n\n.squid-style-container :is(.tw-w-\\[calc\\(100\\%\\+20px\\)\\]) {\n width:\n calc(100% + 20px);\n}\n\n.squid-style-container :is(.tw-w-fit) {\n width:\n -moz-fit-content;\n width:\n fit-content;\n}\n\n.squid-style-container :is(.tw-w-full) {\n width:\n 100%;\n}\n\n.squid-style-container :is(.tw-w-max) {\n width:\n -moz-max-content;\n width:\n max-content;\n}\n\n.squid-style-container :is(.tw-w-modal-compact) {\n width:\n 373px;\n}\n\n.squid-style-container :is(.tw-w-squid-l) {\n width:\n 1.875rem;\n}\n\n.squid-style-container :is(.tw-w-squid-m) {\n width:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-w-squid-s) {\n width:\n 0.9375rem;\n}\n\n.squid-style-container :is(.tw-w-squid-xl) {\n width:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-w-squid-xxl) {\n width:\n 3.75rem;\n}\n\n.squid-style-container :is(.tw-w-widget-card) {\n width:\n 23.75rem;\n}\n\n.squid-style-container :is(.\\!tw-min-w-0) {\n min-width:\n 0px !important;\n}\n\n.squid-style-container :is(.tw-min-w-0) {\n min-width:\n 0px;\n}\n\n.squid-style-container :is(.tw-min-w-4) {\n min-width:\n 1rem;\n}\n\n.squid-style-container :is(.tw-min-w-8) {\n min-width:\n 2rem;\n}\n\n.squid-style-container :is(.tw-min-w-\\[135px\\]) {\n min-width:\n 135px;\n}\n\n.squid-style-container :is(.tw-min-w-\\[160px\\]) {\n min-width:\n 160px;\n}\n\n.squid-style-container :is(.tw-min-w-\\[30px\\]) {\n min-width:\n 30px;\n}\n\n.squid-style-container :is(.tw-min-w-\\[60px\\]) {\n min-width:\n 60px;\n}\n\n.squid-style-container :is(.tw-min-w-fit) {\n min-width:\n -moz-fit-content;\n min-width:\n fit-content;\n}\n\n.squid-style-container :is(.tw-min-w-list-item-small) {\n min-width:\n 21.25rem;\n}\n\n.squid-style-container :is(.tw-min-w-squid-xl) {\n min-width:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-min-w-squid-xxl) {\n min-width:\n 3.75rem;\n}\n\n.squid-style-container :is(.\\!tw-max-w-full) {\n max-width:\n 100% !important;\n}\n\n.squid-style-container :is(.tw-max-w-96) {\n max-width:\n 24rem;\n}\n\n.squid-style-container :is(.tw-max-w-\\[100vw\\]) {\n max-width:\n 100vw;\n}\n\n.squid-style-container :is(.tw-max-w-\\[260px\\]) {\n max-width:\n 260px;\n}\n\n.squid-style-container :is(.tw-max-w-\\[320px\\]) {\n max-width:\n 320px;\n}\n\n.squid-style-container :is(.tw-max-w-\\[35ch\\]) {\n max-width:\n 35ch;\n}\n\n.squid-style-container :is(.tw-max-w-\\[44px\\]) {\n max-width:\n 44px;\n}\n\n.squid-style-container :is(.tw-max-w-\\[80px\\]) {\n max-width:\n 80px;\n}\n\n.squid-style-container :is(.tw-max-w-\\[calc\\(100\\%-3\\.125rem\\)\\]) {\n max-width:\n calc(100% - 3.125rem);\n}\n\n.squid-style-container :is(.tw-max-w-\\[calc\\(100\\%-30px\\)\\]) {\n max-width:\n calc(100% - 30px);\n}\n\n.squid-style-container :is(.tw-max-w-\\[calc\\(100\\%-60px\\)\\]) {\n max-width:\n calc(100% - 60px);\n}\n\n.squid-style-container :is(.tw-max-w-\\[calc\\(100\\%-80px\\)\\]) {\n max-width:\n calc(100% - 80px);\n}\n\n.squid-style-container :is(.tw-max-w-fit) {\n max-width:\n -moz-fit-content;\n max-width:\n fit-content;\n}\n\n.squid-style-container :is(.tw-max-w-full) {\n max-width:\n 100%;\n}\n\n.squid-style-container :is(.tw-max-w-modal-compact) {\n max-width:\n 373px;\n}\n\n.squid-style-container :is(.tw-flex-1) {\n flex:\n 1 1 0%;\n}\n\n.squid-style-container :is(.tw-flex-shrink-0) {\n flex-shrink:\n 0;\n}\n\n.squid-style-container :is(.tw-shrink-0) {\n flex-shrink:\n 0;\n}\n\n.squid-style-container :is(.tw-flex-grow) {\n flex-grow:\n 1;\n}\n\n.squid-style-container :is(.tw-grow) {\n flex-grow:\n 1;\n}\n\n.squid-style-container :is(.tw-grow-0) {\n flex-grow:\n 0;\n}\n\n.squid-style-container :is(.tw-origin-center) {\n transform-origin:\n center;\n}\n\n.squid-style-container :is(.-tw-translate-x-1\\/2) {\n --tw-translate-x:\n -50%;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.-tw-translate-x-\\[1px\\]) {\n --tw-translate-x:\n -1px;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.-tw-translate-y-1\\/2) {\n --tw-translate-y:\n -50%;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.-tw-translate-y-\\[1px\\]) {\n --tw-translate-y:\n -1px;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-translate-x-1\\/2) {\n --tw-translate-x:\n 50%;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-translate-x-1\\/3) {\n --tw-translate-x:\n 33.333333%;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-translate-x-\\[-8px\\]) {\n --tw-translate-x:\n -8px;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-translate-y-\\[calc\\(-50\\%\\+20px\\)\\]) {\n --tw-translate-y:\n calc(-50% + 20px);\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.-tw-rotate-90) {\n --tw-rotate:\n -90deg;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-rotate-0) {\n --tw-rotate:\n 0deg;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-rotate-180) {\n --tw-rotate:\n 180deg;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-rotate-90) {\n --tw-rotate:\n 90deg;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-scale-75) {\n --tw-scale-x:\n .75;\n --tw-scale-y:\n .75;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes tw-blur-in {\n 0% {\n backdrop-filter:\n blur(0px);\n }\n\n 100% {\n backdrop-filter:\n blur(20px) saturate(150%);\n background-color:\n var(--st-color-modal-backdrop);\n }\n}\n\n.squid-style-container :is(.tw-animate-blur-in) {\n animation:\n tw-blur-in var(--squid-animation-blur-in-duration, 0s) cubic-bezier(.165,.84,.44,1) both;\n}\n\n@keyframes tw-blur-out {\n 0% {\n backdrop-filter:\n blur(20px) saturate(150%);\n background-color:\n var(--st-color-modal-backdrop);\n }\n\n 100% {\n backdrop-filter:\n blur(0px);\n }\n}\n\n.squid-style-container :is(.tw-animate-blur-out) {\n animation:\n tw-blur-out var(--squid-animation-blur-out-duration, 0s) cubic-bezier(.165,.84,.44,1) both;\n}\n\n@keyframes tw-collapse-route {\n 0% {\n height:\n 100%;\n }\n\n 100% {\n height:\n 60px;\n }\n}\n\n.squid-style-container :is(.tw-animate-collapse-route) {\n animation:\n tw-collapse-route var(--squid-animation-collapse-to-bottom-duration, 0s) linear both;\n}\n\n@keyframes tw-expand-route {\n 0% {\n height:\n 60px;\n }\n\n 100% {\n height:\n 100%;\n }\n}\n\n.squid-style-container :is(.tw-animate-expand-route) {\n animation:\n tw-expand-route var(--squid-animation-expand-to-top-duration, 0s) linear both;\n}\n\n@keyframes tw-fade-in {\n 0% {\n opacity:\n 0;\n }\n\n 100% {\n opacity:\n 1;\n }\n}\n\n.squid-style-container :is(.tw-animate-fade-in) {\n animation:\n tw-fade-in var(--squid-animation-fade-in-duration, 0s) ease-out both;\n}\n\n@keyframes tw-fade-out {\n 0% {\n opacity:\n 1;\n }\n\n 100% {\n opacity:\n 0;\n }\n}\n\n.squid-style-container :is(.tw-animate-fade-out) {\n animation:\n tw-fade-out var(--squid-animation-fade-out-duration, 0s) ease-out both;\n}\n\n@keyframes tw-move-loading-cover-to-right {\n 0% {\n transform:\n translateX(-64%);\n }\n\n 100% {\n transform:\n translateX(0%);\n }\n}\n\n.squid-style-container :is(.tw-animate-move-loading-cover-to-right) {\n animation:\n tw-move-loading-cover-to-right 1.4s linear infinite;\n}\n\n@keyframes tw-pulse {\n 50% {\n opacity:\n .5;\n }\n}\n\n.squid-style-container :is(.tw-animate-pulse) {\n animation:\n tw-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n@keyframes tw-scale-and-fade-down {\n 0% {\n transform:\n scale(1);\n opacity:\n 1;\n }\n\n 100% {\n transform:\n scale(0.9);\n opacity:\n 0.5;\n }\n}\n\n.squid-style-container :is(.tw-animate-scale-and-fade-down) {\n animation:\n tw-scale-and-fade-down var(--squid-animation-scale-and-fade-down-duration, 0s) linear both;\n}\n\n@keyframes tw-scale-and-fade-up {\n 0% {\n transform:\n scale(0.9);\n opacity:\n 0.5;\n }\n\n 100% {\n transform:\n scale(1);\n opacity:\n 1;\n }\n}\n\n.squid-style-container :is(.tw-animate-scale-and-fade-up) {\n animation:\n tw-scale-and-fade-up var(--squid-animation-scale-and-fade-up-duration, 0s) linear both;\n}\n\n@keyframes tw-shimmer {\n 0% {\n background-position:\n 100% center;\n }\n\n 100% {\n background-position:\n -100% center;\n }\n}\n\n.squid-style-container :is(.tw-animate-shimmer) {\n animation:\n tw-shimmer 1.5s linear infinite;\n}\n\n@keyframes tw-slide-in-left {\n 0% {\n transform:\n translateX(-100%);\n }\n\n 100% {\n transform:\n translateX(0);\n }\n}\n\n.squid-style-container :is(.tw-animate-slide-in-left) {\n animation:\n tw-slide-in-left 250ms cubic-bezier(0.25, 0.1, 0.25, 1) forwards;\n}\n\n@keyframes tw-slide-in-right {\n 0% {\n transform:\n translateX(100%);\n }\n\n 100% {\n transform:\n translateX(0);\n }\n}\n\n.squid-style-container :is(.tw-animate-slide-in-right) {\n animation:\n tw-slide-in-right 250ms cubic-bezier(0.25, 0.1, 0.25, 1) forwards;\n}\n\n@keyframes tw-slide-out-left {\n 0% {\n transform:\n translateX(0);\n }\n\n 100% {\n transform:\n translateX(-100%);\n }\n}\n\n.squid-style-container :is(.tw-animate-slide-out-left) {\n animation:\n tw-slide-out-left 250ms cubic-bezier(0.25, 0.1, 0.25, 1) forwards;\n}\n\n@keyframes tw-slide-out-right {\n 0% {\n transform:\n translateX(0);\n }\n\n 100% {\n transform:\n translateX(100%);\n }\n}\n\n.squid-style-container :is(.tw-animate-slide-out-right) {\n animation:\n tw-slide-out-right 250ms cubic-bezier(0.25, 0.1, 0.25, 1) forwards;\n}\n\n@keyframes tw-slide-to-bottom {\n 0% {\n transform:\n translate3d(0, 0, 0);\n }\n\n 100% {\n transform:\n translate3d(0, 650px, 0);\n }\n}\n\n.squid-style-container :is(.tw-animate-slide-to-bottom) {\n animation:\n tw-slide-to-bottom var(--squid-animation-slide-to-bottom-duration, 0s) cubic-bezier(.165,.84,.44,1) both;\n}\n\n@keyframes tw-slide-to-bottom-and-fade-out {\n 0% {\n transform:\n translate3d(0, 0, 0);\n opacity:\n 1;\n }\n\n 100% {\n transform:\n translate3d(0, 650px, 0);\n opacity:\n 0;\n }\n}\n\n.squid-style-container :is(.tw-animate-slide-to-bottom-and-fade-out) {\n animation:\n tw-slide-to-bottom-and-fade-out var(--squid-animation-slide-to-bottom-duration, 0s) cubic-bezier(.165,.84,.44,1) both;\n}\n\n@keyframes tw-slide-to-top {\n 0% {\n transform:\n translate3d(0, 650px, 0);\n }\n\n 100% {\n transform:\n translate3d(0, 0, 0);\n }\n}\n\n.squid-style-container :is(.tw-animate-slide-to-top) {\n animation:\n tw-slide-to-top var(--squid-animation-slide-to-top-duration, 0s) cubic-bezier(.165,.84,.44,1) both;\n}\n\n@keyframes tw-slide-to-top-and-fade-in {\n 0% {\n transform:\n translate3d(0, 650px, 0);\n opacity:\n 0;\n }\n\n 100% {\n transform:\n translate3d(0, 0, 0);\n opacity:\n 1;\n }\n}\n\n.squid-style-container :is(.tw-animate-slide-to-top-and-fade-in) {\n animation:\n tw-slide-to-top-and-fade-in var(--squid-animation-slide-to-top-duration, 0s) cubic-bezier(.165,.84,.44,1) both;\n}\n\n@keyframes tw-rotate-360 {\n to {\n transform:\n rotate(360deg);\n }\n}\n\n.squid-style-container :is(.tw-animate-squid-animated-loader) {\n animation:\n tw-rotate-360 var(--squid-loader-rotate-duration) linear infinite;\n}\n\n@keyframes tw-squid-animated-loader-dash-grow {\n 0% {\n stroke-dasharray:\n 62.827;\n stroke-dashoffset:\n 0;\n }\n\n 100% {\n stroke-dasharray:\n 4141.884;\n stroke-dashoffset:\n -20.942;\n }\n}\n\n.squid-style-container :is(.tw-animate-squid-animated-loader-dash-grow) {\n animation:\n tw-squid-animated-loader-dash-grow var(--squid-loader-rotate-duration) infinite alternate ease-in-out;\n}\n\n.squid-style-container :is(.tw-cursor-default) {\n cursor:\n default;\n}\n\n.squid-style-container :is(.tw-cursor-help) {\n cursor:\n help;\n}\n\n.squid-style-container :is(.tw-cursor-not-allowed) {\n cursor:\n not-allowed;\n}\n\n.squid-style-container :is(.tw-cursor-pointer) {\n cursor:\n pointer;\n}\n\n.squid-style-container :is(.tw-cursor-text) {\n cursor:\n text;\n}\n\n.squid-style-container :is(.tw-select-none) {\n -webkit-user-select:\n none;\n -moz-user-select:\n none;\n user-select:\n none;\n}\n\n.squid-style-container :is(.tw-grid-cols-7) {\n grid-template-columns:\n repeat(7, minmax(0, 1fr));\n}\n\n.squid-style-container :is(.tw-grid-cols-\\[100px\\,1fr\\,100px\\]) {\n grid-template-columns:\n 100px 1fr 100px;\n}\n\n.squid-style-container :is(.tw-grid-cols-\\[40px\\,1fr\\,60px\\]) {\n grid-template-columns:\n 40px 1fr 60px;\n}\n\n.squid-style-container :is(.tw-grid-rows-\\[1fr\\]) {\n grid-template-rows:\n 1fr;\n}\n\n.squid-style-container :is(.tw-flex-row) {\n flex-direction:\n row;\n}\n\n.squid-style-container :is(.tw-flex-row-reverse) {\n flex-direction:\n row-reverse;\n}\n\n.squid-style-container :is(.tw-flex-col) {\n flex-direction:\n column;\n}\n\n.squid-style-container :is(.tw-flex-col-reverse) {\n flex-direction:\n column-reverse;\n}\n\n.squid-style-container :is(.tw-flex-wrap) {\n flex-wrap:\n wrap;\n}\n\n.squid-style-container :is(.tw-content-center) {\n align-content:\n center;\n}\n\n.squid-style-container :is(.tw-items-start) {\n align-items:\n flex-start;\n}\n\n.squid-style-container :is(.tw-items-end) {\n align-items:\n flex-end;\n}\n\n.squid-style-container :is(.tw-items-center) {\n align-items:\n center;\n}\n\n.squid-style-container :is(.tw-justify-start) {\n justify-content:\n flex-start;\n}\n\n.squid-style-container :is(.tw-justify-end) {\n justify-content:\n flex-end;\n}\n\n.squid-style-container :is(.tw-justify-center) {\n justify-content:\n center;\n}\n\n.squid-style-container :is(.tw-justify-between) {\n justify-content:\n space-between;\n}\n\n.squid-style-container :is(.tw-justify-stretch) {\n justify-content:\n stretch;\n}\n\n.squid-style-container :is(.tw-gap-0) {\n gap:\n 0px;\n}\n\n.squid-style-container :is(.tw-gap-0\\.5) {\n gap:\n 0.125rem;\n}\n\n.squid-style-container :is(.tw-gap-1) {\n gap:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-gap-1\\.5) {\n gap:\n 0.375rem;\n}\n\n.squid-style-container :is(.tw-gap-2) {\n gap:\n 0.5rem;\n}\n\n.squid-style-container :is(.tw-gap-2\\.5) {\n gap:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-gap-3) {\n gap:\n 0.75rem;\n}\n\n.squid-style-container :is(.tw-gap-4) {\n gap:\n 1rem;\n}\n\n.squid-style-container :is(.tw-gap-5) {\n gap:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-gap-\\[1px\\]) {\n gap:\n 1px;\n}\n\n.squid-style-container :is(.tw-gap-\\[2px\\]) {\n gap:\n 2px;\n}\n\n.squid-style-container :is(.tw-gap-\\[3px\\]) {\n gap:\n 3px;\n}\n\n.squid-style-container :is(.tw-gap-\\[5px\\]) {\n gap:\n 5px;\n}\n\n.squid-style-container :is(.tw-gap-squid-m) {\n gap:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-gap-squid-s) {\n gap:\n 0.9375rem;\n}\n\n.squid-style-container :is(.tw-gap-squid-xs) {\n gap:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-gap-squid-xxs) {\n gap:\n 0.3125rem;\n}\n\n.squid-style-container :is(.tw-gap-x-squid-xs) {\n -moz-column-gap:\n 0.625rem;\n column-gap:\n 0.625rem;\n}\n\n.squid-style-container :is(.-tw-space-x-4 > :not([hidden]) ~ :not([hidden])) {\n --tw-space-x-reverse:\n 0;\n margin-right:\n calc(-1rem * var(--tw-space-x-reverse));\n margin-left:\n calc(-1rem * calc(1 - var(--tw-space-x-reverse)));\n}\n\n.squid-style-container :is(.-tw-space-x-\\[18px\\] > :not([hidden]) ~ :not([hidden])) {\n --tw-space-x-reverse:\n 0;\n margin-right:\n calc(-18px * var(--tw-space-x-reverse));\n margin-left:\n calc(-18px * calc(1 - var(--tw-space-x-reverse)));\n}\n\n.squid-style-container :is(.-tw-space-x-squid-m > :not([hidden]) ~ :not([hidden])) {\n --tw-space-x-reverse:\n 0;\n margin-right:\n calc(-1.25rem * var(--tw-space-x-reverse));\n margin-left:\n calc(-1.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n\n.squid-style-container :is(.tw-space-x-\\[--image-stack-spacing\\] > :not([hidden]) ~ :not([hidden])) {\n --tw-space-x-reverse:\n 0;\n margin-right:\n calc(var(--image-stack-spacing) * var(--tw-space-x-reverse));\n margin-left:\n calc(var(--image-stack-spacing) * calc(1 - var(--tw-space-x-reverse)));\n}\n\n.squid-style-container :is(.tw-divide-y > :not([hidden]) ~ :not([hidden])) {\n --tw-divide-y-reverse:\n 0;\n border-top-width:\n calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n border-bottom-width:\n calc(1px * var(--tw-divide-y-reverse));\n}\n\n.squid-style-container :is(.tw-divide-material-light-thin > :not([hidden]) ~ :not([hidden])) {\n border-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.tw-self-end) {\n align-self:\n flex-end;\n}\n\n.squid-style-container :is(.tw-self-center) {\n align-self:\n center;\n}\n\n.squid-style-container :is(.tw-self-stretch) {\n align-self:\n stretch;\n}\n\n.squid-style-container :is(.tw-overflow-auto) {\n overflow:\n auto;\n}\n\n.squid-style-container :is(.tw-overflow-hidden) {\n overflow:\n hidden;\n}\n\n.squid-style-container :is(.tw-overflow-y-auto) {\n overflow-y:\n auto;\n}\n\n.squid-style-container :is(.tw-overflow-x-hidden) {\n overflow-x:\n hidden;\n}\n\n.squid-style-container :is(.tw-truncate) {\n overflow:\n hidden;\n text-overflow:\n ellipsis;\n white-space:\n nowrap;\n}\n\n.squid-style-container :is(.tw-whitespace-nowrap) {\n white-space:\n nowrap;\n}\n\n.squid-style-container :is(.tw-text-nowrap) {\n text-wrap:\n nowrap;\n}\n\n.squid-style-container :is(.tw-text-balance) {\n text-wrap:\n balance;\n}\n\n.squid-style-container :is(.\\!tw-rounded-input) {\n border-radius:\n var(--st-border-radius-input) !important;\n}\n\n.squid-style-container :is(.\\!tw-rounded-lg) {\n border-radius:\n 0.5rem !important;\n}\n\n.squid-style-container :is(.\\!tw-rounded-squid-m) {\n border-radius:\n 1.25rem !important;\n}\n\n.squid-style-container :is(.tw-rounded) {\n border-radius:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-rounded-2xl) {\n border-radius:\n 1rem;\n}\n\n.squid-style-container :is(.tw-rounded-3xl) {\n border-radius:\n 1.5rem;\n}\n\n.squid-style-container :is(.tw-rounded-\\[1px\\]) {\n border-radius:\n 1px;\n}\n\n.squid-style-container :is(.tw-rounded-\\[20px\\]) {\n border-radius:\n 20px;\n}\n\n.squid-style-container :is(.tw-rounded-\\[25px\\]) {\n border-radius:\n 25px;\n}\n\n.squid-style-container :is(.tw-rounded-button-lg-primary) {\n border-radius:\n var(--st-border-radius-button-lg-primary);\n}\n\n.squid-style-container :is(.tw-rounded-button-lg-secondary) {\n border-radius:\n var(--st-border-radius-button-lg-secondary);\n}\n\n.squid-style-container :is(.tw-rounded-button-lg-tertiary) {\n border-radius:\n var(--st-border-radius-button-lg-tertiary);\n}\n\n.squid-style-container :is(.tw-rounded-button-md-primary) {\n border-radius:\n var(--st-border-radius-button-md-primary);\n}\n\n.squid-style-container :is(.tw-rounded-button-md-secondary) {\n border-radius:\n var(--st-border-radius-button-md-secondary);\n}\n\n.squid-style-container :is(.tw-rounded-button-md-tertiary) {\n border-radius:\n var(--st-border-radius-button-md-tertiary);\n}\n\n.squid-style-container :is(.tw-rounded-button-sm-primary) {\n border-radius:\n var(--st-border-radius-button-sm-primary);\n}\n\n.squid-style-container :is(.tw-rounded-button-sm-secondary) {\n border-radius:\n var(--st-border-radius-button-sm-secondary);\n}\n\n.squid-style-container :is(.tw-rounded-button-sm-tertiary) {\n border-radius:\n var(--st-border-radius-button-sm-tertiary);\n}\n\n.squid-style-container :is(.tw-rounded-full) {\n border-radius:\n 9999px;\n}\n\n.squid-style-container :is(.tw-rounded-input) {\n border-radius:\n var(--st-border-radius-input);\n}\n\n.squid-style-container :is(.tw-rounded-lg) {\n border-radius:\n 0.5rem;\n}\n\n.squid-style-container :is(.tw-rounded-md) {\n border-radius:\n 0.375rem;\n}\n\n.squid-style-container :is(.tw-rounded-menu-lg) {\n border-radius:\n var(--st-border-radius-menu-lg);\n}\n\n.squid-style-container :is(.tw-rounded-menu-sm) {\n border-radius:\n var(--st-border-radius-menu-sm);\n}\n\n.squid-style-container :is(.tw-rounded-modal) {\n border-radius:\n var(--st-border-radius-modal);\n}\n\n.squid-style-container :is(.tw-rounded-none) {\n border-radius:\n 0px;\n}\n\n.squid-style-container :is(.tw-rounded-sm) {\n border-radius:\n 0.125rem;\n}\n\n.squid-style-container :is(.tw-rounded-squid-l) {\n border-radius:\n 1.875rem;\n}\n\n.squid-style-container :is(.tw-rounded-squid-m) {\n border-radius:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-rounded-squid-s) {\n border-radius:\n 0.9375rem;\n}\n\n.squid-style-container :is(.tw-rounded-squid-xl) {\n border-radius:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-rounded-squid-xs) {\n border-radius:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-rounded-squid-xxl) {\n border-radius:\n 3.75rem;\n}\n\n.squid-style-container :is(.tw-rounded-squid-xxs) {\n border-radius:\n 0.3125rem;\n}\n\n.squid-style-container :is(.tw-rounded-xl) {\n border-radius:\n 0.75rem;\n}\n\n.squid-style-container :is(.tw-rounded-bl-full) {\n border-bottom-left-radius:\n 9999px;\n}\n\n.squid-style-container :is(.tw-rounded-br-full) {\n border-bottom-right-radius:\n 9999px;\n}\n\n.squid-style-container :is(.tw-rounded-tl-full) {\n border-top-left-radius:\n 9999px;\n}\n\n.squid-style-container :is(.tw-rounded-tl-modal) {\n border-top-left-radius:\n var(--st-border-radius-modal);\n}\n\n.squid-style-container :is(.tw-rounded-tr-full) {\n border-top-right-radius:\n 9999px;\n}\n\n.squid-style-container :is(.tw-rounded-tr-modal) {\n border-top-right-radius:\n var(--st-border-radius-modal);\n}\n\n.squid-style-container :is(.tw-border) {\n border-width:\n 1px;\n}\n\n.squid-style-container :is(.tw-border-0) {\n border-width:\n 0px;\n}\n\n.squid-style-container :is(.tw-border-2) {\n border-width:\n 2px;\n}\n\n.squid-style-container :is(.tw-border-y) {\n border-top-width:\n 1px;\n border-bottom-width:\n 1px;\n}\n\n.squid-style-container :is(.tw-border-b) {\n border-bottom-width:\n 1px;\n}\n\n.squid-style-container :is(.tw-border-l-0) {\n border-left-width:\n 0px;\n}\n\n.squid-style-container :is(.tw-border-t) {\n border-top-width:\n 1px;\n}\n\n.squid-style-container :is(.tw-border-t-0) {\n border-top-width:\n 0px;\n}\n\n.squid-style-container :is(.tw-border-t-\\[4px\\]) {\n border-top-width:\n 4px;\n}\n\n.squid-style-container :is(.tw-border-solid) {\n border-style:\n solid;\n}\n\n.squid-style-container :is(.\\!tw-border-transparent) {\n border-color:\n transparent !important;\n}\n\n.squid-style-container :is(.tw-border-grey-500) {\n border-color:\n var(--st-color-grey-500);\n}\n\n.squid-style-container :is(.tw-border-grey-800) {\n border-color:\n var(--st-color-grey-800);\n}\n\n.squid-style-container :is(.tw-border-grey-900) {\n border-color:\n var(--st-color-grey-900);\n}\n\n.squid-style-container :is(.tw-border-material-dark-average) {\n border-color:\n var(--st-color-material-dark-average);\n}\n\n.squid-style-container :is(.tw-border-material-light-thin) {\n border-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.tw-border-transparent) {\n border-color:\n transparent;\n}\n\n.squid-style-container :is(.tw-border-white) {\n --tw-border-opacity:\n 1;\n border-color:\n rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.squid-style-container :is(.tw-border-y-material-light-thin) {\n border-top-color:\n var(--st-color-material-light-thin);\n border-bottom-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.tw-border-b-material-dark-thin) {\n border-bottom-color:\n var(--st-color-material-dark-thin);\n}\n\n.squid-style-container :is(.tw-border-t-material-light-thin) {\n border-top-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.\\!tw-bg-grey-300) {\n background-color:\n var(--st-color-grey-300) !important;\n}\n\n.squid-style-container :is(.\\!tw-bg-grey-500) {\n background-color:\n var(--st-color-grey-500) !important;\n}\n\n.squid-style-container :is(.\\!tw-bg-grey-600) {\n background-color:\n var(--st-color-grey-600) !important;\n}\n\n.squid-style-container :is(.\\!tw-bg-grey-800) {\n background-color:\n var(--st-color-grey-800) !important;\n}\n\n.squid-style-container :is(.\\!tw-bg-grey-900) {\n background-color:\n var(--st-color-grey-900) !important;\n}\n\n.squid-style-container :is(.\\!tw-bg-material-light-thick) {\n background-color:\n var(--st-color-material-light-thick) !important;\n}\n\n.squid-style-container :is(.\\!tw-bg-royal-500) {\n background-color:\n var(--st-color-royal-500) !important;\n}\n\n.squid-style-container :is(.\\!tw-bg-status-negative) {\n background-color:\n var(--st-color-status-negative) !important;\n}\n\n.squid-style-container :is(.\\!tw-bg-status-partial) {\n background-color:\n var(--st-color-status-partial) !important;\n}\n\n.squid-style-container :is(.\\!tw-bg-status-positive) {\n background-color:\n var(--st-color-status-positive) !important;\n}\n\n.squid-style-container :is(.\\!tw-bg-transparent) {\n background-color:\n transparent !important;\n}\n\n.squid-style-container :is(.tw-bg-\\[currentColor\\]) {\n background-color:\n currentColor;\n}\n\n.squid-style-container :is(.tw-bg-animation-bg) {\n background-color:\n var(--st-color-animation-bg);\n}\n\n.squid-style-container :is(.tw-bg-button-lg-primary-bg) {\n background-color:\n var(--st-color-button-lg-primary-bg);\n}\n\n.squid-style-container :is(.tw-bg-button-lg-secondary-bg) {\n background-color:\n var(--st-color-button-lg-secondary-bg);\n}\n\n.squid-style-container :is(.tw-bg-button-lg-tertiary-bg) {\n background-color:\n var(--st-color-button-lg-tertiary-bg);\n}\n\n.squid-style-container :is(.tw-bg-button-md-primary-bg) {\n background-color:\n var(--st-color-button-md-primary-bg);\n}\n\n.squid-style-container :is(.tw-bg-button-md-secondary-bg) {\n background-color:\n var(--st-color-button-md-secondary-bg);\n}\n\n.squid-style-container :is(.tw-bg-button-md-tertiary-bg) {\n background-color:\n var(--st-color-button-md-tertiary-bg);\n}\n\n.squid-style-container :is(.tw-bg-button-sm-primary-bg) {\n background-color:\n var(--st-color-button-sm-primary-bg);\n}\n\n.squid-style-container :is(.tw-bg-button-sm-secondary-bg) {\n background-color:\n var(--st-color-button-sm-secondary-bg);\n}\n\n.squid-style-container :is(.tw-bg-button-sm-tertiary-bg) {\n background-color:\n var(--st-color-button-sm-tertiary-bg);\n}\n\n.squid-style-container :is(.tw-bg-current) {\n background-color:\n currentColor;\n}\n\n.squid-style-container :is(.tw-bg-grey-100) {\n background-color:\n var(--st-color-grey-100);\n}\n\n.squid-style-container :is(.tw-bg-grey-300) {\n background-color:\n var(--st-color-grey-300);\n}\n\n.squid-style-container :is(.tw-bg-grey-500) {\n background-color:\n var(--st-color-grey-500);\n}\n\n.squid-style-container :is(.tw-bg-grey-600) {\n background-color:\n var(--st-color-grey-600);\n}\n\n.squid-style-container :is(.tw-bg-grey-700) {\n background-color:\n var(--st-color-grey-700);\n}\n\n.squid-style-container :is(.tw-bg-grey-800) {\n background-color:\n var(--st-color-grey-800);\n}\n\n.squid-style-container :is(.tw-bg-grey-900) {\n background-color:\n var(--st-color-grey-900);\n}\n\n.squid-style-container :is(.tw-bg-highlight-700) {\n background-color:\n var(--st-color-highlight-700);\n}\n\n.squid-style-container :is(.tw-bg-input-bg) {\n background-color:\n var(--st-color-input-bg);\n}\n\n.squid-style-container :is(.tw-bg-material-dark-average) {\n background-color:\n var(--st-color-material-dark-average);\n}\n\n.squid-style-container :is(.tw-bg-material-dark-thick) {\n background-color:\n var(--st-color-material-dark-thick);\n}\n\n.squid-style-container :is(.tw-bg-material-dark-thin) {\n background-color:\n var(--st-color-material-dark-thin);\n}\n\n.squid-style-container :is(.tw-bg-material-light-average) {\n background-color:\n var(--st-color-material-light-average);\n}\n\n.squid-style-container :is(.tw-bg-material-light-thin) {\n background-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.tw-bg-menu-backdrop) {\n background-color:\n var(--st-color-menu-backdrop);\n}\n\n.squid-style-container :is(.tw-bg-menu-bg) {\n background-color:\n var(--st-color-menu-bg);\n}\n\n.squid-style-container :is(.tw-bg-royal-400) {\n background-color:\n var(--st-color-royal-400);\n}\n\n.squid-style-container :is(.tw-bg-royal-500) {\n background-color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.tw-bg-status-negative) {\n background-color:\n var(--st-color-status-negative);\n}\n\n.squid-style-container :is(.tw-bg-status-partial) {\n background-color:\n var(--st-color-status-partial);\n}\n\n.squid-style-container :is(.tw-bg-status-positive) {\n background-color:\n var(--st-color-status-positive);\n}\n\n.squid-style-container :is(.tw-bg-transparent) {\n background-color:\n transparent;\n}\n\n.squid-style-container :is(.tw-bg-cta-button-light) {\n background-image:\n linear-gradient(0deg, color(display-p3 1 1 1 / 0.00) 0%, color(display-p3 1 1 1 / 0.05) 66%, color(display-p3 1 1 1 / 0.10) 100%);\n}\n\n.squid-style-container :is(.tw-bg-dark-cover) {\n background-image:\n linear-gradient(90deg, var(--st-color-material-dark-thick) 45.4%, transparent 50.85%, var(--st-color-material-dark-thick) 55.61%);\n}\n\n.squid-style-container :is(.tw-bg-gradient-to-b) {\n background-image:\n linear-gradient(to bottom, var(--tw-gradient-stops));\n}\n\n.squid-style-container :is(.tw-bg-gradient-to-t) {\n background-image:\n linear-gradient(to top, var(--tw-gradient-stops));\n}\n\n.squid-style-container :is(.tw-bg-shimmer) {\n background-image:\n linear-gradient(90deg, currentColor 0%, currentColor 50%, rgba(251, 251, 253, 0.4) 57.5%, currentColor 65%, currentColor 100%);\n}\n\n.squid-style-container :is(.tw-bg-shimmer-dark) {\n background-image:\n linear-gradient(90deg, color-mix(in srgb, var(--st-color-grey-900) 40%, transparent) 0%, var(--st-color-grey-900) 10%, color-mix(in srgb, var(--st-color-grey-900) 40%, transparent) 60%);\n}\n\n.squid-style-container :is(.tw-bg-shimmer-light) {\n background-image:\n linear-gradient(90deg, color-mix(in srgb, var(--st-color-grey-100) 40%, transparent) 0%, var(--st-color-grey-100) 10%, color-mix(in srgb, var(--st-color-grey-100) 40%, transparent) 60%);\n}\n\n.squid-style-container :is(.tw-bg-shimmer-overlay-light) {\n background-image:\n linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.7) 50%, transparent 100%);\n}\n\n.squid-style-container :is(.tw-from-current) {\n --tw-gradient-from:\n currentColor var(--tw-gradient-from-position);\n --tw-gradient-to:\n rgb(255 255 255 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from), var(--tw-gradient-to);\n}\n\n.squid-style-container :is(.tw-from-grey-500) {\n --tw-gradient-from:\n var(--st-color-grey-500) var(--tw-gradient-from-position);\n --tw-gradient-to:\n rgb(255 255 255 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from), var(--tw-gradient-to);\n}\n\n.squid-style-container :is(.tw-from-grey-700) {\n --tw-gradient-from:\n var(--st-color-grey-700) var(--tw-gradient-from-position);\n --tw-gradient-to:\n rgb(255 255 255 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from), var(--tw-gradient-to);\n}\n\n.squid-style-container :is(.tw-from-grey-800) {\n --tw-gradient-from:\n var(--st-color-grey-800) var(--tw-gradient-from-position);\n --tw-gradient-to:\n rgb(255 255 255 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from), var(--tw-gradient-to);\n}\n\n.squid-style-container :is(.tw-to-grey-800) {\n --tw-gradient-to:\n var(--st-color-grey-800) var(--tw-gradient-to-position);\n}\n\n.squid-style-container :is(.tw-to-grey-900) {\n --tw-gradient-to:\n var(--st-color-grey-900) var(--tw-gradient-to-position);\n}\n\n.squid-style-container :is(.tw-bg-\\[length\\:200\\%_100\\%\\]) {\n background-size:\n 200% 100%;\n}\n\n.squid-style-container :is(.tw-bg-clip-text) {\n -webkit-background-clip:\n text;\n background-clip:\n text;\n}\n\n.squid-style-container :is(.tw-fill-current) {\n fill:\n currentColor;\n}\n\n.squid-style-container :is(.tw-fill-grey-300) {\n fill:\n var(--st-color-grey-300);\n}\n\n.squid-style-container :is(.tw-stroke-grey-100) {\n stroke:\n var(--st-color-grey-100);\n}\n\n.squid-style-container :is(.tw-stroke-grey-300) {\n stroke:\n var(--st-color-grey-300);\n}\n\n.squid-style-container :is(.tw-stroke-grey-900) {\n stroke:\n var(--st-color-grey-900);\n}\n\n.squid-style-container :is(.tw-object-contain) {\n -o-object-fit:\n contain;\n object-fit:\n contain;\n}\n\n.squid-style-container :is(.tw-object-cover) {\n -o-object-fit:\n cover;\n object-fit:\n cover;\n}\n\n.squid-style-container :is(.\\!tw-p-0) {\n padding:\n 0px !important;\n}\n\n.squid-style-container :is(.\\!tw-p-3) {\n padding:\n 0.75rem !important;\n}\n\n.squid-style-container :is(.tw-p-0) {\n padding:\n 0px;\n}\n\n.squid-style-container :is(.tw-p-0\\.5) {\n padding:\n 0.125rem;\n}\n\n.squid-style-container :is(.tw-p-1) {\n padding:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-p-2) {\n padding:\n 0.5rem;\n}\n\n.squid-style-container :is(.tw-p-\\[3px\\]) {\n padding:\n 3px;\n}\n\n.squid-style-container :is(.tw-p-squid-m) {\n padding:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-p-squid-xs) {\n padding:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-p-squid-xxs) {\n padding:\n 0.3125rem;\n}\n\n.squid-style-container :is(.\\!tw-px-4) {\n padding-left:\n 1rem !important;\n padding-right:\n 1rem !important;\n}\n\n.squid-style-container :is(.\\!tw-py-0) {\n padding-top:\n 0px !important;\n padding-bottom:\n 0px !important;\n}\n\n.squid-style-container :is(.tw-px-0) {\n padding-left:\n 0px;\n padding-right:\n 0px;\n}\n\n.squid-style-container :is(.tw-px-0\\.5) {\n padding-left:\n 0.125rem;\n padding-right:\n 0.125rem;\n}\n\n.squid-style-container :is(.tw-px-1) {\n padding-left:\n 0.25rem;\n padding-right:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-px-2) {\n padding-left:\n 0.5rem;\n padding-right:\n 0.5rem;\n}\n\n.squid-style-container :is(.tw-px-2\\.5) {\n padding-left:\n 0.625rem;\n padding-right:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-px-3) {\n padding-left:\n 0.75rem;\n padding-right:\n 0.75rem;\n}\n\n.squid-style-container :is(.tw-px-4) {\n padding-left:\n 1rem;\n padding-right:\n 1rem;\n}\n\n.squid-style-container :is(.tw-px-5) {\n padding-left:\n 1.25rem;\n padding-right:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-px-\\[3px\\]) {\n padding-left:\n 3px;\n padding-right:\n 3px;\n}\n\n.squid-style-container :is(.tw-px-squid-l) {\n padding-left:\n 1.875rem;\n padding-right:\n 1.875rem;\n}\n\n.squid-style-container :is(.tw-px-squid-m) {\n padding-left:\n 1.25rem;\n padding-right:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-px-squid-s) {\n padding-left:\n 0.9375rem;\n padding-right:\n 0.9375rem;\n}\n\n.squid-style-container :is(.tw-px-squid-xs) {\n padding-left:\n 0.625rem;\n padding-right:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-px-squid-xxs) {\n padding-left:\n 0.3125rem;\n padding-right:\n 0.3125rem;\n}\n\n.squid-style-container :is(.tw-py-0) {\n padding-top:\n 0px;\n padding-bottom:\n 0px;\n}\n\n.squid-style-container :is(.tw-py-0\\.5) {\n padding-top:\n 0.125rem;\n padding-bottom:\n 0.125rem;\n}\n\n.squid-style-container :is(.tw-py-1) {\n padding-top:\n 0.25rem;\n padding-bottom:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-py-1\\.5) {\n padding-top:\n 0.375rem;\n padding-bottom:\n 0.375rem;\n}\n\n.squid-style-container :is(.tw-py-2) {\n padding-top:\n 0.5rem;\n padding-bottom:\n 0.5rem;\n}\n\n.squid-style-container :is(.tw-py-2\\.5) {\n padding-top:\n 0.625rem;\n padding-bottom:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-py-3) {\n padding-top:\n 0.75rem;\n padding-bottom:\n 0.75rem;\n}\n\n.squid-style-container :is(.tw-py-5) {\n padding-top:\n 1.25rem;\n padding-bottom:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-py-\\[1px\\]) {\n padding-top:\n 1px;\n padding-bottom:\n 1px;\n}\n\n.squid-style-container :is(.tw-py-\\[5px\\]) {\n padding-top:\n 5px;\n padding-bottom:\n 5px;\n}\n\n.squid-style-container :is(.tw-py-squid-m) {\n padding-top:\n 1.25rem;\n padding-bottom:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-py-squid-s) {\n padding-top:\n 0.9375rem;\n padding-bottom:\n 0.9375rem;\n}\n\n.squid-style-container :is(.tw-py-squid-xl) {\n padding-top:\n 2.5rem;\n padding-bottom:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-py-squid-xs) {\n padding-top:\n 0.625rem;\n padding-bottom:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-py-squid-xxs) {\n padding-top:\n 0.3125rem;\n padding-bottom:\n 0.3125rem;\n}\n\n.squid-style-container :is(.\\!tw-pt-0) {\n padding-top:\n 0px !important;\n}\n\n.squid-style-container :is(.tw-pb-3) {\n padding-bottom:\n 0.75rem;\n}\n\n.squid-style-container :is(.tw-pb-4) {\n padding-bottom:\n 1rem;\n}\n\n.squid-style-container :is(.tw-pb-8) {\n padding-bottom:\n 2rem;\n}\n\n.squid-style-container :is(.tw-pb-squid-l) {\n padding-bottom:\n 1.875rem;\n}\n\n.squid-style-container :is(.tw-pb-squid-m) {\n padding-bottom:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-pb-squid-s) {\n padding-bottom:\n 0.9375rem;\n}\n\n.squid-style-container :is(.tw-pb-squid-xs) {\n padding-bottom:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-pb-squid-xxs) {\n padding-bottom:\n 0.3125rem;\n}\n\n.squid-style-container :is(.tw-pl-1) {\n padding-left:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-pl-2) {\n padding-left:\n 0.5rem;\n}\n\n.squid-style-container :is(.tw-pl-7) {\n padding-left:\n 1.75rem;\n}\n\n.squid-style-container :is(.tw-pl-\\[40px\\]) {\n padding-left:\n 40px;\n}\n\n.squid-style-container :is(.tw-pl-\\[60px\\]) {\n padding-left:\n 60px;\n}\n\n.squid-style-container :is(.tw-pl-\\[7px\\]) {\n padding-left:\n 7px;\n}\n\n.squid-style-container :is(.tw-pl-squid-l) {\n padding-left:\n 1.875rem;\n}\n\n.squid-style-container :is(.tw-pl-squid-m) {\n padding-left:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-pl-squid-xs) {\n padding-left:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-pl-squid-xxs) {\n padding-left:\n 0.3125rem;\n}\n\n.squid-style-container :is(.tw-pr-1) {\n padding-right:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-pr-2) {\n padding-right:\n 0.5rem;\n}\n\n.squid-style-container :is(.tw-pr-2\\.5) {\n padding-right:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-pr-4) {\n padding-right:\n 1rem;\n}\n\n.squid-style-container :is(.tw-pr-\\[30px\\]) {\n padding-right:\n 30px;\n}\n\n.squid-style-container :is(.tw-pr-\\[40px\\]) {\n padding-right:\n 40px;\n}\n\n.squid-style-container :is(.tw-pr-\\[70px\\]) {\n padding-right:\n 70px;\n}\n\n.squid-style-container :is(.tw-pr-squid-m) {\n padding-right:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-pr-squid-xl) {\n padding-right:\n 2.5rem;\n}\n\n.squid-style-container :is(.tw-pr-squid-xs) {\n padding-right:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-pt-1) {\n padding-top:\n 0.25rem;\n}\n\n.squid-style-container :is(.tw-pt-2) {\n padding-top:\n 0.5rem;\n}\n\n.squid-style-container :is(.tw-pt-3) {\n padding-top:\n 0.75rem;\n}\n\n.squid-style-container :is(.tw-pt-\\[1px\\]) {\n padding-top:\n 1px;\n}\n\n.squid-style-container :is(.tw-pt-squid-m) {\n padding-top:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-pt-squid-xs) {\n padding-top:\n 0.625rem;\n}\n\n.squid-style-container :is(.tw-pt-squid-xxs) {\n padding-top:\n 0.3125rem;\n}\n\n.squid-style-container :is(.tw-text-left) {\n text-align:\n left;\n}\n\n.squid-style-container :is(.tw-text-center) {\n text-align:\n center;\n}\n\n.squid-style-container :is(.tw-text-right) {\n text-align:\n right;\n}\n\n.squid-style-container :is(.tw-font-squid-main) {\n font-family:\n var(--st-font-family-squid-main);\n}\n\n.squid-style-container :is(.tw-text-2xl) {\n font-size:\n 1.5rem;\n line-height:\n 2rem;\n}\n\n.squid-style-container :is(.tw-text-5xl) {\n font-size:\n 3rem;\n line-height:\n 1;\n}\n\n.squid-style-container :is(.tw-text-\\[4\\.40625rem\\]) {\n font-size:\n 4.40625rem;\n}\n\n.squid-style-container :is(.tw-text-base) {\n font-size:\n 1rem;\n line-height:\n 1.5rem;\n}\n\n.squid-style-container :is(.tw-text-body-large) {\n font-size:\n var(--st-font-size-body-large);\n}\n\n.squid-style-container :is(.tw-text-body-medium) {\n font-size:\n var(--st-font-size-body-medium);\n}\n\n.squid-style-container :is(.tw-text-body-small) {\n font-size:\n var(--st-font-size-body-small);\n}\n\n.squid-style-container :is(.tw-text-caption) {\n font-size:\n var(--st-font-size-caption);\n}\n\n.squid-style-container :is(.tw-text-heading-large) {\n font-size:\n var(--st-font-size-heading-large);\n}\n\n.squid-style-container :is(.tw-text-heading-medium) {\n font-size:\n var(--st-font-size-heading-medium);\n}\n\n.squid-style-container :is(.tw-text-heading-small) {\n font-size:\n var(--st-font-size-heading-small);\n}\n\n.squid-style-container :is(.tw-text-lg) {\n font-size:\n 1.125rem;\n line-height:\n 1.75rem;\n}\n\n.squid-style-container :is(.tw-text-sm) {\n font-size:\n 0.875rem;\n line-height:\n 1.25rem;\n}\n\n.squid-style-container :is(.tw-text-xs) {\n font-size:\n 0.75rem;\n line-height:\n 1rem;\n}\n\n.squid-style-container :is(.\\!tw-font-bold) {\n font-weight:\n 700 !important;\n}\n\n.squid-style-container :is(.\\!tw-font-medium) {\n font-weight:\n 500 !important;\n}\n\n.squid-style-container :is(.tw-font-body-large) {\n font-weight:\n var(--st-font-weight-body-large);\n}\n\n.squid-style-container :is(.tw-font-body-medium) {\n font-weight:\n var(--st-font-weight-body-medium);\n}\n\n.squid-style-container :is(.tw-font-body-small) {\n font-weight:\n var(--st-font-weight-body-small);\n}\n\n.squid-style-container :is(.tw-font-caption) {\n font-weight:\n var(--st-font-weight-caption);\n}\n\n.squid-style-container :is(.tw-font-heading-large) {\n font-weight:\n var(--st-font-weight-heading-large);\n}\n\n.squid-style-container :is(.tw-font-heading-medium) {\n font-weight:\n var(--st-font-weight-heading-medium);\n}\n\n.squid-style-container :is(.tw-font-heading-small) {\n font-weight:\n var(--st-font-weight-heading-small);\n}\n\n.squid-style-container :is(.tw-font-medium) {\n font-weight:\n 500;\n}\n\n.squid-style-container :is(.tw-normal-case) {\n text-transform:\n none;\n}\n\n.squid-style-container :is(.\\!tw-leading-\\[10px\\]) {\n line-height:\n 10px !important;\n}\n\n.squid-style-container :is(.\\!tw-leading-\\[13px\\]) {\n line-height:\n 13px !important;\n}\n\n.squid-style-container :is(.\\!tw-leading-\\[16px\\]) {\n line-height:\n 16px !important;\n}\n\n.squid-style-container :is(.\\!tw-leading-\\[17px\\]) {\n line-height:\n 17px !important;\n}\n\n.squid-style-container :is(.\\!tw-leading-\\[18px\\]) {\n line-height:\n 18px !important;\n}\n\n.squid-style-container :is(.\\!tw-leading-\\[1\\]) {\n line-height:\n 1 !important;\n}\n\n.squid-style-container :is(.\\!tw-leading-\\[25px\\]) {\n line-height:\n 25px !important;\n}\n\n.squid-style-container :is(.\\!tw-leading-\\[9px\\]) {\n line-height:\n 9px !important;\n}\n\n.squid-style-container :is(.tw-leading-3) {\n line-height:\n .75rem;\n}\n\n.squid-style-container :is(.tw-leading-6) {\n line-height:\n 1.5rem;\n}\n\n.squid-style-container :is(.tw-leading-\\[0\\.7\\]) {\n line-height:\n 0.7;\n}\n\n.squid-style-container :is(.tw-leading-\\[0\\]) {\n line-height:\n 0;\n}\n\n.squid-style-container :is(.tw-leading-\\[10px\\]) {\n line-height:\n 10px;\n}\n\n.squid-style-container :is(.tw-leading-\\[13px\\]) {\n line-height:\n 13px;\n}\n\n.squid-style-container :is(.tw-leading-\\[1\\]) {\n line-height:\n 1;\n}\n\n.squid-style-container :is(.tw-leading-\\[inherit\\]) {\n line-height:\n inherit;\n}\n\n.squid-style-container :is(.tw-leading-body-large) {\n line-height:\n 39.34px;\n}\n\n.squid-style-container :is(.tw-leading-body-medium) {\n line-height:\n 31.5px;\n}\n\n.squid-style-container :is(.tw-leading-body-small) {\n line-height:\n 25.62px;\n}\n\n.squid-style-container :is(.tw-leading-caption) {\n line-height:\n 19.6px;\n}\n\n.squid-style-container :is(.tw-leading-heading-large) {\n line-height:\n 66.97px;\n}\n\n.squid-style-container :is(.tw-leading-heading-medium) {\n line-height:\n 49.3px;\n}\n\n.squid-style-container :is(.tw-leading-heading-small) {\n line-height:\n 38.5px;\n}\n\n.squid-style-container :is(.tw-tracking-body-large) {\n letter-spacing:\n -0.843px;\n}\n\n.squid-style-container :is(.tw-tracking-body-medium) {\n letter-spacing:\n -0.675px;\n}\n\n.squid-style-container :is(.tw-tracking-body-small) {\n letter-spacing:\n -0.366px;\n}\n\n.squid-style-container :is(.tw-tracking-heading-large) {\n letter-spacing:\n -3.525px;\n}\n\n.squid-style-container :is(.tw-tracking-heading-medium) {\n letter-spacing:\n -2.465px;\n}\n\n.squid-style-container :is(.tw-tracking-heading-small) {\n letter-spacing:\n -1.05px;\n}\n\n.squid-style-container :is(.\\!tw-text-\\[transparent\\]) {\n color:\n transparent !important;\n}\n\n.squid-style-container :is(.\\!tw-text-grey-500) {\n color:\n var(--st-color-grey-500) !important;\n}\n\n.squid-style-container :is(.\\!tw-text-grey-600) {\n color:\n var(--st-color-grey-600) !important;\n}\n\n.squid-style-container :is(.\\!tw-text-grey-800) {\n color:\n var(--st-color-grey-800) !important;\n}\n\n.squid-style-container :is(.\\!tw-text-grey-900) {\n color:\n var(--st-color-grey-900) !important;\n}\n\n.squid-style-container :is(.\\!tw-text-material-light-thick) {\n color:\n var(--st-color-material-light-thick) !important;\n}\n\n.squid-style-container :is(.tw-text-button-lg-primary-text) {\n color:\n var(--st-color-button-lg-primary-text);\n}\n\n.squid-style-container :is(.tw-text-button-lg-secondary-text) {\n color:\n var(--st-color-button-lg-secondary-text);\n}\n\n.squid-style-container :is(.tw-text-button-lg-tertiary-text) {\n color:\n var(--st-color-button-lg-tertiary-text);\n}\n\n.squid-style-container :is(.tw-text-button-md-primary-text) {\n color:\n var(--st-color-button-md-primary-text);\n}\n\n.squid-style-container :is(.tw-text-button-md-secondary-text) {\n color:\n var(--st-color-button-md-secondary-text);\n}\n\n.squid-style-container :is(.tw-text-button-md-tertiary-text) {\n color:\n var(--st-color-button-md-tertiary-text);\n}\n\n.squid-style-container :is(.tw-text-button-sm-primary-text) {\n color:\n var(--st-color-button-sm-primary-text);\n}\n\n.squid-style-container :is(.tw-text-button-sm-secondary-text) {\n color:\n var(--st-color-button-sm-secondary-text);\n}\n\n.squid-style-container :is(.tw-text-button-sm-tertiary-text) {\n color:\n var(--st-color-button-sm-tertiary-text);\n}\n\n.squid-style-container :is(.tw-text-grey-100) {\n color:\n var(--st-color-grey-100);\n}\n\n.squid-style-container :is(.tw-text-grey-200) {\n color:\n var(--st-color-grey-200);\n}\n\n.squid-style-container :is(.tw-text-grey-300) {\n color:\n var(--st-color-grey-300);\n}\n\n.squid-style-container :is(.tw-text-grey-400) {\n color:\n var(--st-color-grey-400);\n}\n\n.squid-style-container :is(.tw-text-grey-500) {\n color:\n var(--st-color-grey-500);\n}\n\n.squid-style-container :is(.tw-text-grey-600) {\n color:\n var(--st-color-grey-600);\n}\n\n.squid-style-container :is(.tw-text-grey-700) {\n color:\n var(--st-color-grey-700);\n}\n\n.squid-style-container :is(.tw-text-grey-900) {\n color:\n var(--st-color-grey-900);\n}\n\n.squid-style-container :is(.tw-text-input-placeholder) {\n color:\n var(--st-color-input-placeholder);\n}\n\n.squid-style-container :is(.tw-text-input-text) {\n color:\n var(--st-color-input-text);\n}\n\n.squid-style-container :is(.tw-text-material-light-average) {\n color:\n var(--st-color-material-light-average);\n}\n\n.squid-style-container :is(.tw-text-material-light-thick) {\n color:\n var(--st-color-material-light-thick);\n}\n\n.squid-style-container :is(.tw-text-material-light-thin) {\n color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.tw-text-menu-text) {\n color:\n var(--st-color-menu-text);\n}\n\n.squid-style-container :is(.tw-text-royal-400) {\n color:\n var(--st-color-royal-400);\n}\n\n.squid-style-container :is(.tw-text-royal-500) {\n color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.tw-text-status-negative) {\n color:\n var(--st-color-status-negative);\n}\n\n.squid-style-container :is(.tw-text-status-partial) {\n color:\n var(--st-color-status-partial);\n}\n\n.squid-style-container :is(.tw-text-status-positive) {\n color:\n var(--st-color-status-positive);\n}\n\n.squid-style-container :is(.tw-text-transparent) {\n color:\n transparent;\n}\n\n.squid-style-container :is(.tw-placeholder-grey-100)::-moz-placeholder {\n color:\n var(--st-color-grey-100);\n}\n\n.squid-style-container :is(.tw-placeholder-grey-100)::placeholder {\n color:\n var(--st-color-grey-100);\n}\n\n.squid-style-container :is(.tw-placeholder-material-light-average)::-moz-placeholder {\n color:\n var(--st-color-material-light-average);\n}\n\n.squid-style-container :is(.tw-placeholder-material-light-average)::placeholder {\n color:\n var(--st-color-material-light-average);\n}\n\n.squid-style-container :is(.tw-placeholder-royal-500)::-moz-placeholder {\n color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.tw-placeholder-royal-500)::placeholder {\n color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.\\!tw-opacity-100) {\n opacity:\n 1 !important;\n}\n\n.squid-style-container :is(.tw-opacity-0) {\n opacity:\n 0;\n}\n\n.squid-style-container :is(.tw-opacity-100) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.tw-opacity-33) {\n opacity:\n 0.33;\n}\n\n.squid-style-container :is(.tw-opacity-40) {\n opacity:\n 0.4;\n}\n\n.squid-style-container :is(.tw-opacity-50) {\n opacity:\n 0.5;\n}\n\n.squid-style-container :is(.tw-opacity-66) {\n opacity:\n 0.66;\n}\n\n.squid-style-container :is(.tw-shadow-container) {\n --tw-shadow:\n var(--st-box-shadow-container);\n --tw-shadow-colored:\n var(--st-box-shadow-container);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.tw-shadow-cta-button-light) {\n --tw-shadow:\n 0 1px 4px 1px color(display-p3 1 1 1 / 0.30) inset, 0 1px 3px 0 color(display-p3 0 0 0 / 0.05), 0 2px 5px 0 color(display-p3 0 0 0 / 0.08);\n --tw-shadow-colored:\n inset 0 1px 4px 1px var(--tw-shadow-color), 0 1px 3px 0 var(--tw-shadow-color), 0 2px 5px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.tw-shadow-elevation-dark-1) {\n --tw-shadow:\n 0px 1px 2px 0px rgba(0, 0, 0, 0.15);\n --tw-shadow-colored:\n 0px 1px 2px 0px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.tw-shadow-elevation-light-1) {\n --tw-shadow:\n 0px 1px 2px 0px #0000001A;\n --tw-shadow-colored:\n 0px 1px 2px 0px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.tw-shadow-elevation-light-2) {\n --tw-shadow:\n 0px 2px 5px 1px rgba(0, 0, 0, 0.10), 0px 5px 20px -1px rgba(0, 0, 0, 0.10);\n --tw-shadow-colored:\n 0px 2px 5px 1px var(--tw-shadow-color), 0px 5px 20px -1px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.tw-shadow-elevation-light-3) {\n --tw-shadow:\n 0px 2px 4px 0px rgba(0, 0, 0, 0.10), 0px 5px 50px -1px rgba(0, 0, 0, 0.20);\n --tw-shadow-colored:\n 0px 2px 4px 0px var(--tw-shadow-color), 0px 5px 50px -1px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.tw-shadow-icon-light) {\n --tw-shadow:\n 0 0 2px 1px color(display-p3 0 0 0 / 0.05), 0 1px 2px 0 color(display-p3 0 0 0 / 0.05), 0 2px 8px 0 color(display-p3 0 0 0 / 0.10);\n --tw-shadow-colored:\n 0 0 2px 1px var(--tw-shadow-color), 0 1px 2px 0 var(--tw-shadow-color), 0 2px 8px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.tw-shadow-widget-card-light) {\n --tw-shadow:\n 0 0 1px 1px color(display-p3 0 0 0 / 0.10), 0 8px 20px 0 color(display-p3 0 0 0 / 0.05), 0 16px 40px -2px color(display-p3 0 0 0 / 0.05);\n --tw-shadow-colored:\n 0 0 1px 1px var(--tw-shadow-color), 0 8px 20px 0 var(--tw-shadow-color), 0 16px 40px -2px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.tw-outline-none) {\n outline:\n 2px solid transparent;\n outline-offset:\n 2px;\n}\n\n.squid-style-container :is(.tw-outline) {\n outline-style:\n solid;\n}\n\n.squid-style-container :is(.tw-outline-1) {\n outline-width:\n 1px;\n}\n\n.squid-style-container :is(.tw-outline-2) {\n outline-width:\n 2px;\n}\n\n.squid-style-container :is(.tw-outline-\\[0\\.25rem\\]) {\n outline-width:\n 0.25rem;\n}\n\n.squid-style-container :is(.-tw-outline-offset-1) {\n outline-offset:\n -1px;\n}\n\n.squid-style-container :is(.-tw-outline-offset-2) {\n outline-offset:\n -2px;\n}\n\n.squid-style-container :is(.-tw-outline-offset-\\[1px\\]) {\n outline-offset:\n -1px;\n}\n\n.squid-style-container :is(.tw-outline-offset-2) {\n outline-offset:\n 2px;\n}\n\n.squid-style-container :is(.tw-outline-offset-\\[0\\.375rem\\]) {\n outline-offset:\n 0.375rem;\n}\n\n.squid-style-container :is(.\\!tw-outline-button-md-tertiary-bg) {\n outline-color:\n var(--st-color-button-md-tertiary-bg) !important;\n}\n\n.squid-style-container :is(.\\!tw-outline-material-dark-average) {\n outline-color:\n var(--st-color-material-dark-average) !important;\n}\n\n.squid-style-container :is(.\\!tw-outline-status-negative) {\n outline-color:\n var(--st-color-status-negative) !important;\n}\n\n.squid-style-container :is(.tw-outline-grey-900) {\n outline-color:\n var(--st-color-grey-900);\n}\n\n.squid-style-container :is(.tw-outline-material-light-thick) {\n outline-color:\n var(--st-color-material-light-thick);\n}\n\n.squid-style-container :is(.tw-outline-material-light-thin) {\n outline-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.tw-outline-royal-500) {\n outline-color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.tw-outline-status-negative) {\n outline-color:\n var(--st-color-status-negative);\n}\n\n.squid-style-container :is(.tw-blur-sm) {\n --tw-blur:\n blur(4px);\n filter:\n var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.squid-style-container :is(.tw-backdrop-blur-2xl) {\n --tw-backdrop-blur:\n blur(40px);\n backdrop-filter:\n var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n.squid-style-container :is(.tw-backdrop-blur\\/10) {\n --tw-backdrop-blur:\n blur(10px);\n backdrop-filter:\n var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n.squid-style-container :is(.tw-transition-\\[border-width\\]) {\n transition-property:\n border-width;\n transition-timing-function:\n cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration:\n 150ms;\n}\n\n.squid-style-container :is(.tw-transition-\\[width\\,height\\]) {\n transition-property:\n width,height;\n transition-timing-function:\n cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration:\n 150ms;\n}\n\n.squid-style-container :is(.tw-transition-all) {\n transition-property:\n all;\n transition-timing-function:\n cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration:\n 150ms;\n}\n\n.squid-style-container :is(.tw-transition-colors) {\n transition-property:\n color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function:\n cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration:\n 150ms;\n}\n\n.squid-style-container :is(.tw-transition-opacity) {\n transition-property:\n opacity;\n transition-timing-function:\n cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration:\n 150ms;\n}\n\n.squid-style-container :is(.tw-transition-transform) {\n transition-property:\n transform;\n transition-timing-function:\n cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration:\n 150ms;\n}\n\n.squid-style-container :is(.tw-duration-1000) {\n transition-duration:\n 1000ms;\n}\n\n.squid-style-container :is(.tw-duration-150) {\n transition-duration:\n 150ms;\n}\n\n.squid-style-container :is(.tw-duration-200) {\n transition-duration:\n 200ms;\n}\n\n.squid-style-container :is(.tw-duration-300) {\n transition-duration:\n 300ms;\n}\n\n.squid-style-container :is(.tw-duration-generic) {\n transition-duration:\n 300;\n}\n\n.squid-style-container :is(.tw-will-change-transform) {\n will-change:\n transform;\n}\n\n.squid-style-container :is(.tw-focus-visible-within-outline:has(:focus-visible)) {\n outline-style:\n solid;\n outline-width:\n 2px;\n outline-color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.tw-scrollbar-hidden) {\n scrollbar-width:\n none;\n}\n\n.squid-style-container :is(.tw-highlight-adjacent:has(button:hover)>button:first-child) {\n background-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.tw-highlight-adjacent:has(*:hover) .tw-hide-on-parent-hover) {\n opacity:\n 0;\n}\n\n.squid-style-container :is(.tw-h-d-screen) {\n height:\n 100dvh;\n}\n\n.squid-style-container :is(.tw-mask) {\n -webkit-mask-image:\n linear-gradient(to bottom, transparent 0%, black 20%, black 80%, transparent 100%), linear-gradient(to right, transparent 0%, black 8px, black calc(100% - 8px), transparent 100%);\n mask-image:\n linear-gradient(to bottom, transparent 0%, black 20%, black 80%, transparent 100%), linear-gradient(to right, transparent 0%, black 8px, black calc(100% - 8px), transparent 100%);\n -webkit-mask-composite:\n source-in, xor;\n mask-composite:\n intersect;\n}\n\n.squid-style-container :is(.tw-assets-drip-mask) {\n clip-path:\n path(\"M15 69C11.1612 69 7.32233 67.5355 4.3934 64.6066C1.46448 61.6777 1.65526e-05 57.8389 1.40518e-10 54.0001C-1.65518e-05 50.1612 1.46445 46.3224 4.3934 43.3934C4.78897 42.9978 5.18905 42.6091 5.58521 42.2242C8.12297 39.7584 10.5 37.4488 10.5 34.5C10.5 31.5512 8.12297 29.2416 5.58521 26.7758C5.18905 26.3909 4.78897 26.0022 4.3934 25.6066C1.46445 22.6776 -1.65518e-05 18.8388 1.4052e-10 14.9999V14.9999C1.40521e-10 6.7157 6.71576 0 15 0V0C23.2842 0 30 6.7157 30 14.9999V14.9999C30 18.8388 28.5356 22.6776 25.6066 25.6066C25.2128 26.0001 24.8146 26.387 24.4201 26.7701C21.8805 29.237 19.5 31.5492 19.5 34.5C19.5 37.4508 21.8805 39.763 24.4201 42.2299C24.8146 42.613 25.2128 42.9999 25.6066 43.3934C28.5356 46.3224 30 50.1612 30 54.0001C30 57.8389 28.5355 61.6777 25.6066 64.6066C22.6777 67.5355 18.8388 69 15 69Z\");\n}\n\n.squid-style-container :is(.tw-assets-drip-horizontal-mask) {\n clip-path:\n path(\"M0 20C0 14.8816 1.95262 9.76311 5.85786 5.85786C9.76309 1.95264 14.8815 2.20702e-05 19.9999 1.87356e-10C25.1184 -2.20691e-05 30.2369 1.9526 34.1421 5.85786C34.6696 6.38529 35.1879 6.91873 35.7011 7.44695C38.9888 10.8306 42.0683 14 46 14C49.9317 14 53.0112 10.8306 56.2989 7.44695C56.8121 6.91873 57.3304 6.38529 57.8579 5.85786C61.7631 1.9526 66.8816 -2.20691e-05 72.0001 1.87356e-10V1.87356e-10C83.0457 1.87356e-10 92 8.95436 92 20V20C92 31.0456 83.0457 40 72.0001 40V40C66.8816 40 61.7631 38.0474 57.8579 34.1421C57.3331 33.6171 56.8174 33.0861 56.3065 32.5602C53.0174 29.174 49.9344 26 46 26C42.0656 26 38.9826 29.174 35.6935 32.5602C35.1826 33.0861 34.6669 33.6171 34.1421 34.1421C30.2369 38.0474 25.1184 40 19.9999 40C14.8815 40 9.76309 38.0474 5.85786 34.1421C1.95262 30.2369 0 25.1184 0 20Z\");\n}\n\n.squid-style-container :is(.tw-assets-drip-border-mask) {\n clip-path:\n path(\"M31 16C31 7.71576 24.2842 1 16 1C7.71576 1 1 7.71576 1 16L1.00391 16.3594C1.09246 20.0776 2.55603 23.7689 5.39355 26.6064C5.789 27.0019 6.18891 27.3906 6.58496 27.7754C9.12272 30.2412 11.5 32.5512 11.5 35.5C11.5 38.4488 9.12272 40.7588 6.58496 43.2246L5.39355 44.3936L5.12305 44.6709C2.37442 47.5625 1 51.2812 1 55C1.00002 58.8388 2.46464 62.6775 5.39355 65.6064C8.32249 68.5354 12.1612 70 16 70C19.8388 70 23.6775 68.5354 26.6064 65.6064C29.5354 62.6775 31 58.8388 31 55C31 51.2812 29.6256 47.5625 26.877 44.6709L26.6064 44.3936C26.2127 44 25.8143 43.6126 25.4199 43.2295C22.8804 40.7627 20.5 38.4507 20.5 35.5C20.5 32.918 22.3225 30.825 24.4795 28.6895L25.4199 27.7705C25.8143 27.3874 26.2127 27 26.6064 26.6064C29.444 23.7689 30.9075 20.0776 30.9961 16.3594L31 16ZM31.9951 16.3838C31.9005 20.3483 30.3398 24.2871 27.3135 27.3135C26.9139 27.7128 26.5107 28.1051 26.1172 28.4873C24.8318 29.7358 23.6688 30.8696 22.8164 32.042C21.9748 33.1997 21.5 34.3116 21.5 35.5C21.5 36.6884 21.9748 37.8003 22.8164 38.958C23.6688 40.1304 24.8318 41.2642 26.1172 42.5127C26.5107 42.8949 26.9139 43.2872 27.3135 43.6865C30.4375 46.8105 32 50.9068 32 55C32 59.0932 30.4375 63.1895 27.3135 66.3135C24.1895 69.4375 20.0932 71 16 71C11.9068 71 7.81052 69.4375 4.68652 66.3135C1.56254 63.1895 1.76493e-05 59.0932 0 55C9.20296e-07 50.9068 1.56253 46.8105 4.68652 43.6865C5.08802 43.285 5.49335 42.891 5.88867 42.5068C7.17298 41.259 8.33434 40.1264 9.18555 38.9551C10.0261 37.7984 10.5 36.6875 10.5 35.5C10.5 34.3125 10.0261 33.2016 9.18555 32.0449C8.33434 30.8736 7.17298 29.741 5.88867 28.4932C5.49335 28.109 5.08802 27.715 4.68652 27.3135C1.56253 24.1895 9.20364e-07 20.0932 0 16C0 7.16347 7.16349 0 16 0C24.8365 0 32 7.16347 32 16L31.9951 16.3838Z\");\n}\n\n.squid-style-container :is(.tw-assets-drip-border-horizontal-mask) {\n clip-path:\n path(\"M0 21C0 15.6272 2.05008 10.2507 6.15039 6.15039C10.2507 2.0501 15.6272 2.31668e-05 21 0C26.3728 7.38704e-07 31.7493 2.05008 35.8496 6.15039C36.3829 6.68367 36.9056 7.22269 37.418 7.75C39.0769 9.45736 40.6078 11.0285 42.1973 12.1836C43.772 13.3279 45.321 14 47 14V15C43.5599 15 40.7723 12.5735 37.9268 9.7002L36.7012 8.44727C36.4446 8.18317 36.1864 7.91765 35.9268 7.65234L35.1426 6.85742C31.3593 3.07414 26.4369 1.12401 21.4795 1.00586L21 1C15.8816 1.00002 10.7626 2.9522 6.85742 6.85742C2.95218 10.7627 1 15.8816 1 21C1 26.1184 2.95218 31.2373 6.85742 35.1426C10.6407 38.9259 15.5631 40.876 20.5205 40.9941L21 41C25.9584 41 30.917 39.1678 34.7725 35.5029L35.1426 35.1426C35.4049 34.8801 35.6645 34.6156 35.9229 34.3516L36.6934 33.5605C39.9825 30.1743 43.0656 27 47 27C50.9344 27 54.0175 30.1743 57.3066 33.5605C57.8174 34.0864 58.3328 34.6176 58.8574 35.1426C62.7627 39.0478 67.8816 41 73 41C84.0456 41 93 32.0456 93 21C93 9.95436 84.0456 1 73 1C67.8816 1 62.7627 2.95218 58.8574 6.85742C58.33 7.38484 57.8121 7.91905 57.2988 8.44727L56.0732 9.7002C53.2277 12.5735 50.4401 15 47 15V14C48.679 14 50.228 13.3279 51.8027 12.1836C53.3922 11.0285 54.9231 9.45736 56.582 7.75C57.0944 7.22269 57.6171 6.68367 58.1504 6.15039C62.2507 2.05008 67.6272 1.22412e-06 73 0C84.5979 0 94 9.40208 94 21C94 32.4167 84.8895 41.7057 73.542 41.9932L73 42C67.6272 42 62.2507 39.9499 58.1504 35.8496V35.8486C57.6199 35.3178 57.0988 34.7818 56.5889 34.2568C54.9294 32.5484 53.3983 30.9758 51.8076 29.8193C50.2313 28.6734 48.6803 28 47 28C45.3197 28 43.7687 28.6734 42.1924 29.8193C40.6017 30.9758 39.0706 32.5484 37.4111 34.2568C36.9012 34.7818 36.3801 35.3178 35.8496 35.8486V35.8496C31.7493 39.9499 26.3728 42 21 42C15.6272 42 10.2507 39.9499 6.15039 35.8496C2.05008 31.7493 0 26.3728 0 21Z\");\n}\n\n.squid-style-container :is(.tw-assets-button-mask) {\n -webkit-mask-image:\n url(\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzIiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA3MiA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMjBDMCAxNC44ODE2IDEuOTUyNjIgOS43NjMxMSA1Ljg1Nzg2IDUuODU3ODZDOS43NjMwOSAxLjk1MjY0IDE0Ljg4MTUgMi4yMDcwMmUtMDUgMTkuOTk5OSAxLjg3MzU2ZS0xMEMyNS4xMTg0IC0yLjIwNjkxZS0wNSAzMC4yMzY5IDEuOTUyNiAzNC4xNDIxIDUuODU3ODZDMzQuNjY5NiA2LjM4NTI5IDM1LjE4NzkgNi45MTg3MyAzNS43MDExIDcuNDQ2OTVDMzguOTg4OCAxMC44MzA2IDQyLjA2ODMgMTQgNDYgMTRDNDkuOTMxNyAxNCA1My4wMTEyIDEwLjgzMDYgNTYuMjk4OSA3LjQ0Njk1QzU2LjgxMjEgNi45MTg3MyA1Ny4zMzA0IDYuMzg1MjkgNTcuODU3OSA1Ljg1Nzg2QzYxLjc2MzEgMS45NTI2IDY2Ljg4MTYgLTIuMjA2OTFlLTA1IDcyLjAwMDEgMS44NzM1NmUtMTBWNDBDNjYuODgxNiA0MCA2MS43NjMxIDM4LjA0NzQgNTcuODU3OSAzNC4xNDIxQzU3LjMzMzEgMzMuNjE3MSA1Ni44MTc0IDMzLjA4NjEgNTYuMzA2NSAzMi41NjAyQzUzLjAxNzQgMjkuMTc0IDQ5LjkzNDQgMjYgNDYgMjZDNDIuMDY1NiAyNiAzOC45ODI2IDI5LjE3NCAzNS42OTM1IDMyLjU2MDJDMzUuMTgyNiAzMy4wODYxIDM0LjY2NjkgMzMuNjE3MSAzNC4xNDIxIDM0LjE0MjFDMzAuMjM2OSAzOC4wNDc0IDI1LjExODQgNDAgMTkuOTk5OSA0MEMxNC44ODE1IDQwIDkuNzYzMDkgMzguMDQ3NCA1Ljg1Nzg2IDM0LjE0MjFDMS45NTI2MiAzMC4yMzY5IDAgMjUuMTE4NCAwIDIwWiIgZmlsbD0iI0ZCRkJGRCIgc3R5bGU9ImZpbGw6I0ZCRkJGRDtmaWxsOmNvbG9yKGRpc3BsYXktcDMgMC45ODQwIDAuOTg2MSAwLjk5MDQpO2ZpbGwtb3BhY2l0eToxOyIvPgo8L3N2Zz4=\");\n mask-image:\n url(\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzIiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA3MiA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMjBDMCAxNC44ODE2IDEuOTUyNjIgOS43NjMxMSA1Ljg1Nzg2IDUuODU3ODZDOS43NjMwOSAxLjk1MjY0IDE0Ljg4MTUgMi4yMDcwMmUtMDUgMTkuOTk5OSAxLjg3MzU2ZS0xMEMyNS4xMTg0IC0yLjIwNjkxZS0wNSAzMC4yMzY5IDEuOTUyNiAzNC4xNDIxIDUuODU3ODZDMzQuNjY5NiA2LjM4NTI5IDM1LjE4NzkgNi45MTg3MyAzNS43MDExIDcuNDQ2OTVDMzguOTg4OCAxMC44MzA2IDQyLjA2ODMgMTQgNDYgMTRDNDkuOTMxNyAxNCA1My4wMTEyIDEwLjgzMDYgNTYuMjk4OSA3LjQ0Njk1QzU2LjgxMjEgNi45MTg3MyA1Ny4zMzA0IDYuMzg1MjkgNTcuODU3OSA1Ljg1Nzg2QzYxLjc2MzEgMS45NTI2IDY2Ljg4MTYgLTIuMjA2OTFlLTA1IDcyLjAwMDEgMS44NzM1NmUtMTBWNDBDNjYuODgxNiA0MCA2MS43NjMxIDM4LjA0NzQgNTcuODU3OSAzNC4xNDIxQzU3LjMzMzEgMzMuNjE3MSA1Ni44MTc0IDMzLjA4NjEgNTYuMzA2NSAzMi41NjAyQzUzLjAxNzQgMjkuMTc0IDQ5LjkzNDQgMjYgNDYgMjZDNDIuMDY1NiAyNiAzOC45ODI2IDI5LjE3NCAzNS42OTM1IDMyLjU2MDJDMzUuMTgyNiAzMy4wODYxIDM0LjY2NjkgMzMuNjE3MSAzNC4xNDIxIDM0LjE0MjFDMzAuMjM2OSAzOC4wNDc0IDI1LjExODQgNDAgMTkuOTk5OSA0MEMxNC44ODE1IDQwIDkuNzYzMDkgMzguMDQ3NCA1Ljg1Nzg2IDM0LjE0MjFDMS45NTI2MiAzMC4yMzY5IDAgMjUuMTE4NCAwIDIwWiIgZmlsbD0iI0ZCRkJGRCIgc3R5bGU9ImZpbGw6I0ZCRkJGRDtmaWxsOmNvbG9yKGRpc3BsYXktcDMgMC45ODQwIDAuOTg2MSAwLjk5MDQpO2ZpbGwtb3BhY2l0eToxOyIvPgo8L3N2Zz4=\");\n -webkit-mask-repeat:\n no-repeat;\n mask-repeat:\n no-repeat;\n}\n\n.squid-style-container :is(li) {\n list-style-type:\n none;\n}\n\n.squid-style-container :is(.tw-squid-property-gradient-bg-odd-container .tw-squid-property-row-bg:nth-child(odd) > :is(div, button)) {\n background:\n linear-gradient(\n 91deg,\n /* grey-100 with 0.05 opacity */ var(--st-color-grey-100-005) 0%,\n transparent 100%\n );\n}\n\n.squid-style-container :is(.tw-squid-property-gradient-bg-even-container .tw-squid-property-row-bg:nth-child(even) > :is(div, button)) {\n background:\n linear-gradient(\n 91deg,\n /* grey-100 with 0.05 opacity */ var(--st-color-grey-100-005) 0%,\n transparent 100%\n );\n}\n\n.squid-style-container :is(:focus-visible) {\n outline-style:\n solid;\n outline-width:\n 2px;\n outline-color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(:invalid) {\n outline-color:\n var(--st-color-status-negative);\n}\n\n.squid-style-container :is(:disabled) {\n cursor:\n not-allowed;\n}\n\n.squid-style-container :is(*), .squid-style-container :is(*)::before, .squid-style-container :is(*)::after {\n box-sizing:\n border-box;\n}\n\n.squid-style-container :is(input)::-webkit-outer-spin-button, .squid-style-container :is(input)::-webkit-inner-spin-button {\n -webkit-appearance:\n none;\n margin:\n 0;\n}\n\n.squid-style-container :is(input[type='number']) {\n -moz-appearance:\n textfield;\n}\n\n.squid-style-container :is(#squid-lottie-animation #keystroke) {\n stroke:\n var(--st-color-animation-text);\n}\n\n.squid-style-container :is(#squid-lottie-animation #keyfill) {\n fill:\n var(--st-color-animation-bg);\n}\n\n@keyframes tw-squid-animated-loader-dash-grow {\n 0% {\n stroke-dasharray:\n 62.827;\n stroke-dashoffset:\n 0;\n }\n\n 100% {\n stroke-dasharray:\n 4141.884;\n stroke-dashoffset:\n -20.942;\n }\n}\n\n.squid-style-container :is(.tw-squid-animated-loader-dash) {\n animation:\n tw-squid-animated-loader-dash-grow var(--squid-loader-rotate-duration) infinite alternate ease-in-out;\n stroke-dasharray:\n 20.942, 62.827;\n stroke-dashoffset:\n 0;\n}\n\n.\\[--gradient-middle-color\\:rgba\\(255\\2c 255\\2c 255\\2c 0\\.5\\)\\] {\n --gradient-middle-color:\n rgba(255,255,255,0.5);\n}\n\n.\\[--gradient-middle-color\\:transparent\\] {\n --gradient-middle-color:\n transparent;\n}\n\n.\\[--mid-color\\:transparent\\] {\n --mid-color:\n transparent;\n}\n\n.\\[text-wrap\\:pretty\\] {\n text-wrap:\n pretty;\n}\n\n.squid-style-container :is(.selection\\:tw-bg-input-selection *)::-moz-selection {\n background-color:\n var(--st-color-input-selection);\n}\n\n.squid-style-container :is(.selection\\:tw-bg-input-selection *)::selection {\n background-color:\n var(--st-color-input-selection);\n}\n\n.squid-style-container :is(.selection\\:tw-bg-input-selection)::-moz-selection {\n background-color:\n var(--st-color-input-selection);\n}\n\n.squid-style-container :is(.selection\\:tw-bg-input-selection)::selection {\n background-color:\n var(--st-color-input-selection);\n}\n\n.squid-style-container :is(.placeholder\\:tw-text-lg)::-moz-placeholder {\n font-size:\n 1.125rem;\n line-height:\n 1.75rem;\n}\n\n.squid-style-container :is(.placeholder\\:tw-text-lg)::placeholder {\n font-size:\n 1.125rem;\n line-height:\n 1.75rem;\n}\n\n.squid-style-container :is(.placeholder\\:tw-text-grey-600)::-moz-placeholder {\n color:\n var(--st-color-grey-600);\n}\n\n.squid-style-container :is(.placeholder\\:tw-text-grey-600)::placeholder {\n color:\n var(--st-color-grey-600);\n}\n\n.squid-style-container :is(.placeholder\\:tw-text-input-placeholder)::-moz-placeholder {\n color:\n var(--st-color-input-placeholder);\n}\n\n.squid-style-container :is(.placeholder\\:tw-text-input-placeholder)::placeholder {\n color:\n var(--st-color-input-placeholder);\n}\n\n.squid-style-container :is(.before\\:tw-absolute)::before {\n content:\n var(--tw-content);\n position:\n absolute;\n}\n\n.squid-style-container :is(.before\\:-tw-inset-\\[3px\\])::before {\n content:\n var(--tw-content);\n inset:\n -3px;\n}\n\n.squid-style-container :is(.before\\:tw-inset-0)::before {\n content:\n var(--tw-content);\n inset:\n 0px;\n}\n\n.squid-style-container :is(.before\\:-tw-z-\\[1\\])::before {\n content:\n var(--tw-content);\n z-index:\n -1;\n}\n\n.squid-style-container :is(.before\\:tw-z-\\[1\\])::before {\n content:\n var(--tw-content);\n z-index:\n 1;\n}\n\n.squid-style-container :is(.before\\:tw-h-full)::before {\n content:\n var(--tw-content);\n height:\n 100%;\n}\n\n.squid-style-container :is(.before\\:tw-w-\\[calc\\(100\\%\\+3px\\)\\])::before {\n content:\n var(--tw-content);\n width:\n calc(100% + 3px);\n}\n\n.squid-style-container :is(.before\\:tw-w-full)::before {\n content:\n var(--tw-content);\n width:\n 100%;\n}\n\n.squid-style-container :is(.before\\:tw-translate-x-\\[3px\\])::before {\n content:\n var(--tw-content);\n --tw-translate-x:\n 3px;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.before\\:tw-rounded-full)::before {\n content:\n var(--tw-content);\n border-radius:\n 9999px;\n}\n\n.squid-style-container :is(.before\\:tw-rounded-menu-lg)::before {\n content:\n var(--tw-content);\n border-radius:\n var(--st-border-radius-menu-lg);\n}\n\n.squid-style-container :is(.before\\:tw-rounded-menu-sm)::before {\n content:\n var(--tw-content);\n border-radius:\n var(--st-border-radius-menu-sm);\n}\n\n.squid-style-container :is(.before\\:tw-rounded-br-full)::before {\n content:\n var(--tw-content);\n border-bottom-right-radius:\n 9999px;\n}\n\n.squid-style-container :is(.before\\:tw-rounded-tr-full)::before {\n content:\n var(--tw-content);\n border-top-right-radius:\n 9999px;\n}\n\n.squid-style-container :is(.before\\:tw-border-2)::before {\n content:\n var(--tw-content);\n border-width:\n 2px;\n}\n\n.squid-style-container :is(.before\\:tw-border-l-0)::before {\n content:\n var(--tw-content);\n border-left-width:\n 0px;\n}\n\n.squid-style-container :is(.before\\:tw-border-transparent)::before {\n content:\n var(--tw-content);\n border-color:\n transparent;\n}\n\n.squid-style-container :is(.before\\:tw-backdrop-blur\\/20)::before {\n content:\n var(--tw-content);\n --tw-backdrop-blur:\n blur(20px);\n backdrop-filter:\n var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n.squid-style-container :is(.before\\:tw-backdrop-saturate-150)::before {\n content:\n var(--tw-content);\n --tw-backdrop-saturate:\n saturate(1.5);\n backdrop-filter:\n var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n.squid-style-container :is(.after\\:tw-absolute)::after {\n content:\n var(--tw-content);\n position:\n absolute;\n}\n\n.squid-style-container :is(.after\\:-tw-inset-\\[5px\\])::after {\n content:\n var(--tw-content);\n inset:\n -5px;\n}\n\n.squid-style-container :is(.after\\:tw-left-0)::after {\n content:\n var(--tw-content);\n left:\n 0px;\n}\n\n.squid-style-container :is(.after\\:tw-top-0)::after {\n content:\n var(--tw-content);\n top:\n 0px;\n}\n\n.squid-style-container :is(.after\\:tw-z-0)::after {\n content:\n var(--tw-content);\n z-index:\n 0;\n}\n\n.squid-style-container :is(.after\\:tw-block)::after {\n content:\n var(--tw-content);\n display:\n block;\n}\n\n.squid-style-container :is(.after\\:tw-h-full)::after {\n content:\n var(--tw-content);\n height:\n 100%;\n}\n\n.squid-style-container :is(.after\\:tw-w-\\[230\\%\\])::after {\n content:\n var(--tw-content);\n width:\n 230%;\n}\n\n.squid-style-container :is(.after\\:tw-w-\\[calc\\(100\\%\\+4px\\)\\])::after {\n content:\n var(--tw-content);\n width:\n calc(100% + 4px);\n}\n\n.squid-style-container :is(.after\\:tw-translate-x-\\[6px\\])::after {\n content:\n var(--tw-content);\n --tw-translate-x:\n 6px;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes tw-loading-gradient-scroll {\n 0% {\n content:\n var(--tw-content);\n transform:\n translateX(-56%);\n }\n\n 100% {\n content:\n var(--tw-content);\n transform:\n translateX(0);\n }\n}\n\n.squid-style-container :is(.after\\:tw-animate-loading-gradient-scroll)::after {\n content:\n var(--tw-content);\n animation:\n tw-loading-gradient-scroll 1s ease-in-out both infinite;\n}\n\n.squid-style-container :is(.after\\:tw-rounded-full)::after {\n content:\n var(--tw-content);\n border-radius:\n 9999px;\n}\n\n.squid-style-container :is(.after\\:tw-rounded-br-full)::after {\n content:\n var(--tw-content);\n border-bottom-right-radius:\n 9999px;\n}\n\n.squid-style-container :is(.after\\:tw-rounded-tr-full)::after {\n content:\n var(--tw-content);\n border-top-right-radius:\n 9999px;\n}\n\n.squid-style-container :is(.after\\:tw-border-4)::after {\n content:\n var(--tw-content);\n border-width:\n 4px;\n}\n\n.squid-style-container :is(.after\\:tw-border-l-0)::after {\n content:\n var(--tw-content);\n border-left-width:\n 0px;\n}\n\n.squid-style-container :is(.after\\:tw-border-transparent)::after {\n content:\n var(--tw-content);\n border-color:\n transparent;\n}\n\n.squid-style-container :is(.after\\:tw-bg-loading-gradient)::after {\n content:\n var(--tw-content);\n background-image:\n linear-gradient(\n to right,\n var(--st-color-material-light-thin) 43%,\n var(--mid-color) 52%,\n var(--st-color-material-light-thin) 56%\n );\n}\n\n.squid-style-container :is(.after\\:tw-content-\\[\\'\\'\\])::after {\n --tw-content:\n '';\n content:\n var(--tw-content);\n}\n\n.squid-style-container :is(.last\\:tw-border-b:last-child) {\n border-bottom-width:\n 1px;\n}\n\n.squid-style-container :is(.placeholder-shown\\:tw-text-grey-600:-moz-placeholder-shown) {\n color:\n var(--st-color-grey-600);\n}\n\n.squid-style-container :is(.placeholder-shown\\:tw-text-grey-600:placeholder-shown) {\n color:\n var(--st-color-grey-600);\n}\n\n.squid-style-container :is(.invalid\\:tw-outline-status-negative:invalid) {\n outline-color:\n var(--st-color-status-negative);\n}\n\n.squid-style-container :is(.focus-within\\:tw-bg-material-light-thin:focus-within) {\n background-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.hover\\:tw-border-material-light-average:hover) {\n border-color:\n var(--st-color-material-light-average);\n}\n\n.squid-style-container :is(.hover\\:tw-bg-grey-300:hover) {\n background-color:\n var(--st-color-grey-300);\n}\n\n.squid-style-container :is(.hover\\:tw-bg-grey-800:hover) {\n background-color:\n var(--st-color-grey-800);\n}\n\n.squid-style-container :is(.hover\\:tw-bg-material-light-thin:hover) {\n background-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.hover\\:tw-bg-royal-500:hover) {\n background-color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.hover\\:tw-text-grey-100:hover) {\n color:\n var(--st-color-grey-100);\n}\n\n.squid-style-container :is(.hover\\:tw-text-grey-500:hover) {\n color:\n var(--st-color-grey-500);\n}\n\n.squid-style-container :is(.hover\\:tw-text-grey-900:hover) {\n color:\n var(--st-color-grey-900);\n}\n\n.squid-style-container :is(.hover\\:tw-opacity-100:hover) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.hover\\:before\\:tw-border-grey-900:hover)::before {\n content:\n var(--tw-content);\n border-color:\n var(--st-color-grey-900);\n}\n\n.squid-style-container :is(.hover\\:after\\:tw-border-material-light-average:hover)::after {\n content:\n var(--tw-content);\n border-color:\n var(--st-color-material-light-average);\n}\n\n.squid-style-container :is(.focus\\:tw-bg-material-light-thin:focus) {\n background-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.focus\\:tw-text-royal-500:focus) {\n color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.focus\\:tw-placeholder-royal-500:focus)::-moz-placeholder {\n color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.focus\\:tw-placeholder-royal-500:focus)::placeholder {\n color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.focus\\:tw-opacity-100:focus) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.focus\\:tw-outline-none:focus) {\n outline:\n 2px solid transparent;\n outline-offset:\n 2px;\n}\n\n.squid-style-container :is(.focus-visible\\:tw-opacity-100:focus-visible) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.focus-visible\\:tw-outline-status-partial:focus-visible) {\n outline-color:\n var(--st-color-status-partial);\n}\n\n.squid-style-container :is(.disabled\\:tw-cursor-not-allowed:disabled) {\n cursor:\n not-allowed;\n}\n\n.squid-style-container :is(.disabled\\:tw-bg-grey-800:disabled) {\n background-color:\n var(--st-color-grey-800);\n}\n\n.squid-style-container :is(.disabled\\:tw-text-grey-600:disabled) {\n color:\n var(--st-color-grey-600);\n}\n\n.squid-style-container :is(.tw-group\\/account:focus-within .group-focus-within\\/account\\:tw-scale-100) {\n --tw-scale-x:\n 1;\n --tw-scale-y:\n 1;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-group\\/account:focus-within .group-focus-within\\/account\\:tw-scale-75) {\n --tw-scale-x:\n .75;\n --tw-scale-y:\n .75;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-group\\/amount-input:focus-within .group-focus-within\\/amount-input\\:tw-text-royal-500) {\n color:\n var(--st-color-royal-500);\n}\n\n.squid-style-container :is(.tw-group\\/account:focus-within .group-focus-within\\/account\\:tw-opacity-0) {\n opacity:\n 0;\n}\n\n.squid-style-container :is(.tw-group\\/account:focus-within .group-focus-within\\/account\\:tw-opacity-100) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.tw-group\\/account:focus-within .group-focus-within\\/account\\:tw-blur-0) {\n --tw-blur:\n blur(0);\n filter:\n var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.squid-style-container :is(.tw-group\\/account:focus-within .group-focus-within\\/account\\:tw-blur-sm) {\n --tw-blur:\n blur(4px);\n filter:\n var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.squid-style-container :is(.tw-group\\/assets-button:hover .group-hover\\/assets-button\\:tw-block) {\n display:\n block;\n}\n\n.squid-style-container :is(.tw-group\\/base-button:hover .group-hover\\/base-button\\:tw-block) {\n display:\n block;\n}\n\n.squid-style-container :is(.tw-group\\/list-item:hover .group-hover\\/list-item\\:tw-block) {\n display:\n block;\n}\n\n.squid-style-container :is(.tw-group\\/token-detail-fav-icon:hover .group-hover\\/token-detail-fav-icon\\:tw-block) {\n display:\n block;\n}\n\n.squid-style-container :is(.tw-group\\/token-item:hover .group-hover\\/token-item\\:tw-inline) {\n display:\n inline;\n}\n\n.squid-style-container :is(.tw-group\\/history-item:hover .group-hover\\/history-item\\:tw-hidden) {\n display:\n none;\n}\n\n.squid-style-container :is(.tw-group\\/token-detail-fav-icon:hover .group-hover\\/token-detail-fav-icon\\:tw-hidden) {\n display:\n none;\n}\n\n.squid-style-container :is(.tw-group\\/token-item:hover .group-hover\\/token-item\\:tw-hidden) {\n display:\n none;\n}\n\n.squid-style-container :is(.tw-group\\/explorer:hover .group-hover\\/explorer\\:tw-w-4) {\n width:\n 1rem;\n}\n\n.squid-style-container :is(.tw-group\\/wallet:hover .group-hover\\/wallet\\:tw-w-4) {\n width:\n 1rem;\n}\n\n.squid-style-container :is(.tw-group\\/wallet:hover .group-hover\\/wallet\\:-tw-translate-x-1) {\n --tw-translate-x:\n -0.25rem;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-group\\/flip-button:hover .group-hover\\/flip-button\\:tw-rotate-180) {\n --tw-rotate:\n 180deg;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-group\\/account:hover .group-hover\\/account\\:tw-scale-100) {\n --tw-scale-x:\n 1;\n --tw-scale-y:\n 1;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-group\\/account:hover .group-hover\\/account\\:tw-scale-75) {\n --tw-scale-x:\n .75;\n --tw-scale-y:\n .75;\n transform:\n translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.squid-style-container :is(.tw-group\\/chain-filter:hover .group-hover\\/chain-filter\\:tw-bg-material-light-thin) {\n background-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.tw-group\\/tab-button:hover .group-hover\\/tab-button\\:tw-bg-material-light-thin) {\n background-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.tw-group\\/swap-step-item-button:hover .group-hover\\/swap-step-item-button\\:tw-from-grey-600) {\n --tw-gradient-from:\n var(--st-color-grey-600) var(--tw-gradient-from-position);\n --tw-gradient-to:\n rgb(255 255 255 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from), var(--tw-gradient-to);\n}\n\n.squid-style-container :is(.tw-group\\/stops-button:hover .group-hover\\/stops-button\\:tw-to-material-light-blend-grey-900) {\n --tw-gradient-to:\n var(--st-color-material-light-blend-grey-900) var(--tw-gradient-to-position);\n}\n\n.squid-style-container :is(.tw-group\\/account:hover .group-hover\\/account\\:tw-opacity-0) {\n opacity:\n 0;\n}\n\n.squid-style-container :is(.tw-group\\/account:hover .group-hover\\/account\\:tw-opacity-100) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.tw-group\\/explorer:hover .group-hover\\/explorer\\:tw-opacity-100) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.tw-group\\/history-item:hover .group-hover\\/history-item\\:tw-opacity-0) {\n opacity:\n 0;\n}\n\n.squid-style-container :is(.tw-group\\/list-item:hover .group-hover\\/list-item\\:tw-opacity-0) {\n opacity:\n 0;\n}\n\n.squid-style-container :is(.tw-group\\/list-item:hover .group-hover\\/list-item\\:tw-opacity-100) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.tw-group\\/wallet:hover .group-hover\\/wallet\\:tw-opacity-100) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.tw-group\\/accounts-button:hover .group-hover\\/accounts-button\\:\\!tw-outline-material-light-blend-grey-800) {\n outline-color:\n var(--st-color-material-light-blend-grey-800) !important;\n}\n\n.squid-style-container :is(.tw-group\\/account:hover .group-hover\\/account\\:tw-blur-0) {\n --tw-blur:\n blur(0);\n filter:\n var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.squid-style-container :is(.tw-group\\/account:hover .group-hover\\/account\\:tw-blur-sm) {\n --tw-blur:\n blur(4px);\n filter:\n var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.squid-style-container :is(.tw-group\\/assets-button:hover .group-hover\\/assets-button\\:before\\:tw-border-grey-900)::before {\n content:\n var(--tw-content);\n border-color:\n var(--st-color-grey-900);\n}\n\n.squid-style-container :is(.tw-group\\/assets-button:hover .group-hover\\/assets-button\\:after\\:tw-border-material-light-average)::after {\n content:\n var(--tw-content);\n border-color:\n var(--st-color-material-light-average);\n}\n\n.squid-style-container :is(.tw-group\\/list-item:focus .group-focus\\/list-item\\:tw-opacity-100) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.tw-peer\\/history-item:hover ~ .peer-hover\\/history-item\\:tw-opacity-100) {\n opacity:\n 1;\n}\n\n.squid-style-container :is(.tw-peer:focus ~ .peer-focus\\:tw-hidden) {\n display:\n none;\n}\n\n.squid-style-container :is(.tw-peer:focus ~ .peer-focus\\:tw-opacity-0) {\n opacity:\n 0;\n}\n\n.squid-style-container :is(.aria-disabled\\:tw-bg-grey-600[aria-disabled=\"true\"]) {\n background-color:\n var(--st-color-grey-600);\n}\n\n.squid-style-container :is(.aria-disabled\\:tw-text-grey-800[aria-disabled=\"true\"]) {\n color:\n var(--st-color-grey-800);\n}\n\n.data-\\[squid-theme-type\\=dark\\]\\:\\[--mid-color\\:var\\(--st-color-material-light-average\\)\\][data-squid-theme-type=dark] {\n --mid-color:\n var(--st-color-material-light-average);\n}\n\n.squid-style-container :is(.tw-group[data-squid-theme-type=dark] .group-data-\\[squid-theme-type\\=dark\\]\\:tw-bg-grey-100) {\n background-color:\n var(--st-color-grey-100);\n}\n\n.squid-style-container :is(.tw-group[data-squid-theme-type=dark] .group-data-\\[squid-theme-type\\=dark\\]\\:tw-bg-grey-700) {\n background-color:\n var(--st-color-grey-700);\n}\n\n.squid-style-container :is(.tw-group[data-squid-theme-type=light] .group-data-\\[squid-theme-type\\=light\\]\\:tw-bg-grey-900) {\n background-color:\n var(--st-color-grey-900);\n}\n\n.squid-style-container :is(.tw-group[data-squid-theme-type=dark] .group-data-\\[squid-theme-type\\=dark\\]\\:tw-bg-shimmer-light) {\n background-image:\n linear-gradient(90deg, color-mix(in srgb, var(--st-color-grey-100) 40%, transparent) 0%, var(--st-color-grey-100) 10%, color-mix(in srgb, var(--st-color-grey-100) 40%, transparent) 60%);\n}\n\n.squid-style-container :is(.tw-group[data-squid-theme-type=light] .group-data-\\[squid-theme-type\\=light\\]\\:tw-bg-shimmer-dark) {\n background-image:\n linear-gradient(90deg, color-mix(in srgb, var(--st-color-grey-900) 40%, transparent) 0%, var(--st-color-grey-900) 10%, color-mix(in srgb, var(--st-color-grey-900) 40%, transparent) 60%);\n}\n\n.squid-style-container :is(.tw-group[data-squid-theme-type=dark] .group-data-\\[squid-theme-type\\=dark\\]\\:tw-text-grey-100) {\n color:\n var(--st-color-grey-100);\n}\n\n.squid-style-container :is(.tw-group[data-squid-theme-type=dark] .group-data-\\[squid-theme-type\\=dark\\]\\:tw-text-royal-700) {\n color:\n var(--st-color-royal-700);\n}\n\n.squid-style-container :is(.tw-group[data-squid-theme-type=light] .group-data-\\[squid-theme-type\\=light\\]\\:tw-text-grey-900) {\n color:\n var(--st-color-grey-900);\n}\n\n.squid-style-container :is(.tw-group[data-squid-theme-type=dark] .group-data-\\[squid-theme-type\\=dark\\]\\:tw-shadow-elevation-dark-2) {\n --tw-shadow:\n 0px 2px 5px 1px rgba(0, 0, 0, 0.20), 0px 5px 20px -1px rgba(0, 0, 0, 0.33);\n --tw-shadow-colored:\n 0px 2px 5px 1px var(--tw-shadow-color), 0px 5px 20px -1px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.tw-group[data-squid-theme-type=light] .group-data-\\[squid-theme-type\\=light\\]\\:tw-shadow-elevation-light-2) {\n --tw-shadow:\n 0px 2px 5px 1px rgba(0, 0, 0, 0.10), 0px 5px 20px -1px rgba(0, 0, 0, 0.10);\n --tw-shadow-colored:\n 0px 2px 5px 1px var(--tw-shadow-color), 0px 5px 20px -1px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.tw-group[data-squid-theme-type='dark'] .group-data-\\[squid-theme-type\\=\\'dark\\'\\]\\:\\[--gradient-middle-color\\:rgba\\(255\\2c 255\\2c 255\\2c 0\\.5\\)\\] {\n --gradient-middle-color:\n rgba(255,255,255,0.5);\n}\n\n@media (min-width: 360px) {\n .squid-style-container :is(.mobile-xs\\:tw-flex) {\n display:\n flex;\n }\n\n .squid-style-container :is(.mobile-xs\\:tw-w-modal-compact) {\n width:\n 373px;\n }\n\n .squid-style-container :is(.mobile-xs\\:tw-justify-normal) {\n justify-content:\n normal;\n }\n}\n\n@media (min-width: 480px) {\n .squid-style-container :is(.mobile-lg\\:tw-mr-squid-m) {\n margin-right:\n 1.25rem;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-block) {\n display:\n block;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-h-auto) {\n height:\n auto;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-max-h-card-large) {\n max-height:\n 660px;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-max-h-modal-large) {\n max-height:\n 600px;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-w-\\[190px\\]) {\n width:\n 190px;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-w-\\[50px\\]) {\n width:\n 50px;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-w-card-large) {\n width:\n 480px;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-w-full) {\n width:\n 100%;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-w-modal-extra-large) {\n width:\n 440px;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-w-modal-large) {\n width:\n 400px;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-w-squid-xl) {\n width:\n 2.5rem;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-min-w-modal-large) {\n min-width:\n 400px;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-max-w-card-large) {\n max-width:\n 480px;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-max-w-modal-large) {\n max-width:\n 400px;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-rounded-container) {\n border-radius:\n var(--st-border-radius-container);\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-px-squid-l) {\n padding-left:\n 1.875rem;\n padding-right:\n 1.875rem;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-px-squid-m) {\n padding-left:\n 1.25rem;\n padding-right:\n 1.25rem;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-px-squid-xxs) {\n padding-left:\n 0.3125rem;\n padding-right:\n 0.3125rem;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-pl-squid-l) {\n padding-left:\n 1.875rem;\n }\n\n .squid-style-container :is(.mobile-lg\\:tw-pr-squid-xxl) {\n padding-right:\n 3.75rem;\n }\n}\n\n@media (min-height: 650px) {\n .squid-style-container :is(.mobile-xs-height\\:tw-flex) {\n display:\n flex;\n }\n\n .squid-style-container :is(.mobile-xs-height\\:tw-h-\\[160px\\]) {\n height:\n 160px;\n }\n\n .squid-style-container :is(.mobile-xs-height\\:tw-h-\\[195px\\]) {\n height:\n 195px;\n }\n\n .squid-style-container :is(.mobile-xs-height\\:tw-h-\\[535px\\]) {\n height:\n 535px;\n }\n\n .squid-style-container :is(.mobile-xs-height\\:tw-max-h-\\[535px\\]) {\n max-height:\n 535px;\n }\n\n .squid-style-container :is(.mobile-xs-height\\:tw-min-h-card-large) {\n min-height:\n 660px;\n }\n\n .squid-style-container :is(.mobile-xs-height\\:tw-w-\\[unset\\]) {\n width:\n unset;\n }\n\n .squid-style-container :is(.mobile-xs-height\\:tw-flex-col) {\n flex-direction:\n column;\n }\n\n .squid-style-container :is(.mobile-xs-height\\:tw-pb-squid-s) {\n padding-bottom:\n 0.9375rem;\n }\n\n .squid-style-container :is(.mobile-xs-height\\:tw-pr-squid-m) {\n padding-right:\n 1.25rem;\n }\n}\n\n@media (min-height: 670px) {\n .squid-style-container :is(.mobile-sm-height\\:tw-h-\\[75px\\]) {\n height:\n 75px;\n }\n\n .squid-style-container :is(.mobile-sm-height\\:tw-py-squid-s) {\n padding-top:\n 0.9375rem;\n padding-bottom:\n 0.9375rem;\n }\n}\n\n.squid-style-container :is(.dark\\:tw-border-b-material-light-thin:where([data-squid-theme-type=dark], [data-squid-theme-type=dark] *)) {\n border-bottom-color:\n var(--st-color-material-light-thin);\n}\n\n.squid-style-container :is(.dark\\:tw-bg-material-dark-thick:where([data-squid-theme-type=dark], [data-squid-theme-type=dark] *)) {\n background-color:\n var(--st-color-material-dark-thick);\n}\n\n.squid-style-container :is(.dark\\:tw-bg-cta-button-dark:where([data-squid-theme-type=dark], [data-squid-theme-type=dark] *)) {\n background-image:\n linear-gradient(0deg, color(display-p3 0 0 0 / 0.00) 0%, color(display-p3 0 0 0 / 0.04) 66%, color(display-p3 0 0 0 / 0.06) 100%);\n}\n\n.squid-style-container :is(.dark\\:tw-bg-shimmer-overlay-dark:where([data-squid-theme-type=dark], [data-squid-theme-type=dark] *)) {\n background-image:\n linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.6) 50%, transparent 100%);\n}\n\n.squid-style-container :is(.dark\\:tw-shadow-cta-button-dark:where([data-squid-theme-type=dark], [data-squid-theme-type=dark] *)) {\n --tw-shadow:\n 0 1px 4px 1px color(display-p3 0 0 0 / 0.10) inset, 0 1px 3px 0 color(display-p3 0 0 0 / 0.07), 0 2px 5px 0 color(display-p3 0 0 0 / 0.10);\n --tw-shadow-colored:\n inset 0 1px 4px 1px var(--tw-shadow-color), 0 1px 3px 0 var(--tw-shadow-color), 0 2px 5px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.dark\\:tw-shadow-icon-dark:where([data-squid-theme-type=dark], [data-squid-theme-type=dark] *)) {\n --tw-shadow:\n 0 0 2px 1px color(display-p3 1 1 1 / 0.03), 0 1px 2px 0 color(display-p3 1 1 1 / 0.03), 0 2px 8px 0 color(display-p3 1 1 1 / 0.05);\n --tw-shadow-colored:\n 0 0 2px 1px var(--tw-shadow-color), 0 1px 2px 0 var(--tw-shadow-color), 0 2px 8px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.dark\\:tw-shadow-widget-card-dark:where([data-squid-theme-type=dark], [data-squid-theme-type=dark] *)) {\n --tw-shadow:\n 0 0 1px 1px color(display-p3 1 1 1 / 0.08), 0 8px 20px 0 color(display-p3 0 0 0 / 0.6), 0 16px 40px -2px color(display-p3 0 0 0 / 0.5);\n --tw-shadow-colored:\n 0 0 1px 1px var(--tw-shadow-color), 0 8px 20px 0 var(--tw-shadow-color), 0 16px 40px -2px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.squid-style-container :is(.disabled\\:dark\\:tw-bg-grey-800:where([data-squid-theme-type=dark], [data-squid-theme-type=dark] *):disabled) {\n background-color:\n var(--st-color-grey-800);\n}\n\n.squid-style-container :is(.disabled\\:dark\\:tw-text-grey-500:where([data-squid-theme-type=dark], [data-squid-theme-type=dark] *):disabled) {\n color:\n var(--st-color-grey-500);\n}\n\n.squid-style-container :is(.\\[\\&\\>\\*\\]\\:tw-h-full>*) {\n height:\n 100%;\n}\n\n.squid-style-container :is(.\\[\\&\\>path\\]\\:tw-stroke-\\[3\\]>path) {\n stroke-width:\n 3;\n}\n\n.squid-style-container :is(.\\[\\&_svg_path\\]\\:tw-stroke-\\[6\\] svg path) {\n stroke-width:\n 6;\n}\n";
31
+
32
+ const INITIAL_VIEW = { id: "main" };
33
+ const selectCurrentView = (state) => state.stack[state.stack.length - 1] ?? INITIAL_VIEW;
34
+ const useRouter = zustand.create((set) => ({
35
+ stack: [INITIAL_VIEW],
36
+ direction: null,
37
+ push: (view) => set((state) => {
38
+ if (selectCurrentView(state).id === view.id)
39
+ return state;
40
+ return {
41
+ stack: [...state.stack, view],
42
+ direction: "forward",
43
+ };
44
+ }),
45
+ pop: () => set((state) => {
46
+ if (state.stack.length <= 1)
47
+ return state;
48
+ return {
49
+ stack: state.stack.slice(0, -1),
50
+ direction: "backward",
51
+ };
52
+ }),
53
+ popToRoot: () => set((state) => {
54
+ if (state.stack.length <= 1)
55
+ return state;
56
+ return {
57
+ stack: [INITIAL_VIEW],
58
+ direction: "backward",
59
+ };
60
+ }),
61
+ }));
62
+
63
+ const VIEW_TRANSITION_DURATION_MS = 250;
64
+
65
+ const ENTER_CLASS = {
66
+ forward: "tw-animate-slide-in-right",
67
+ backward: "tw-animate-slide-in-left",
68
+ };
69
+ const EXIT_CLASS = {
70
+ forward: "tw-animate-slide-out-left",
71
+ backward: "tw-animate-slide-out-right",
72
+ };
73
+ function ViewTransition({ viewId, children }) {
74
+ const direction = useRouter((s) => s.direction);
75
+ const prevChildrenRef = React.useRef(children);
76
+ const [exiting, setExiting] = React.useState(null);
77
+ const [activeId, setActiveId] = React.useState(viewId);
78
+ // Detect view change during render (React "derive state from props" pattern)
79
+ if (viewId !== activeId) {
80
+ setExiting({ viewId: activeId, element: prevChildrenRef.current });
81
+ setActiveId(viewId);
82
+ }
83
+ // Keep ref in sync with latest children for the active view
84
+ prevChildrenRef.current = children;
85
+ // Safety timeout: clear exiting slot if onAnimationEnd doesn't fire
86
+ React.useEffect(() => {
87
+ if (!exiting)
88
+ return;
89
+ const timer = setTimeout(() => setExiting(null), VIEW_TRANSITION_DURATION_MS + 50);
90
+ return () => clearTimeout(timer);
91
+ }, [exiting]);
92
+ const handleAnimationEnd = (e) => {
93
+ if (e.target !== e.currentTarget)
94
+ return;
95
+ setExiting(null);
96
+ };
97
+ const isAnimating = exiting !== null;
98
+ return (jsxRuntime.jsxs("div", { className: "tw-relative tw-flex-1 tw-overflow-hidden tw-w-full", children: [exiting && direction && (jsxRuntime.jsx("div", { className: `tw-absolute tw-inset-0 tw-flex tw-flex-col tw-will-change-transform ${EXIT_CLASS[direction]}`, children: exiting.element }, exiting.viewId)), jsxRuntime.jsx("div", { className: ui.cn("tw-absolute tw-inset-0 tw-flex tw-flex-col tw-will-change-transform", isAnimating && direction && ENTER_CLASS[direction]), onAnimationEnd: isAnimating ? handleAnimationEnd : undefined, children: children }, viewId)] }));
99
+ }
100
+
101
+ function BaseNavBar({ className, ...props }) {
102
+ return (jsxRuntime.jsx("nav", { ...props, className: ui.cn("tw-flex tw-py-3 tw-px-4 tw-items-center tw-self-stretch tw-h-16", className) }));
103
+ }
104
+
105
+ function SubNavBar({ title, input }) {
106
+ const pop = useRouter((s) => s.pop);
107
+ return (jsxRuntime.jsxs(BaseNavBar, { className: "tw-gap-2", children: [jsxRuntime.jsx(ui.IconButton, { onClick: pop, icon: jsxRuntime.jsx(ui.ArrowLeftIcon, { className: "tw-text-grey-100 [&>path]:tw-stroke-[3]", size: "1.5rem" }) }), input ? (jsxRuntime.jsxs("div", { className: "tw-flex tw-relative tw-flex-1 tw-items-center", children: [jsxRuntime.jsx(ui.SearchIcon, { size: "1rem", className: "tw-absolute tw-left-0 tw-top-1/2 -tw-translate-y-1/2 tw-text-material-light-average tw-pl-2 tw-w-fit" }), jsxRuntime.jsx("input", { className: "tw-flex tw-h-8 tw-text-grey-100 tw-py-1 tw-pl-7 tw-pr-2 tw-items-center tw-gap-1 tw-flex-1 tw-rounded-squid-s tw-border tw-border-material-light-thin tw-bg-grey-800 placeholder:tw-text-lg tw-placeholder-material-light-average", ...input }), jsxRuntime.jsx("span", { className: "tw-size-squid-xl" })] })) : title ? (jsxRuntime.jsx("span", { className: "tw-text-grey-100 tw-text-lg tw-font-squid-main tw-font-medium", children: title })) : null] }));
108
+ }
109
+
110
+ function WalletListItem({ wallet, isConnecting, showAsMultiChain, parentProps, ...props }) {
111
+ const isInstalled = wallet.isInstalled?.();
112
+ return (jsxRuntime.jsx("li", { className: "tw-self-stretch", ...parentProps, children: jsxRuntime.jsxs("button", { className: "tw-group/wallet tw-flex tw-min-h-14 tw-h-14 tw-px-4 tw-items-center tw-gap-3 tw-self-stretch tw-w-full hover:tw-bg-material-light-thin", disabled: isConnecting, ...props, children: [jsxRuntime.jsx("div", { className: "tw-flex tw-size-squid-xl tw-justify-center tw-items-center tw-aspect-square tw-rounded-xl tw-shadow-icon-light dark:tw-shadow-icon-dark", children: wallet.icon && (jsxRuntime.jsx("img", { src: wallet.icon, alt: wallet.name, className: "tw-size-full tw-rounded-xl" })) }), jsxRuntime.jsx("span", { className: "tw-flex tw-flex-col tw-justify-center tw-items-start tw-gap-2 tw-flex-1 tw-self-stretch tw-text-grey-200 tw-text-lg", children: wallet.name }), isConnecting ? (jsxRuntime.jsx(ui.Loader, { size: "20", className: "tw-text-grey-100" })) : (jsxRuntime.jsxs("div", { className: "tw-flex tw-items-center", children: [isInstalled && (jsxRuntime.jsx("div", { className: ui.cn("tw-flex tw-py-squid-s tw-flex-col tw-justify-center tw-items-end tw-self-stretch tw-text-material-light-thick tw-text-base tw-transition-transform tw-duration-200", showAsMultiChain && "group-hover/wallet:-tw-translate-x-1"), children: "Installed" })), showAsMultiChain && (jsxRuntime.jsx(ui.ChevronLargeRightIcon, { className: "tw-text-material-light-thick tw-transition-all tw-duration-200 tw-w-0 tw-opacity-0 group-hover/wallet:tw-w-4 group-hover/wallet:tw-opacity-100", size: "0.75rem" }))] }))] }) }));
113
+ }
114
+
115
+ function ViewContainer({ className, ...props }) {
116
+ return (jsxRuntime.jsx("section", { ...props, className: ui.cn("tw-flex tw-flex-col tw-items-center tw-flex-1 tw-self-stretch tw-border-t tw-border-grey-800 tw-py-1 tw-overflow-auto tw-h-full tw-scrollbar-hidden", className) }));
117
+ }
118
+
119
+ function getAugmentedNamespace(n) {
120
+ if (n.__esModule) return n;
121
+ var f = n.default;
122
+ if (typeof f == "function") {
123
+ var a = function a () {
124
+ if (this instanceof a) {
125
+ return Reflect.construct(f, arguments, this.constructor);
126
+ }
127
+ return f.apply(this, arguments);
128
+ };
129
+ a.prototype = f.prototype;
130
+ } else a = {};
131
+ Object.defineProperty(a, '__esModule', {value: true});
132
+ Object.keys(n).forEach(function (k) {
133
+ var d = Object.getOwnPropertyDescriptor(n, k);
134
+ Object.defineProperty(a, k, d.get ? d : {
135
+ enumerable: true,
136
+ get: function () {
137
+ return n[k];
138
+ }
139
+ });
140
+ });
141
+ return a;
142
+ }
143
+
144
+ var dist = {};
145
+
146
+ var chains = {};
147
+
148
+ var hasRequiredChains;
149
+
150
+ function requireChains () {
151
+ if (hasRequiredChains) return chains;
152
+ hasRequiredChains = 1;
153
+ Object.defineProperty(chains, "__esModule", { value: true });
154
+ chains.CosmosChainFeatures = chains.NetworkIdentifier = chains.ChainName = chains.ChainType = void 0;
155
+ var ChainType;
156
+ (function (ChainType) {
157
+ ChainType["EVM"] = "evm";
158
+ ChainType["COSMOS"] = "cosmos";
159
+ ChainType["BTC"] = "bitcoin";
160
+ ChainType["SOLANA"] = "solana";
161
+ ChainType["SUI"] = "sui";
162
+ ChainType["XRPL"] = "xrpl";
163
+ ChainType["STELLAR"] = "stellar";
164
+ })(ChainType || (chains.ChainType = ChainType = {}));
165
+ var ChainName;
166
+ (function (ChainName) {
167
+ ChainName["ARBITRUM"] = "Arbitrum";
168
+ ChainName["ARBITRUM2"] = "arbitrum";
169
+ ChainName["AURORA"] = "aurora";
170
+ ChainName["AVALANCHE"] = "Avalanche";
171
+ ChainName["BASE"] = "base";
172
+ ChainName["BINANCE"] = "binance";
173
+ ChainName["CELO"] = "celo";
174
+ ChainName["CENTRIFUGE"] = "centrifuge";
175
+ ChainName["CITREA"] = "citrea";
176
+ ChainName["ETHEREUM"] = "Ethereum";
177
+ ChainName["ETHEREUM2"] = "Ethereum-2";
178
+ ChainName["FANTOM"] = "Fantom";
179
+ ChainName["FILECOIN"] = "filecoin";
180
+ ChainName["FILECOIN2"] = "filecoin-2";
181
+ ChainName["HEDERA"] = "hedera";
182
+ ChainName["IMMUTABLE_ZKEVM"] = "immutable";
183
+ ChainName["KAVA"] = "kava";
184
+ ChainName["MANTLE"] = "mantle";
185
+ ChainName["MANTRA"] = "mantra";
186
+ ChainName["MONAD"] = "monad";
187
+ ChainName["MOONBEAM"] = "Moonbeam";
188
+ ChainName["OPTIMISM"] = "optimism";
189
+ ChainName["POLYGON_ZKEVM"] = "polygon-zkevm";
190
+ ChainName["POLYGON"] = "Polygon";
191
+ ChainName["LINEA"] = "linea";
192
+ ChainName["SCROLL"] = "scroll";
193
+ ChainName["BLAST"] = "blast";
194
+ ChainName["FRAXTAL"] = "fraxtal";
195
+ ChainName["BERACHAIN"] = "berachain";
196
+ ChainName["GNOSIS"] = "gnosis";
197
+ ChainName["SONIC"] = "sonic";
198
+ ChainName["SONEIUM"] = "soneium";
199
+ ChainName["PEAQ"] = "peaq";
200
+ ChainName["HYPER_EVM"] = "hyper-evm";
201
+ ChainName["TEMPO"] = "tempo";
202
+ // Cosmos
203
+ ChainName["AGORIC"] = "agoric";
204
+ ChainName["ASSETMANTLE"] = "assetmantle";
205
+ ChainName["AXELARNET"] = "axelarnet";
206
+ ChainName["CARBON"] = "carbon";
207
+ ChainName["COMDEX"] = "comdex";
208
+ ChainName["COSMOS"] = "cosmoshub";
209
+ ChainName["CRESCENT"] = "crescent";
210
+ ChainName["EVMOS"] = "evmos";
211
+ ChainName["FETCH"] = "fetch";
212
+ ChainName["INJECTIVE"] = "injective";
213
+ ChainName["JUNO"] = "juno";
214
+ ChainName["KI"] = "ki";
215
+ ChainName["KUJIRA"] = "kujira";
216
+ ChainName["NEUTRON"] = "neutron";
217
+ ChainName["NOBLE"] = "noble";
218
+ ChainName["OSMOSIS"] = "osmosis";
219
+ ChainName["OSMOSIS7"] = "osmosis-7";
220
+ ChainName["REGEN"] = "regen";
221
+ ChainName["SEI"] = "sei";
222
+ ChainName["SECRETSNIP"] = "secret-snip";
223
+ ChainName["STARGAZE"] = "stargaze";
224
+ ChainName["STRIDE"] = "stride";
225
+ ChainName["TERRA2"] = "terra-2";
226
+ ChainName["UMEE"] = "umee";
227
+ ChainName["DYDX"] = "dydx";
228
+ ChainName["ACRECHAIN"] = "acre";
229
+ ChainName["ARCHWAY"] = "archway";
230
+ ChainName["BITCANNA"] = "bitcanna";
231
+ ChainName["BITSONG"] = "bitsong";
232
+ ChainName["CHEQD"] = "cheqd";
233
+ ChainName["CELESTIA"] = "celestia";
234
+ ChainName["COREUM"] = "coreum";
235
+ ChainName["DECENTR"] = "decentr";
236
+ ChainName["DESMOS"] = "desmos";
237
+ ChainName["DIG"] = "dig";
238
+ ChainName["DYMENSION"] = "dymension";
239
+ ChainName["IRISNET"] = "irisnet";
240
+ ChainName["IXO"] = "impacthub";
241
+ ChainName["JACKAL"] = "jackal";
242
+ ChainName["LUM"] = "lumnetwork";
243
+ ChainName["LIKECOIN"] = "likecoin";
244
+ ChainName["KAVA_IBC"] = "kava-ibc";
245
+ ChainName["NOLUS"] = "nolus";
246
+ ChainName["XPLA"] = "xpla";
247
+ ChainName["AKASH"] = "akash";
248
+ ChainName["CHIHUAHUA"] = "chihuahua";
249
+ ChainName["CRONOS"] = "cronos";
250
+ ChainName["GRAVITYBRIDGE"] = "gravitybridge";
251
+ ChainName["MARS"] = "mars";
252
+ ChainName["MIGALOO"] = "migaloo";
253
+ ChainName["PERSISTENCE"] = "persistence";
254
+ ChainName["OMNIFLIXHUB"] = "omniflixhub";
255
+ ChainName["QUICKSILVER"] = "quicksilver";
256
+ ChainName["SOMMELIER"] = "sommelier";
257
+ ChainName["TERRA"] = "terra";
258
+ ChainName["TERITORI"] = "teritori";
259
+ ChainName["SENTINEL"] = "sentinel";
260
+ ChainName["HUMANS"] = "humans";
261
+ ChainName["CHAIN4ENERGY"] = "c4e";
262
+ ChainName["SAGA"] = "saga";
263
+ ChainName["NIBIRU"] = "nibiru";
264
+ ChainName["LAVA"] = "lava";
265
+ ChainName["KYVE"] = "kyve";
266
+ ChainName["XION"] = "xion";
267
+ ChainName["SAGA_HUB"] = "hub";
268
+ ChainName["SAGA_DEX"] = "saga_evm";
269
+ ChainName["SAGA_MARIA"] = "maria";
270
+ ChainName["SAGA_NIRVANA"] = "nirvana";
271
+ ChainName["SAGA_FLIPPANDO"] = "flippandomainnet";
272
+ ChainName["SAGA_SOUNDMONEY"] = "soundmoney";
273
+ ChainName["SAGA_NGMI"] = "ngmi";
274
+ ChainName["SAGA_DCHAIN"] = "dchain";
275
+ ChainName["ELYS"] = "elys";
276
+ ChainName["ALLORA"] = "allora";
277
+ ChainName["BABYLON"] = "babylon";
278
+ // BTC
279
+ ChainName["BITCOIN"] = "bitcoin";
280
+ // SOL
281
+ ChainName["SOLANA"] = "solana";
282
+ // SUI
283
+ ChainName["SUI"] = "sui";
284
+ // XRPL
285
+ ChainName["XRPL"] = "xrpl";
286
+ ChainName["XRPL_EVM"] = "xrpl-evm";
287
+ // STELLAR
288
+ ChainName["STELLAR"] = "stellar";
289
+ // TESTNETS
290
+ ChainName["ETHEREUM_SEPOLIA"] = "ethereum-sepolia";
291
+ ChainName["SUI_TESTNET"] = "sui-testnet";
292
+ ChainName["STELLAR_TESTNET"] = "stellar-testnet";
293
+ })(ChainName || (chains.ChainName = ChainName = {}));
294
+ var NetworkIdentifier;
295
+ (function (NetworkIdentifier) {
296
+ // EVM
297
+ NetworkIdentifier["ETHEREUM"] = "ethereum";
298
+ NetworkIdentifier["AVALANCHE"] = "avalanche";
299
+ NetworkIdentifier["ARBITRUM"] = "arbitrum";
300
+ NetworkIdentifier["AURORA"] = "aurora";
301
+ NetworkIdentifier["BASE"] = "base";
302
+ NetworkIdentifier["BINANCE"] = "binance";
303
+ NetworkIdentifier["CELO"] = "celo";
304
+ NetworkIdentifier["CITREA"] = "citrea";
305
+ NetworkIdentifier["FANTOM"] = "fantom";
306
+ NetworkIdentifier["FILECOIN"] = "filecoin";
307
+ NetworkIdentifier["HEDERA"] = "hedera";
308
+ NetworkIdentifier["IMMUTABLE_ZKEVM"] = "immutable";
309
+ NetworkIdentifier["KAVA"] = "kava";
310
+ NetworkIdentifier["MANTLE"] = "mantle";
311
+ NetworkIdentifier["MANTRA"] = "mantra";
312
+ NetworkIdentifier["MONAD"] = "monad";
313
+ NetworkIdentifier["MOONBEAM"] = "moonbeam";
314
+ NetworkIdentifier["OPTIMISM"] = "optimism";
315
+ NetworkIdentifier["POLYGON"] = "polygon";
316
+ NetworkIdentifier["LINEA"] = "linea";
317
+ NetworkIdentifier["SCROLL"] = "scroll";
318
+ NetworkIdentifier["BLAST"] = "blast";
319
+ NetworkIdentifier["FRAXTAL"] = "fraxtal";
320
+ NetworkIdentifier["BERACHAIN"] = "berachain";
321
+ NetworkIdentifier["GNOSIS"] = "gnosis";
322
+ NetworkIdentifier["SONIC"] = "sonic";
323
+ NetworkIdentifier["SONEIUM"] = "soneium";
324
+ NetworkIdentifier["PEAQ"] = "peaq";
325
+ NetworkIdentifier["HYPER_EVM"] = "hyper-evm";
326
+ NetworkIdentifier["TEMPO"] = "tempo";
327
+ // COSMOS
328
+ NetworkIdentifier["AGORIC"] = "agoric";
329
+ NetworkIdentifier["ASSETMANTLE"] = "assetmantle";
330
+ NetworkIdentifier["AXELAR"] = "axelar";
331
+ NetworkIdentifier["AXELARNET"] = "axelarnet";
332
+ NetworkIdentifier["CARBON"] = "carbon";
333
+ NetworkIdentifier["COMDEX"] = "comdex";
334
+ NetworkIdentifier["COSMOS"] = "cosmoshub";
335
+ NetworkIdentifier["CRESCENT"] = "crescent";
336
+ NetworkIdentifier["EVMOS"] = "evmos";
337
+ NetworkIdentifier["FETCH"] = "fetch";
338
+ NetworkIdentifier["INJECTIVE"] = "injective";
339
+ NetworkIdentifier["JUNO"] = "juno";
340
+ NetworkIdentifier["KI"] = "ki";
341
+ NetworkIdentifier["KUJIRA"] = "kujira";
342
+ NetworkIdentifier["NOBLE"] = "noble";
343
+ NetworkIdentifier["NEUTRON"] = "neutron";
344
+ NetworkIdentifier["OSMOSIS"] = "osmosis";
345
+ NetworkIdentifier["REGEN"] = "regen";
346
+ NetworkIdentifier["SEI"] = "sei";
347
+ NetworkIdentifier["SECRETSNIP"] = "secret-snip";
348
+ NetworkIdentifier["STARGAZE"] = "stargaze";
349
+ NetworkIdentifier["STRIDE"] = "stride";
350
+ NetworkIdentifier["TERRA2"] = "terra-2";
351
+ NetworkIdentifier["UMEE"] = "umee";
352
+ NetworkIdentifier["DYDX"] = "dydx";
353
+ NetworkIdentifier["ACRECHAIN"] = "acre";
354
+ NetworkIdentifier["ARCHWAY"] = "archway";
355
+ NetworkIdentifier["BITCANNA"] = "bitcanna";
356
+ NetworkIdentifier["BITSONG"] = "bitsong";
357
+ NetworkIdentifier["CHEQD"] = "cheqd";
358
+ NetworkIdentifier["CELESTIA"] = "celestia";
359
+ NetworkIdentifier["COREUM"] = "coreum";
360
+ NetworkIdentifier["DECENTR"] = "decentr";
361
+ NetworkIdentifier["DESMOS"] = "desmos";
362
+ NetworkIdentifier["DYMENSION"] = "dymension";
363
+ NetworkIdentifier["IRISNET"] = "irisnet";
364
+ NetworkIdentifier["IXO"] = "impacthub";
365
+ NetworkIdentifier["JACKAL"] = "jackal";
366
+ NetworkIdentifier["LUM"] = "lumnetwork";
367
+ NetworkIdentifier["LIKECOIN"] = "likecoin";
368
+ NetworkIdentifier["KAVA_IBC"] = "kava-ibc";
369
+ NetworkIdentifier["NOLUS"] = "nolus";
370
+ NetworkIdentifier["XPLA"] = "xpla";
371
+ NetworkIdentifier["AKASH"] = "akash";
372
+ NetworkIdentifier["CHIHUAHUA"] = "chihuahua";
373
+ NetworkIdentifier["CRONOS"] = "cronos";
374
+ NetworkIdentifier["GRAVITYBRIDGE"] = "gravitybridge";
375
+ NetworkIdentifier["MARS"] = "mars";
376
+ NetworkIdentifier["MIGALOO"] = "migaloo";
377
+ NetworkIdentifier["PERSISTENCE"] = "persistence";
378
+ NetworkIdentifier["OMNIFLIXHUB"] = "omniflixhub";
379
+ NetworkIdentifier["QUICKSILVER"] = "quicksilver";
380
+ NetworkIdentifier["SOMMELIER"] = "sommelier";
381
+ NetworkIdentifier["TERRA"] = "terra";
382
+ NetworkIdentifier["TERITORI"] = "teritori";
383
+ NetworkIdentifier["SENTINEL"] = "sentinel";
384
+ NetworkIdentifier["HUMANS"] = "humans";
385
+ NetworkIdentifier["CHAIN4ENERGY"] = "c4e";
386
+ NetworkIdentifier["SAGA"] = "saga";
387
+ NetworkIdentifier["NIBIRU"] = "nibiru";
388
+ NetworkIdentifier["LAVA"] = "lava";
389
+ NetworkIdentifier["KYVE"] = "kyve";
390
+ NetworkIdentifier["XION"] = "xion";
391
+ NetworkIdentifier["SAGA_HUB"] = "hub";
392
+ NetworkIdentifier["SAGA_DEX"] = "saga_evm";
393
+ NetworkIdentifier["SAGA_MARIA"] = "maria";
394
+ NetworkIdentifier["SAGA_NIRVANA"] = "nirvana";
395
+ NetworkIdentifier["SAGA_FLIPPANDO"] = "flippandomainnet";
396
+ NetworkIdentifier["SAGA_SOUNDMONEY"] = "soundmoney";
397
+ NetworkIdentifier["SAGA_NGMI"] = "ngmi";
398
+ NetworkIdentifier["SAGA_DCHAIN"] = "dchain";
399
+ NetworkIdentifier["ELYS"] = "elys";
400
+ NetworkIdentifier["ALLORA"] = "allora";
401
+ NetworkIdentifier["BABYLON"] = "babylon";
402
+ // BTC
403
+ NetworkIdentifier["BITCOIN"] = "bitcoin";
404
+ // SOL
405
+ NetworkIdentifier["SOLANA"] = "solana";
406
+ // SUI
407
+ NetworkIdentifier["SUI"] = "sui";
408
+ // XRPL
409
+ NetworkIdentifier["XRPL"] = "xrpl";
410
+ NetworkIdentifier["XRPL_EVM"] = "xrpl-evm";
411
+ // STELLAR
412
+ NetworkIdentifier["STELLAR"] = "stellar";
413
+ // TESTNETS
414
+ NetworkIdentifier["ETHEREUM_SEPOLIA"] = "ethereum-sepolia";
415
+ NetworkIdentifier["SUI_TESTNET"] = "sui-testnet";
416
+ NetworkIdentifier["XRPL_TESTNET"] = "xrpl-testnet";
417
+ NetworkIdentifier["XRPL_EVM_TESTNET"] = "xrpl-evm-testnet";
418
+ NetworkIdentifier["STELLAR_TESTNET"] = "stellar-testnet";
419
+ })(NetworkIdentifier || (chains.NetworkIdentifier = NetworkIdentifier = {}));
420
+ var CosmosChainFeatures;
421
+ (function (CosmosChainFeatures) {
422
+ CosmosChainFeatures["PACKET_FORWARD_MIDDLEWARE"] = "packet-forward-middleware";
423
+ CosmosChainFeatures["LEGACY_IBC"] = "legacy-ibc";
424
+ CosmosChainFeatures["COSMWASM"] = "cosmwasm";
425
+ })(CosmosChainFeatures || (chains.CosmosChainFeatures = CosmosChainFeatures = {}));
426
+
427
+ return chains;
428
+ }
429
+
430
+ var bridges = {};
431
+
432
+ var hasRequiredBridges;
433
+
434
+ function requireBridges () {
435
+ if (hasRequiredBridges) return bridges;
436
+ hasRequiredBridges = 1;
437
+ Object.defineProperty(bridges, "__esModule", { value: true });
438
+ bridges.BridgeProvider = bridges.BridgeType = void 0;
439
+ var BridgeType;
440
+ (function (BridgeType) {
441
+ BridgeType["AXELAR_GMP"] = "axelar-gmp";
442
+ BridgeType["AXELAR_ITS"] = "axelar-its";
443
+ BridgeType["CCTP"] = "cctp";
444
+ BridgeType["NOBLE_CCTP"] = "noble-cctp";
445
+ BridgeType["IBC"] = "ibc";
446
+ BridgeType["CHAINFLIP"] = "chainflip";
447
+ BridgeType["RFQ"] = "rfq";
448
+ BridgeType["ITB"] = "immutable-token-bridge";
449
+ BridgeType["CORAL_V2"] = "coral-v2";
450
+ })(BridgeType || (bridges.BridgeType = BridgeType = {}));
451
+ var BridgeProvider;
452
+ (function (BridgeProvider) {
453
+ BridgeProvider["AXELAR"] = "Axelar";
454
+ BridgeProvider["CCTP"] = "CCTP";
455
+ BridgeProvider["NOBLE_CCTP"] = "Noble CCTP";
456
+ BridgeProvider["IBC"] = "IBC";
457
+ BridgeProvider["PFM"] = "IBC Packet forward middleware";
458
+ BridgeProvider["CHAINFLIP"] = "Chainflip";
459
+ BridgeProvider["RFQ"] = "Squid Intents";
460
+ BridgeProvider["IMMUTABLE"] = "Immutable";
461
+ })(BridgeProvider || (bridges.BridgeProvider = BridgeProvider = {}));
462
+
463
+ return bridges;
464
+ }
465
+
466
+ var dexes = {};
467
+
468
+ var hasRequiredDexes;
469
+
470
+ function requireDexes () {
471
+ if (hasRequiredDexes) return dexes;
472
+ hasRequiredDexes = 1;
473
+ Object.defineProperty(dexes, "__esModule", { value: true });
474
+ dexes.DexType = dexes.DexName = void 0;
475
+ // identifiers for dexes
476
+ var DexName;
477
+ (function (DexName) {
478
+ DexName["AGNI_V3"] = "Agni V3";
479
+ DexName["AERODROME_SOLIDLY"] = "Aerodrome Solidly";
480
+ DexName["AERODROME_V3"] = "Aerodrome V3";
481
+ DexName["APESWAP_V2"] = "Apeswap V2";
482
+ DexName["APESWAP_V3"] = "Apeswap V3";
483
+ DexName["ASTROPORT"] = "Astroport";
484
+ DexName["BALANCER_V2"] = "Balancer V2";
485
+ DexName["BASESWAP_V2"] = "Baseswap V2";
486
+ DexName["BASESWAP_V3"] = "Baseswap V3";
487
+ DexName["BEAMSWAP_V2"] = "Beamswap V2";
488
+ DexName["BEAMSWAP_V3"] = "Beamswap V3";
489
+ DexName["BEAMSWAP_SADDLE"] = "Beamswap Saddle";
490
+ DexName["BEETS_V2"] = "Beets V2";
491
+ DexName["CAMELOT_V2"] = "Camelot V2";
492
+ DexName["CAMELOT_V3"] = "Camelot V3";
493
+ DexName["CURVE_V2"] = "Curve V2";
494
+ DexName["ELLIPSIS"] = "Ellipsis";
495
+ DexName["EQUILIBRE"] = "Equilibre";
496
+ DexName["EQUALIZER"] = "Equalizer";
497
+ DexName["ETHEREX_V3"] = "Etherex V3";
498
+ DexName["FRAXSWAP_V2"] = "Fraxswap V2";
499
+ DexName["FUSIONX_V2"] = "FusionX V2";
500
+ DexName["FUSIONX_V3"] = "FusionX V3";
501
+ DexName["GLIQUID_V4"] = "Gliquid V4";
502
+ DexName["GMX"] = "GMX";
503
+ DexName["HONEYSWAP_V2"] = "Honeyswap V2";
504
+ DexName["HORIZON_V2"] = "Horizon V2";
505
+ DexName["HORIZON_V3"] = "Horizon V3";
506
+ DexName["HYBRA_V2"] = "Hybra V2";
507
+ DexName["HYBRA_V3"] = "Hybra V3";
508
+ DexName["HYPERSWAP_V2"] = "Hyperswap V2";
509
+ DexName["HYPERSWAP_V3"] = "Hyperswap V3";
510
+ DexName["JUICESWAP"] = "JuiceSwap";
511
+ DexName["KYBERSWAP"] = "KyberSwap";
512
+ DexName["KYBERSWAP_AGGREGATOR"] = "kyberswap Aggregator";
513
+ DexName["KYO_V2"] = "Kyo V2";
514
+ DexName["KYO_V3"] = "Kyo V3";
515
+ DexName["KINETIX_V3"] = "Kinetix V3";
516
+ DexName["KITTENSWAP_V2"] = "Kittenswap V2";
517
+ DexName["KITTENSWAP_V3"] = "Kittenswap V3";
518
+ DexName["KODIAK_V3"] = "Kodiak V3";
519
+ DexName["LAMINAR_V3"] = "Laminar V3";
520
+ DexName["LYNEX_V3"] = "Lynex V3";
521
+ DexName["LOTUS_V3"] = "Lotus V3";
522
+ DexName["MACHINE_X_V3"] = "MachineX V3";
523
+ DexName["MENTO_V2"] = "Mento V2";
524
+ DexName["MOAI_V3"] = "Moai V3";
525
+ DexName["NILE_SOLIDLY"] = "Nile Solidly";
526
+ DexName["NILE_V3"] = "Nile V3";
527
+ DexName["OKU_V2"] = "Oku V2";
528
+ DexName["OPENOCEAN"] = "OpenOcean";
529
+ DexName["OSMOSIS"] = "Osmosis";
530
+ DexName["OKU_V3"] = "Oku V3";
531
+ DexName["PANCAKESWAP_V2"] = "Pancakeswap V2";
532
+ DexName["PANCAKESWAP_V3"] = "Pancakeswap V3";
533
+ DexName["PANCAKESWAP_STABLE"] = "Pancakeswap Stable";
534
+ DexName["PANGOLIN_V2"] = "Pangolin V2";
535
+ DexName["PHARAOH_SOLIDLY"] = "Pharaoh Solidly";
536
+ DexName["PHARAOH_V3"] = "Pharaoh V3";
537
+ DexName["PLATYPUS"] = "Platypus";
538
+ DexName["PRINTR"] = "Printr";
539
+ DexName["PROJECT_X_V3"] = "Project X V3";
540
+ DexName["QUICKSWAP_V2"] = "Quickswap V2";
541
+ DexName["QUICKSWAP_V3"] = "Quickswap V3";
542
+ DexName["RAMSES_SOLIDLY"] = "Ramses Solidly";
543
+ DexName["RA_V3"] = "Ra V3";
544
+ DexName["RAMSES_V3"] = "Ramses V3";
545
+ DexName["SATSUMA"] = "Satsuma";
546
+ DexName["SAUCERSWAP_V2"] = "Saucerswap V2";
547
+ DexName["SHADOW_V2"] = "Shadow V2";
548
+ DexName["SHADOW_V3"] = "Shadow V3";
549
+ DexName["SONEX_V3"] = "Sonex V3";
550
+ DexName["SPOOKYSWAP_V2"] = "Spookyswap V2";
551
+ DexName["STELLASWAP_V2"] = "Stellaswap V2";
552
+ DexName["STELLASWAP_V3"] = "Stellaswap V3";
553
+ DexName["STELLASWAP_V4"] = "Stellaswap V4";
554
+ DexName["STELLASWAP_SADDLE"] = "Stellaswap Saddle";
555
+ DexName["SURGE_V3"] = "Surge V3";
556
+ DexName["SUSHISWAP_V2"] = "Sushiswap V2";
557
+ DexName["SUSHISWAP_V3"] = "Sushiswap V3";
558
+ DexName["SWAPBASED_V2"] = "Swapbased V2";
559
+ DexName["SYNTHSWAP_V2"] = "SynthSwap V2";
560
+ DexName["SYNTHSWAP_V3"] = "SynthSwap V3";
561
+ DexName["SKYDROME"] = "Skydrome";
562
+ DexName["SWAPR_V3"] = "Swapr V3";
563
+ DexName["THENA_SOLIDLY"] = "Thena Solidly";
564
+ DexName["THENA_V3"] = "Thena V3";
565
+ DexName["TRADERJOE_V2"] = "Trader Joe V2";
566
+ DexName["TRADERJOE_V21"] = "Trader Joe V2.1";
567
+ DexName["TRADERJOE_V22"] = "Trader Joe V2.2";
568
+ DexName["TRIDENT"] = "Trident";
569
+ DexName["THRUSTER_V3"] = "Thruster V3";
570
+ DexName["THRUSTER_V2"] = "Thruster V2";
571
+ DexName["UBESWAP_V2"] = "Ubeswap V2";
572
+ DexName["UBESWAP_V3"] = "Ubeswap V3";
573
+ DexName["UNISWAP_V2"] = "Uniswap V2";
574
+ DexName["UNISWAP_V3"] = "Uniswap V3";
575
+ DexName["WAGMI_V3"] = "Wagmi V3";
576
+ DexName["WIGOSWAP_V2"] = "Wigoswap V2";
577
+ DexName["WOMBAT"] = "Wombat";
578
+ DexName["VELODROME_SOLIDLY"] = "Velodrome Solidly";
579
+ DexName["VELODROME_V2"] = "Velodrome V2";
580
+ DexName["VELODROME_V3"] = "Velodrome V3";
581
+ DexName["VELOCIMETER"] = "Velocimeter";
582
+ DexName["ZYBERSWAP_V2"] = "Zyberswap V2";
583
+ DexName["ZYBERSWAP_V3"] = "Zyberswap V3";
584
+ })(DexName || (dexes.DexName = DexName = {}));
585
+ // identifiers dex adapters
586
+ var DexType;
587
+ (function (DexType) {
588
+ // EVM
589
+ DexType["ALGEBRA"] = "algebra";
590
+ DexType["ALGEBRA_V4"] = "algebra-v4";
591
+ DexType["BALANCER_V2"] = "balancer-v2";
592
+ DexType["CURVE"] = "curve";
593
+ DexType["GMX"] = "gmx";
594
+ DexType["KYBERSWAP_ELASTIC"] = "kyberswap-elastic";
595
+ DexType["PLATYPUS"] = "platypus";
596
+ DexType["PANCAKESWAP_STABLE"] = "pancakeswap-stable";
597
+ DexType["PRINTR"] = "printr";
598
+ DexType["SADDLE"] = "saddle";
599
+ DexType["SLIPSTREAM"] = "slipstream";
600
+ DexType["SOLIDLY"] = "solidly";
601
+ DexType["TRADERJOE_V21"] = "traderjoe-v21";
602
+ DexType["TRADERJOE_V22"] = "traderjoe-v22";
603
+ DexType["TRIDENT"] = "trident";
604
+ DexType["WOMBAT"] = "wombat";
605
+ DexType["UNISWAP_V2"] = "uniswap-v2";
606
+ DexType["UNISWAP_V3"] = "uniswap-v3";
607
+ DexType["MENTO_V2"] = "mento-v2";
608
+ // COSMOS
609
+ DexType["OSMOSIS"] = "osmosis";
610
+ DexType["ASTROPORT"] = "astroport";
611
+ // ONCE WE START ADDING DEXES WE WILL BE MOVING THEM ABOVE
612
+ /*
613
+ DUALITY = "Duality",
614
+ */
615
+ })(DexType || (dexes.DexType = DexType = {}));
616
+
617
+ return dexes;
618
+ }
619
+
620
+ var errors = {};
621
+
622
+ var hasRequiredErrors;
623
+
624
+ function requireErrors () {
625
+ if (hasRequiredErrors) return errors;
626
+ hasRequiredErrors = 1;
627
+ Object.defineProperty(errors, "__esModule", { value: true });
628
+ errors.ErrorType = void 0;
629
+ var ErrorType;
630
+ (function (ErrorType) {
631
+ ErrorType["SCHEMA_VALIDATION_ERROR"] = "SCHEMA_VALIDATION_ERROR";
632
+ ErrorType["PATH_FINDER_ERROR"] = "PATH_FINDER_ERROR";
633
+ ErrorType["QUOTE_ERROR"] = "QUOTE_ERROR";
634
+ ErrorType["ROUTE_ERROR"] = "ROUTE_ERROR";
635
+ ErrorType["BAD_REQUEST"] = "BAD_REQUEST";
636
+ ErrorType["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
637
+ ErrorType["RATE_LIMIT"] = "RATE_LIMIT";
638
+ ErrorType["MAINTENANCE"] = "MAINTENANCE";
639
+ ErrorType["UNAUTHORIZED"] = "UNAUTHORIZED";
640
+ ErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
641
+ })(ErrorType || (errors.ErrorType = ErrorType = {}));
642
+
643
+ return errors;
644
+ }
645
+
646
+ var tokens = {};
647
+
648
+ var hasRequiredTokens;
649
+
650
+ function requireTokens () {
651
+ if (hasRequiredTokens) return tokens;
652
+ hasRequiredTokens = 1;
653
+ Object.defineProperty(tokens, "__esModule", { value: true });
654
+ tokens.Volatility = void 0;
655
+ var Volatility;
656
+ (function (Volatility) {
657
+ Volatility[Volatility["SUPER_STABLE"] = 0] = "SUPER_STABLE";
658
+ Volatility[Volatility["STABLE"] = 1] = "STABLE";
659
+ Volatility[Volatility["HIGH_CAP"] = 2] = "HIGH_CAP";
660
+ Volatility[Volatility["VOLATILE"] = 3] = "VOLATILE";
661
+ })(Volatility || (tokens.Volatility = Volatility = {}));
662
+
663
+ return tokens;
664
+ }
665
+
666
+ var fees = {};
667
+
668
+ var hasRequiredFees;
669
+
670
+ function requireFees () {
671
+ if (hasRequiredFees) return fees;
672
+ hasRequiredFees = 1;
673
+ Object.defineProperty(fees, "__esModule", { value: true });
674
+ fees.GasCostType = fees.FeeType = void 0;
675
+ var FeeType;
676
+ (function (FeeType) {
677
+ FeeType["AXELAR_FEE"] = "Axelar fee";
678
+ FeeType["GAS_RECEIVER_FEE"] = "Gas receiver fee";
679
+ FeeType["BOOST_FEE"] = "Boost fee";
680
+ FeeType["INTEGRATOR_FEE"] = "Integrator fee";
681
+ FeeType["CHAINFLIP_FEE"] = "Chainflip fee";
682
+ FeeType["EXECUTION_FEE"] = "Execution fee";
683
+ FeeType["SETTLEMENT_FEE"] = "Settlement fee";
684
+ FeeType["SERVICE_FEE"] = "Service fee";
685
+ })(FeeType || (fees.FeeType = FeeType = {}));
686
+ var GasCostType;
687
+ (function (GasCostType) {
688
+ GasCostType["EXECUTE_CALL"] = "executeCall";
689
+ GasCostType["JITO_TIP_FEE"] = "jitoTipFee";
690
+ })(GasCostType || (fees.GasCostType = GasCostType = {}));
691
+
692
+ return fees;
693
+ }
694
+
695
+ var quote = {};
696
+
697
+ var hasRequiredQuote;
698
+
699
+ function requireQuote () {
700
+ if (hasRequiredQuote) return quote;
701
+ hasRequiredQuote = 1;
702
+ Object.defineProperty(quote, "__esModule", { value: true });
703
+
704
+ return quote;
705
+ }
706
+
707
+ var routes = {};
708
+
709
+ var hasRequiredRoutes;
710
+
711
+ function requireRoutes () {
712
+ if (hasRequiredRoutes) return routes;
713
+ hasRequiredRoutes = 1;
714
+ Object.defineProperty(routes, "__esModule", { value: true });
715
+ routes.ActionStage = routes.FEES_ENUM = routes.ActionType = void 0;
716
+ var ActionType;
717
+ (function (ActionType) {
718
+ ActionType["SWAP"] = "swap";
719
+ ActionType["WRAP"] = "wrap";
720
+ ActionType["BRIDGE"] = "bridge";
721
+ ActionType["IBC_TRANSFER"] = "ibc-transfer";
722
+ ActionType["CUSTOM"] = "custom";
723
+ ActionType["FEE"] = "fee";
724
+ ActionType["RFQ"] = "rfq";
725
+ })(ActionType || (routes.ActionType = ActionType = {}));
726
+ var FEES_ENUM;
727
+ (function (FEES_ENUM) {
728
+ FEES_ENUM["PLATFORM"] = "PLATFORM";
729
+ FEES_ENUM["INTEGRATOR"] = "INTEGRATOR";
730
+ FEES_ENUM["CHAIN"] = "CHAIN";
731
+ FEES_ENUM["TOKEN"] = "TOKEN";
732
+ FEES_ENUM["TIER"] = "TIER";
733
+ })(FEES_ENUM || (routes.FEES_ENUM = FEES_ENUM = {}));
734
+ var ActionStage;
735
+ (function (ActionStage) {
736
+ ActionStage[ActionStage["EVM_SOURCE"] = 0] = "EVM_SOURCE";
737
+ ActionStage[ActionStage["EVM_DESTINATION"] = 1] = "EVM_DESTINATION";
738
+ ActionStage[ActionStage["EVM_TRANSIENT"] = 2] = "EVM_TRANSIENT";
739
+ ActionStage[ActionStage["EVM_ONLY"] = 3] = "EVM_ONLY";
740
+ ActionStage[ActionStage["COSMOS_SOURCE"] = 4] = "COSMOS_SOURCE";
741
+ ActionStage[ActionStage["COSMOS_DESTINATION"] = 5] = "COSMOS_DESTINATION";
742
+ ActionStage[ActionStage["COSMOS_TRANSIENT"] = 6] = "COSMOS_TRANSIENT";
743
+ ActionStage[ActionStage["COSMOS_ONLY"] = 7] = "COSMOS_ONLY";
744
+ ActionStage[ActionStage["BTC_SOURCE"] = 8] = "BTC_SOURCE";
745
+ ActionStage[ActionStage["BTC_DESTINATION"] = 9] = "BTC_DESTINATION";
746
+ ActionStage[ActionStage["SOLANA_SOURCE"] = 10] = "SOLANA_SOURCE";
747
+ ActionStage[ActionStage["SOLANA_DESTINATION"] = 11] = "SOLANA_DESTINATION";
748
+ ActionStage[ActionStage["SOLANA_ONLY"] = 12] = "SOLANA_ONLY";
749
+ ActionStage[ActionStage["SUI_SOURCE"] = 13] = "SUI_SOURCE";
750
+ ActionStage[ActionStage["SUI_DESTINATION"] = 14] = "SUI_DESTINATION";
751
+ ActionStage[ActionStage["XRPL_SOURCE"] = 15] = "XRPL_SOURCE";
752
+ ActionStage[ActionStage["XRPL_DESTINATION"] = 16] = "XRPL_DESTINATION";
753
+ ActionStage[ActionStage["STELLAR_SOURCE"] = 17] = "STELLAR_SOURCE";
754
+ ActionStage[ActionStage["STELLAR_DESTINATION"] = 18] = "STELLAR_DESTINATION";
755
+ })(ActionStage || (routes.ActionStage = ActionStage = {}));
756
+
757
+ return routes;
758
+ }
759
+
760
+ var squid = {};
761
+
762
+ var hasRequiredSquid;
763
+
764
+ function requireSquid () {
765
+ if (hasRequiredSquid) return squid;
766
+ hasRequiredSquid = 1;
767
+ Object.defineProperty(squid, "__esModule", { value: true });
768
+ squid.SuiCoralCallType = squid.CosmosCallType = squid.SquidCallType = squid.SquidRouteType = squid.SquidDataType = void 0;
769
+ var SquidDataType;
770
+ (function (SquidDataType) {
771
+ SquidDataType["OnChainExecution"] = "ON_CHAIN_EXECUTION";
772
+ SquidDataType["OnChainExecutionWithSignature"] = "ON_CHAIN_EXECUTION_WITH_SIGNATURE";
773
+ SquidDataType["ChainflipDepositAddress"] = "CHAINFLIP_DEPOSIT_ADDRESS";
774
+ SquidDataType["DepositAddressCalldata"] = "DEPOSIT_ADDRESS_CALLDATA";
775
+ SquidDataType["DepositAddressWithMemo"] = "DEPOSIT_ADDRESS_WITH_MEMO";
776
+ SquidDataType["DepositAddressWithSignature"] = "DEPOSIT_ADDRESS_WITH_SIGNATURE";
777
+ })(SquidDataType || (squid.SquidDataType = SquidDataType = {}));
778
+ var SquidRouteType;
779
+ (function (SquidRouteType) {
780
+ SquidRouteType["CALL_BRIDGE_CALL"] = "CALL_BRIDGE_CALL";
781
+ SquidRouteType["CALL_BRIDGE"] = "CALL_BRIDGE";
782
+ SquidRouteType["BRIDGE_CALL"] = "BRIDGE_CALL";
783
+ SquidRouteType["BRIDGE"] = "BRIDGE";
784
+ SquidRouteType["EVM_ONLY"] = "EVM_ONLY";
785
+ SquidRouteType["COSMOS_ONLY"] = "COSMOS_ONLY";
786
+ SquidRouteType["SOLANA_ONLY"] = "SOLANA_ONLY";
787
+ SquidRouteType["RFQ"] = "RFQ";
788
+ SquidRouteType["CORAL_V2"] = "CORAL_V2";
789
+ SquidRouteType["FUND_AND_RUN_MULTICALL"] = "FUND_AND_RUN_MULTICALL";
790
+ })(SquidRouteType || (squid.SquidRouteType = SquidRouteType = {}));
791
+ var SquidCallType;
792
+ (function (SquidCallType) {
793
+ SquidCallType[SquidCallType["DEFAULT"] = 0] = "DEFAULT";
794
+ SquidCallType[SquidCallType["FULL_TOKEN_BALANCE"] = 1] = "FULL_TOKEN_BALANCE";
795
+ SquidCallType[SquidCallType["FULL_NATIVE_BALANCE"] = 2] = "FULL_NATIVE_BALANCE";
796
+ SquidCallType[SquidCallType["COLLECT_TOKEN_BALANCE"] = 3] = "COLLECT_TOKEN_BALANCE";
797
+ })(SquidCallType || (squid.SquidCallType = SquidCallType = {}));
798
+ var CosmosCallType;
799
+ (function (CosmosCallType) {
800
+ CosmosCallType[CosmosCallType["MULTICALL"] = 0] = "MULTICALL";
801
+ CosmosCallType[CosmosCallType["IBC_TRANSFER"] = 1] = "IBC_TRANSFER";
802
+ CosmosCallType[CosmosCallType["PFM"] = 2] = "PFM";
803
+ CosmosCallType[CosmosCallType["GMP"] = 3] = "GMP";
804
+ CosmosCallType[CosmosCallType["CCTP"] = 4] = "CCTP";
805
+ })(CosmosCallType || (squid.CosmosCallType = CosmosCallType = {}));
806
+ var SuiCoralCallType;
807
+ (function (SuiCoralCallType) {
808
+ SuiCoralCallType[SuiCoralCallType["DEFAULT"] = 0] = "DEFAULT";
809
+ })(SuiCoralCallType || (squid.SuiCoralCallType = SuiCoralCallType = {}));
810
+
811
+ return squid;
812
+ }
813
+
814
+ var status = {};
815
+
816
+ var hasRequiredStatus;
817
+
818
+ function requireStatus () {
819
+ if (hasRequiredStatus) return status;
820
+ hasRequiredStatus = 1;
821
+ Object.defineProperty(status, "__esModule", { value: true });
822
+ status.SendTokenStatus = status.CCTPStatus = status.RouteActionStatus = status.AxelarRouteAction = status.SquidTransactionStatus = void 0;
823
+ var SquidTransactionStatus;
824
+ (function (SquidTransactionStatus) {
825
+ SquidTransactionStatus["SUCCESS"] = "success";
826
+ SquidTransactionStatus["NEEDS_GAS"] = "needs_gas";
827
+ SquidTransactionStatus["ONGOING"] = "ongoing";
828
+ SquidTransactionStatus["PARTIAL_SUCCESS"] = "partial_success";
829
+ SquidTransactionStatus["NOT_FOUND"] = "not_found";
830
+ SquidTransactionStatus["FAILED_DESTINATION"] = "failed_on_destination";
831
+ SquidTransactionStatus["REFUNDED"] = "refunded";
832
+ })(SquidTransactionStatus || (status.SquidTransactionStatus = SquidTransactionStatus = {}));
833
+ var AxelarRouteAction;
834
+ (function (AxelarRouteAction) {
835
+ AxelarRouteAction["CALL"] = "call";
836
+ AxelarRouteAction["EXECUTED"] = "executed";
837
+ AxelarRouteAction["IBC_TRANSFER"] = "ibc_transfer";
838
+ AxelarRouteAction["SEND"] = "send";
839
+ AxelarRouteAction["VOTE"] = "vote";
840
+ AxelarRouteAction["IBC_SEND"] = "ibc_send";
841
+ AxelarRouteAction["GAS_PAID"] = "gas_paid";
842
+ AxelarRouteAction["APPROVED"] = "approved";
843
+ })(AxelarRouteAction || (status.AxelarRouteAction = AxelarRouteAction = {}));
844
+ var RouteActionStatus;
845
+ (function (RouteActionStatus) {
846
+ RouteActionStatus["SUCCESS"] = "success";
847
+ RouteActionStatus["FAILURE"] = "failure";
848
+ RouteActionStatus["NOT_FOUND"] = "not_found";
849
+ RouteActionStatus["UNKNOWN"] = "unknown";
850
+ RouteActionStatus["AWAITING"] = "awaiting";
851
+ RouteActionStatus["REFUNDED"] = "refunded";
852
+ })(RouteActionStatus || (status.RouteActionStatus = RouteActionStatus = {}));
853
+ var CCTPStatus;
854
+ (function (CCTPStatus) {
855
+ CCTPStatus["ERROR"] = "error";
856
+ CCTPStatus["COMPLETE"] = "complete";
857
+ CCTPStatus["PENDING"] = "pending";
858
+ })(CCTPStatus || (status.CCTPStatus = CCTPStatus = {}));
859
+ var SendTokenStatus;
860
+ (function (SendTokenStatus) {
861
+ SendTokenStatus["ASSET_SENT"] = "asset_sent";
862
+ SendTokenStatus["EXECUTED"] = "executed";
863
+ })(SendTokenStatus || (status.SendTokenStatus = SendTokenStatus = {}));
864
+
865
+ return status;
866
+ }
867
+
868
+ var wrappers = {};
869
+
870
+ var hasRequiredWrappers;
871
+
872
+ function requireWrappers () {
873
+ if (hasRequiredWrappers) return wrappers;
874
+ hasRequiredWrappers = 1;
875
+ Object.defineProperty(wrappers, "__esModule", { value: true });
876
+ wrappers.WrapDirection = wrappers.WrapperName = wrappers.WrapperType = void 0;
877
+ var WrapperType;
878
+ (function (WrapperType) {
879
+ WrapperType["WRAPPED_NATIVE"] = "WrappedNative";
880
+ WrapperType["OVERNIGHT"] = "Overnight";
881
+ WrapperType["DEUS"] = "Deus";
882
+ WrapperType["WSTETH"] = "WstETH";
883
+ WrapperType["WRAPPED_MAI"] = "WrappedMAI";
884
+ WrapperType["WRAPPED_USDY"] = "WrappedUSDY";
885
+ WrapperType["CONVERTER_DAI_USDS"] = "ConverterDAIUSDS";
886
+ WrapperType["CONVERTER_MKR_SKY"] = "ConverterMKRSKY";
887
+ WrapperType["SAUCERSWAP_WRAPPED_HBAR"] = "SaucerSwapWrappedHBAR";
888
+ })(WrapperType || (wrappers.WrapperType = WrapperType = {}));
889
+ var WrapperName;
890
+ (function (WrapperName) {
891
+ WrapperName["WRAPPED_NATIVE"] = "Native Wrapper";
892
+ WrapperName["OVERNIGHT"] = "Overnight Finance";
893
+ WrapperName["DEUS"] = "DEUS Finance";
894
+ WrapperName["WSTETH"] = "Lido Wrapped stETH";
895
+ WrapperName["WRAPPED_MAI"] = "QiDAO Wrapped MAI";
896
+ WrapperName["WRAPPED_USDY"] = "Ondo Finance";
897
+ WrapperName["SKY_PROTOCOL_USDS"] = "DAI USDS Converter";
898
+ WrapperName["SKY_PROTOCOL_SKY"] = "MKR SKY Converter";
899
+ WrapperName["SAUCERSWAP_HBAR_WRAPPER"] = "SaucerSwap HBAR Wrapper";
900
+ })(WrapperName || (wrappers.WrapperName = WrapperName = {}));
901
+ var WrapDirection;
902
+ (function (WrapDirection) {
903
+ WrapDirection["WRAP"] = "wrap";
904
+ WrapDirection["UNWRAP"] = "unwrap";
905
+ })(WrapDirection || (wrappers.WrapDirection = WrapDirection = {}));
906
+
907
+ return wrappers;
908
+ }
909
+
910
+ var path = {};
911
+
912
+ var hasRequiredPath;
913
+
914
+ function requirePath () {
915
+ if (hasRequiredPath) return path;
916
+ hasRequiredPath = 1;
917
+ Object.defineProperty(path, "__esModule", { value: true });
918
+ path.PathFeature = void 0;
919
+ var PathFeature;
920
+ (function (PathFeature) {
921
+ PathFeature["includeCoralPaths"] = "1";
922
+ PathFeature["onlyCoralPaths"] = "2";
923
+ PathFeature["includeCoralV2Paths"] = "3";
924
+ PathFeature["onlyCoralV2Paths"] = "4";
925
+ PathFeature["includeCoralV2PreHooks"] = "5";
926
+ PathFeature["includeCoralV2PostHooks"] = "6";
927
+ PathFeature["isExactOutput"] = "7";
928
+ // Add more features as needed
929
+ })(PathFeature || (path.PathFeature = PathFeature = {}));
930
+
931
+ return path;
932
+ }
933
+
934
+ var compliance = {};
935
+
936
+ var hasRequiredCompliance;
937
+
938
+ function requireCompliance () {
939
+ if (hasRequiredCompliance) return compliance;
940
+ hasRequiredCompliance = 1;
941
+ Object.defineProperty(compliance, "__esModule", { value: true });
942
+ compliance.TRMIdentifier = void 0;
943
+ var TRMIdentifier;
944
+ (function (TRMIdentifier) {
945
+ TRMIdentifier["ALGORAND"] = "algorand";
946
+ TRMIdentifier["ARBITRUM"] = "arbitrum";
947
+ TRMIdentifier["AVALANCHE"] = "avalanche_c_chain";
948
+ TRMIdentifier["BASE"] = "base";
949
+ TRMIdentifier["BERACHAIN"] = "berachain";
950
+ TRMIdentifier["BINANCE"] = "binance";
951
+ TRMIdentifier["BINANCE_SMART_CHAIN"] = "binance_smart_chain";
952
+ TRMIdentifier["BITCOIN"] = "bitcoin";
953
+ TRMIdentifier["BITCOIN_CASH"] = "bitcoin_cash";
954
+ TRMIdentifier["BYTOM"] = "bytom";
955
+ TRMIdentifier["CARDANO"] = "cardano";
956
+ TRMIdentifier["CELO"] = "celo";
957
+ TRMIdentifier["COSMOS"] = "cosmos";
958
+ TRMIdentifier["DASH"] = "dash";
959
+ TRMIdentifier["DOGECOIN"] = "dogecoin";
960
+ TRMIdentifier["ELASTOS"] = "elastos";
961
+ TRMIdentifier["ETHEREUM"] = "ethereum";
962
+ TRMIdentifier["ETHEREUM_CLASSIC"] = "ethereum_classic";
963
+ TRMIdentifier["ELROND"] = "elrond";
964
+ TRMIdentifier["FANTOM"] = "fantom";
965
+ TRMIdentifier["FILECOIN"] = "filecoin";
966
+ TRMIdentifier["HEDERA"] = "hedera";
967
+ TRMIdentifier["ICON"] = "icon";
968
+ TRMIdentifier["IOST"] = "iost";
969
+ TRMIdentifier["IOTA"] = "iota";
970
+ TRMIdentifier["KLAYTN"] = "klaytn";
971
+ TRMIdentifier["LISK"] = "lisk";
972
+ TRMIdentifier["LITECOIN"] = "litecoin";
973
+ TRMIdentifier["MONERO"] = "monero";
974
+ TRMIdentifier["NEBULAS"] = "nebulas";
975
+ TRMIdentifier["NEO"] = "neo";
976
+ TRMIdentifier["OASIS"] = "oasis";
977
+ TRMIdentifier["OMNI"] = "omni";
978
+ TRMIdentifier["ONTOLOGY"] = "ontology";
979
+ TRMIdentifier["OPTIMISM"] = "optimism";
980
+ TRMIdentifier["PAI"] = "pai";
981
+ TRMIdentifier["POLKADOT"] = "polkadot";
982
+ TRMIdentifier["POLYGON"] = "polygon";
983
+ TRMIdentifier["QTUM"] = "qtum";
984
+ TRMIdentifier["XRPLEDGER"] = "ripple";
985
+ TRMIdentifier["SOLANA"] = "solana";
986
+ TRMIdentifier["STEEM"] = "steem";
987
+ TRMIdentifier["STELLAR"] = "stellar";
988
+ TRMIdentifier["TEZOS"] = "tezos";
989
+ TRMIdentifier["TRON"] = "tron";
990
+ TRMIdentifier["ZCASH"] = "zcash";
991
+ TRMIdentifier["ZILLIQA"] = "zilliqa";
992
+ })(TRMIdentifier || (compliance.TRMIdentifier = TRMIdentifier = {}));
993
+
994
+ return compliance;
995
+ }
996
+
997
+ var rfq = {};
998
+
999
+ var hasRequiredRfq;
1000
+
1001
+ function requireRfq () {
1002
+ if (hasRequiredRfq) return rfq;
1003
+ hasRequiredRfq = 1;
1004
+ Object.defineProperty(rfq, "__esModule", { value: true });
1005
+ rfq.LayerZeroEndpoint = rfq.CoralMessageProvider = rfq.HubEventType = rfq.SpokeEventType = void 0;
1006
+ var SpokeEventType;
1007
+ (function (SpokeEventType) {
1008
+ SpokeEventType["ORDER_CREATED"] = "OrderCreated";
1009
+ SpokeEventType["ORDER_FILLED"] = "OrderFilled";
1010
+ SpokeEventType["ORDER_REFUNDED"] = "OrderRefunded";
1011
+ SpokeEventType["SETTLEMENT_FORWARDED"] = "SettlementForwarded";
1012
+ SpokeEventType["TOKENS_RELEASED"] = "TokensReleased";
1013
+ })(SpokeEventType || (rfq.SpokeEventType = SpokeEventType = {}));
1014
+ var HubEventType;
1015
+ (function (HubEventType) {
1016
+ HubEventType["SETTLEMENT_FILLED"] = "SettlementFilled";
1017
+ HubEventType["SETTLEMENT_PROCESSED"] = "SettlementProcessed";
1018
+ })(HubEventType || (rfq.HubEventType = HubEventType = {}));
1019
+ var CoralMessageProvider;
1020
+ (function (CoralMessageProvider) {
1021
+ CoralMessageProvider["UNSUPPORTED"] = "Unsupported";
1022
+ CoralMessageProvider["AXELAR"] = "Axelar";
1023
+ CoralMessageProvider["LAYER_ZERO"] = "LayerZero";
1024
+ })(CoralMessageProvider || (rfq.CoralMessageProvider = CoralMessageProvider = {}));
1025
+ var LayerZeroEndpoint;
1026
+ (function (LayerZeroEndpoint) {
1027
+ LayerZeroEndpoint["DEFAULT"] = "0";
1028
+ LayerZeroEndpoint["ETHEREUM"] = "30101";
1029
+ LayerZeroEndpoint["OPTIMISM"] = "30111";
1030
+ LayerZeroEndpoint["BINANCE"] = "30102";
1031
+ LayerZeroEndpoint["GNOSIS"] = "30145";
1032
+ LayerZeroEndpoint["POLYGON"] = "30109";
1033
+ LayerZeroEndpoint["SONIC"] = "30332";
1034
+ LayerZeroEndpoint["FANTOM"] = "30112";
1035
+ LayerZeroEndpoint["HYPER_EVM"] = "30367";
1036
+ LayerZeroEndpoint["SONEIUM"] = "30340";
1037
+ LayerZeroEndpoint["PEAQ"] = "30302";
1038
+ LayerZeroEndpoint["BASE"] = "30184";
1039
+ LayerZeroEndpoint["ARBITRUM"] = "30110";
1040
+ LayerZeroEndpoint["CELO"] = "30125";
1041
+ LayerZeroEndpoint["AVALANCHE"] = "30106";
1042
+ LayerZeroEndpoint["LINEA"] = "30183";
1043
+ LayerZeroEndpoint["BERACHAIN"] = "30362";
1044
+ LayerZeroEndpoint["BLAST"] = "30243";
1045
+ })(LayerZeroEndpoint || (rfq.LayerZeroEndpoint = LayerZeroEndpoint = {}));
1046
+
1047
+ return rfq;
1048
+ }
1049
+
1050
+ var gas = {};
1051
+
1052
+ var hasRequiredGas;
1053
+
1054
+ function requireGas () {
1055
+ if (hasRequiredGas) return gas;
1056
+ hasRequiredGas = 1;
1057
+ Object.defineProperty(gas, "__esModule", { value: true });
1058
+
1059
+ return gas;
1060
+ }
1061
+
1062
+ var featureFlag = {};
1063
+
1064
+ var hasRequiredFeatureFlag;
1065
+
1066
+ function requireFeatureFlag () {
1067
+ if (hasRequiredFeatureFlag) return featureFlag;
1068
+ hasRequiredFeatureFlag = 1;
1069
+ Object.defineProperty(featureFlag, "__esModule", { value: true });
1070
+ featureFlag.FeatureFlagType = void 0;
1071
+ var FeatureFlagType;
1072
+ (function (FeatureFlagType) {
1073
+ FeatureFlagType["MaintenanceMode"] = "maintenance";
1074
+ FeatureFlagType["Bitcoin"] = "bitcoin";
1075
+ FeatureFlagType["BitcoinCoralV2"] = "bitcoinCoralV2";
1076
+ FeatureFlagType["Solana"] = "solana";
1077
+ FeatureFlagType["SolanaCoralV2"] = "solanaCoralV2";
1078
+ FeatureFlagType["Chainflip"] = "chainflip";
1079
+ FeatureFlagType["Coral"] = "coral";
1080
+ FeatureFlagType["CoralOnly"] = "coralOnly";
1081
+ FeatureFlagType["CoralV2"] = "coralV2";
1082
+ FeatureFlagType["CoralV2PostHooks"] = "coralV2PostHooks";
1083
+ FeatureFlagType["CoralV2PreHooks"] = "coralV2PreHooks";
1084
+ FeatureFlagType["ChainflipMultihop"] = "chainflipMultihop";
1085
+ FeatureFlagType["SagaRoutes"] = "sagaRoutes";
1086
+ FeatureFlagType["BypassCompliance"] = "bypassCompliance";
1087
+ FeatureFlagType["Ripple"] = "ripple";
1088
+ FeatureFlagType["RippleCoralV2"] = "rippleCoralV2";
1089
+ FeatureFlagType["Megabridge"] = "megabridge";
1090
+ FeatureFlagType["Stellar"] = "stellar";
1091
+ FeatureFlagType["StellarCoralV2"] = "stellarCoralV2";
1092
+ FeatureFlagType["Mantra"] = "mantra";
1093
+ FeatureFlagType["HederaPilot"] = "hederaPilot";
1094
+ FeatureFlagType["Citrea"] = "citrea";
1095
+ FeatureFlagType["HederaCoralV2"] = "hederaCoralV2";
1096
+ FeatureFlagType["HederaBlocked"] = "hederaBlocked";
1097
+ FeatureFlagType["AddressQuoteRateLimit"] = "addressQuoteRateLimit";
1098
+ FeatureFlagType["ExactOutputRouting"] = "exactOutputRouting";
1099
+ FeatureFlagType["Tempo"] = "tempo";
1100
+ FeatureFlagType["TempoCoralV2"] = "tempoCoralV2";
1101
+ FeatureFlagType["AddressValidation"] = "addressValidation";
1102
+ })(FeatureFlagType || (featureFlag.FeatureFlagType = FeatureFlagType = {}));
1103
+
1104
+ return featureFlag;
1105
+ }
1106
+
1107
+ var depositAddress = {};
1108
+
1109
+ var hasRequiredDepositAddress;
1110
+
1111
+ function requireDepositAddress () {
1112
+ if (hasRequiredDepositAddress) return depositAddress;
1113
+ hasRequiredDepositAddress = 1;
1114
+ Object.defineProperty(depositAddress, "__esModule", { value: true });
1115
+
1116
+ return depositAddress;
1117
+ }
1118
+
1119
+ var hasRequiredDist;
1120
+
1121
+ function requireDist () {
1122
+ if (hasRequiredDist) return dist;
1123
+ hasRequiredDist = 1;
1124
+ (function (exports$1) {
1125
+ var __createBinding = (dist && dist.__createBinding) || (Object.create ? (function(o, m, k, k2) {
1126
+ if (k2 === undefined) k2 = k;
1127
+ var desc = Object.getOwnPropertyDescriptor(m, k);
1128
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
1129
+ desc = { enumerable: true, get: function() { return m[k]; } };
1130
+ }
1131
+ Object.defineProperty(o, k2, desc);
1132
+ }) : (function(o, m, k, k2) {
1133
+ if (k2 === undefined) k2 = k;
1134
+ o[k2] = m[k];
1135
+ }));
1136
+ var __exportStar = (dist && dist.__exportStar) || function(m, exports$1) {
1137
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding(exports$1, m, p);
1138
+ };
1139
+ Object.defineProperty(exports$1, "__esModule", { value: true });
1140
+ __exportStar(requireChains(), exports$1);
1141
+ __exportStar(requireBridges(), exports$1);
1142
+ __exportStar(requireDexes(), exports$1);
1143
+ __exportStar(requireErrors(), exports$1);
1144
+ __exportStar(requireTokens(), exports$1);
1145
+ __exportStar(requireFees(), exports$1);
1146
+ __exportStar(requireQuote(), exports$1);
1147
+ __exportStar(requireRoutes(), exports$1);
1148
+ __exportStar(requireSquid(), exports$1);
1149
+ __exportStar(requireStatus(), exports$1);
1150
+ __exportStar(requireWrappers(), exports$1);
1151
+ __exportStar(requirePath(), exports$1);
1152
+ __exportStar(requireCompliance(), exports$1);
1153
+ __exportStar(requireRfq(), exports$1);
1154
+ __exportStar(requireGas(), exports$1);
1155
+ __exportStar(requireFeatureFlag(), exports$1);
1156
+ __exportStar(requireDepositAddress(), exports$1);
1157
+
1158
+ } (dist));
1159
+ return dist;
1160
+ }
1161
+
1162
+ var distExports = requireDist();
1163
+
1164
+ const CHAIN_TYPE_META = {
1165
+ [distExports.ChainType.EVM]: {
1166
+ icon: "https://raw.githubusercontent.com/0xsquid/assets/main/images/webp128/chains/ethereum.webp",
1167
+ name: "Ethereum",
1168
+ },
1169
+ [distExports.ChainType.COSMOS]: {
1170
+ icon: "https://raw.githubusercontent.com/0xsquid/assets/main/squid-brand-assets/custom-chain-icons/cosmos.webp",
1171
+ name: "Cosmos",
1172
+ },
1173
+ [distExports.ChainType.BTC]: {
1174
+ icon: "https://raw.githubusercontent.com/0xsquid/assets/main/images/webp128/chains/bitcoin.webp",
1175
+ name: "Bitcoin",
1176
+ },
1177
+ [distExports.ChainType.SOLANA]: {
1178
+ icon: "https://raw.githubusercontent.com/0xsquid/assets/main/images/webp128/chains/solana.webp",
1179
+ name: "Solana",
1180
+ },
1181
+ [distExports.ChainType.SUI]: {
1182
+ icon: "https://raw.githubusercontent.com/0xsquid/assets/main/images/webp128/chains/sui.webp",
1183
+ name: "Sui",
1184
+ },
1185
+ [distExports.ChainType.XRPL]: {
1186
+ icon: "https://raw.githubusercontent.com/0xsquid/assets/main/images/webp128/chains/xrpl.webp",
1187
+ name: "XRPL",
1188
+ },
1189
+ [distExports.ChainType.STELLAR]: {
1190
+ icon: "https://raw.githubusercontent.com/0xsquid/assets/main/images/webp128/chains/stellar.webp",
1191
+ name: "Stellar",
1192
+ },
1193
+ };
1194
+
1195
+ const WALLET_PRIORITY_LIST = [
1196
+ "walletConnect",
1197
+ "metamask",
1198
+ "phantom",
1199
+ "rabby",
1200
+ "trustwallet",
1201
+ ];
1202
+ function walletSupportsChainType(wallet, chainType) {
1203
+ if (wallet.isMultiChain) {
1204
+ return wallet.supportedNetworks.some((n) => n.chainType === chainType);
1205
+ }
1206
+ return wallet.type === chainType;
1207
+ }
1208
+ function ConnectWalletView({ chainType }) {
1209
+ const { wallets } = reactHooks.useWallets();
1210
+ const { connectWallet, connectingWalletState } = reactHooks.useWallet();
1211
+ const pop = useRouter((s) => s.pop);
1212
+ const push = useRouter((s) => s.push);
1213
+ const [search, setSearch] = React.useState("");
1214
+ const requiredChainType = chainType;
1215
+ const connectingConnectorId = connectingWalletState.status === reactHooks.ConnectingWalletStatus.CONNECTING
1216
+ ? connectingWalletState.wallet?.connectorId
1217
+ : undefined;
1218
+ const isMultiChainWallet = React.useCallback((wallet) => !requiredChainType &&
1219
+ wallet.isMultiChain &&
1220
+ wallet.supportedNetworks.length > 1 &&
1221
+ !!wallet.isInstalled?.(), [requiredChainType]);
1222
+ const onWalletClicked = async (wallet) => {
1223
+ if (isMultiChainWallet(wallet)) {
1224
+ push({ id: "select-chain", wallet });
1225
+ return;
1226
+ }
1227
+ try {
1228
+ const selectedChainTypes = requiredChainType
1229
+ ? [requiredChainType]
1230
+ : undefined;
1231
+ const connected = await connectWallet({ wallet, selectedChainTypes });
1232
+ if (connected) {
1233
+ pop();
1234
+ }
1235
+ }
1236
+ catch (error) {
1237
+ console.error("Failed to connect wallet:", error);
1238
+ }
1239
+ };
1240
+ const sortedWallets = React.useMemo(() => wallets.toSorted((a, b) => {
1241
+ if (requiredChainType) {
1242
+ const aSupports = walletSupportsChainType(a, requiredChainType);
1243
+ const bSupports = walletSupportsChainType(b, requiredChainType);
1244
+ if (aSupports !== bSupports)
1245
+ return aSupports ? -1 : 1;
1246
+ }
1247
+ return reactHooks.sortWallets(a, b, {
1248
+ isMobile: false,
1249
+ priorityList: WALLET_PRIORITY_LIST,
1250
+ });
1251
+ }), [wallets, requiredChainType]);
1252
+ const fuse = React.useMemo(() => new Fuse(sortedWallets, {
1253
+ isCaseSensitive: false,
1254
+ includeScore: false,
1255
+ minMatchCharLength: 1,
1256
+ threshold: 0.4,
1257
+ keys: ["name"],
1258
+ }), [sortedWallets]);
1259
+ const walletsToDisplay = React.useMemo(() => {
1260
+ if (search.length === 0)
1261
+ return sortedWallets;
1262
+ return fuse.search(search).map((result) => result.item);
1263
+ }, [fuse, search, sortedWallets]);
1264
+ const chainTypeWallets = React.useMemo(() => {
1265
+ if (!requiredChainType)
1266
+ return walletsToDisplay;
1267
+ return walletsToDisplay.filter((w) => walletSupportsChainType(w, requiredChainType));
1268
+ }, [walletsToDisplay, requiredChainType]);
1269
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SubNavBar, { input: {
1270
+ placeholder: requiredChainType
1271
+ ? `Select ${CHAIN_TYPE_META[requiredChainType].name} wallet`
1272
+ : "Select wallet",
1273
+ onChange: (e) => setSearch(e.target.value),
1274
+ autoComplete: "off",
1275
+ autoCorrect: "off",
1276
+ spellCheck: false,
1277
+ } }), jsxRuntime.jsx(ViewContainer, { children: jsxRuntime.jsx("ul", { className: "tw-flex tw-flex-col tw-items-start tw-flex-1 tw-self-stretch", children: chainTypeWallets.map((wallet) => (jsxRuntime.jsx(WalletListItem, { wallet: wallet, isConnecting: wallet.connectorId === connectingConnectorId, showAsMultiChain: isMultiChainWallet(wallet), onClick: () => onWalletClicked(wallet) }, wallet.connectorId))) }) })] }));
1278
+ }
1279
+
1280
+ function Button(props) {
1281
+ return (jsxRuntime.jsx("button", { ...props, className: ui.cn("tw-flex tw-justify-center tw-items-center tw-flex-1 tw-self-stretch tw-rounded-2xl tw-text-lg tw-text-grey-900 tw-bg-grey-100 tw-bg-cta-button-light dark:tw-bg-cta-button-dark tw-shadow-cta-button-light dark:tw-shadow-cta-button-dark",
1282
+ // disabled
1283
+ "disabled:tw-cursor-not-allowed disabled:tw-bg-grey-800 disabled:tw-text-grey-600 disabled:dark:tw-bg-grey-800 disabled:dark:tw-text-grey-500", props.className) }));
1284
+ }
1285
+
1286
+ const useDepositStore = zustand.create((set) => ({
1287
+ config: null,
1288
+ setConfig: (config) => set({ config }),
1289
+ }));
1290
+ const useIsPaymentMode = () => useDepositStore((s) => s.config?.mode === "payment");
1291
+ const usePaymentAmount = () => useDepositStore((s) => s.config?.mode === "payment" ? s.config.amount : null);
1292
+
1293
+ function formatRouteError(message) {
1294
+ if (message === "Low liquidity, please reduce swap amount and try again") {
1295
+ return "Low liquidity, select a different token or reduce the amount";
1296
+ }
1297
+ return message;
1298
+ }
1299
+ function useDepositRoute() {
1300
+ const config = useDepositStore((s) => s.config);
1301
+ const { fromChain, fromToken, toChain, toToken, fromAmount, toAmount } = reactHooks.useSwap();
1302
+ const { connectedAddress } = reactHooks.useMultiChainWallet(fromChain);
1303
+ const sourceAddress = connectedAddress.address;
1304
+ const currentView = useRouter(selectCurrentView);
1305
+ const quoteOnly = !sourceAddress || !config?.destinationAddress;
1306
+ const enabled = currentView.id === "main" &&
1307
+ Boolean(fromChain && fromToken && toChain && toToken && (fromAmount || toAmount));
1308
+ const { routeData, showLoading, squidRouteError } = reactHooks.useGetRouteWrapper({
1309
+ quoteOnly,
1310
+ enabled,
1311
+ });
1312
+ const quotedSourceAmount = routeData && fromToken
1313
+ ? reactHooks.formatBNToReadable(routeData.estimate.fromAmount, fromToken.decimals)
1314
+ : undefined;
1315
+ return {
1316
+ routeData,
1317
+ quotedSourceAmount,
1318
+ showLoading,
1319
+ routeErrorMessage: squidRouteError
1320
+ ? formatRouteError(reactHooks.getSquidRouteErrorMessage(squidRouteError))
1321
+ : undefined,
1322
+ };
1323
+ }
1324
+
1325
+ function getMainExplorerUrl(transaction) {
1326
+ if (transaction.statusResponse?.coralTransactionUrl) {
1327
+ return {
1328
+ url: transaction.statusResponse.coralTransactionUrl,
1329
+ name: "Squidscan",
1330
+ };
1331
+ }
1332
+ if (transaction.statusResponse?.axelarTransactionUrl) {
1333
+ return {
1334
+ url: transaction.statusResponse.axelarTransactionUrl,
1335
+ name: "Axelarscan",
1336
+ };
1337
+ }
1338
+ const chainflipScanUrl = transaction.statusResponse?.toChain?.transactionUrl;
1339
+ if (chainflipScanUrl &&
1340
+ reactHooks.isChainflipBridgeTransaction(transaction.actions ?? [])) {
1341
+ return { url: chainflipScanUrl, name: "Chainflip" };
1342
+ }
1343
+ if (transaction.sourceTxExplorerUrl) {
1344
+ return {
1345
+ url: transaction.sourceTxExplorerUrl,
1346
+ name: transaction.sourceChain?.networkName
1347
+ ? `${transaction.sourceChain.networkName} explorer`
1348
+ : "Source explorer",
1349
+ };
1350
+ }
1351
+ if (transaction.statusResponse?.transactionUrl) {
1352
+ return {
1353
+ url: transaction.statusResponse.transactionUrl,
1354
+ name: transaction.sourceChain?.networkName
1355
+ ? `${transaction.sourceChain.networkName} explorer`
1356
+ : "Source explorer",
1357
+ };
1358
+ }
1359
+ return undefined;
1360
+ }
1361
+
1362
+ var DepositStatus;
1363
+ (function (DepositStatus) {
1364
+ DepositStatus[DepositStatus["CONFIRMING"] = 0] = "CONFIRMING";
1365
+ DepositStatus[DepositStatus["PROCESSING"] = 1] = "PROCESSING";
1366
+ DepositStatus[DepositStatus["COMPLETED"] = 2] = "COMPLETED";
1367
+ DepositStatus[DepositStatus["PARTIAL_SUCCESS"] = 3] = "PARTIAL_SUCCESS";
1368
+ DepositStatus[DepositStatus["REJECTED"] = 4] = "REJECTED";
1369
+ DepositStatus[DepositStatus["FAILED"] = 5] = "FAILED";
1370
+ })(DepositStatus || (DepositStatus = {}));
1371
+ function useTransactionProgress() {
1372
+ const currentTransaction = reactHooks.useTransactionStore((state) => state.currentTransaction);
1373
+ const { routeData } = useDepositRoute();
1374
+ const { fromChain } = reactHooks.useSwap();
1375
+ const { estimatedRouteDuration } = reactHooks.useEstimate(routeData);
1376
+ const config = useDepositStore((s) => s.config);
1377
+ const { latestStatus, transactionStatusQuery } = reactHooks.useSwapTransactionStatus({
1378
+ transaction: {
1379
+ fromAddress: currentTransaction?.fromAddress ?? "",
1380
+ fromChain: currentTransaction?.fromChain?.chainId ?? "",
1381
+ toChain: currentTransaction?.toChain?.chainId ?? "",
1382
+ transactionId: currentTransaction?.transactionId ?? "",
1383
+ status: currentTransaction?.status ?? reactHooks.TransactionStatus.PENDING,
1384
+ bridgeType: reactHooks.getBridgeType(routeData?.estimate.actions),
1385
+ actions: routeData?.estimate.actions,
1386
+ transactionIdForStatus: currentTransaction?.transactionIdForStatus,
1387
+ quoteId: currentTransaction?.quoteId,
1388
+ depositTxVerificationSignature: currentTransaction?.depositTxVerificationSignature,
1389
+ },
1390
+ });
1391
+ const status = React.useMemo(() => {
1392
+ if (currentTransaction === undefined) {
1393
+ return DepositStatus.CONFIRMING;
1394
+ }
1395
+ if (currentTransaction.error?.type === reactHooks.TransactionErrorType.REJECTED_BY_USER) {
1396
+ return DepositStatus.REJECTED;
1397
+ }
1398
+ if (currentTransaction.sourceStatus === "error") {
1399
+ return DepositStatus.FAILED;
1400
+ }
1401
+ if (latestStatus === reactHooks.TransactionStatus.SUCCESS) {
1402
+ return DepositStatus.COMPLETED;
1403
+ }
1404
+ if (latestStatus === reactHooks.TransactionStatus.PARTIAL_SUCCESS ||
1405
+ latestStatus === reactHooks.TransactionStatus.REFUNDED) {
1406
+ return DepositStatus.PARTIAL_SUCCESS;
1407
+ }
1408
+ if (latestStatus === reactHooks.TransactionStatus.ERROR) {
1409
+ return DepositStatus.FAILED;
1410
+ }
1411
+ if (latestStatus === reactHooks.TransactionStatus.ONGOING ||
1412
+ latestStatus === reactHooks.TransactionStatus.INITIAL_LOADING ||
1413
+ latestStatus === reactHooks.TransactionStatus.PENDING) {
1414
+ return DepositStatus.PROCESSING;
1415
+ }
1416
+ return DepositStatus.CONFIRMING;
1417
+ }, [currentTransaction, latestStatus]);
1418
+ const explorerLink = getMainExplorerUrl({
1419
+ routeType: currentTransaction?.routeType,
1420
+ transactionId: currentTransaction?.transactionId,
1421
+ sourceTxExplorerUrl: currentTransaction?.sourceTxExplorerUrl,
1422
+ statusResponse: transactionStatusQuery.data,
1423
+ actions: routeData?.estimate.actions?.map(reactHooks.simplifyRouteAction),
1424
+ sourceChain: fromChain,
1425
+ });
1426
+ return {
1427
+ status,
1428
+ explorerLink,
1429
+ estimatedTime: estimatedRouteDuration
1430
+ ? `~${estimatedRouteDuration.format()}`
1431
+ : undefined,
1432
+ recipient: {
1433
+ name: config?.integrator.name ?? "Recipient",
1434
+ address: config?.destinationAddress ?? "",
1435
+ },
1436
+ };
1437
+ }
1438
+
1439
+ function getStatusTitle(status, isPaymentMode) {
1440
+ const action = isPaymentMode ? "Payment" : "Deposit";
1441
+ switch (status) {
1442
+ case DepositStatus.CONFIRMING:
1443
+ return "Confirm transaction";
1444
+ case DepositStatus.PROCESSING:
1445
+ return `${action} in progress`;
1446
+ case DepositStatus.COMPLETED:
1447
+ return `${action} complete`;
1448
+ case DepositStatus.PARTIAL_SUCCESS:
1449
+ return `${action} failed to complete`;
1450
+ case DepositStatus.REJECTED:
1451
+ return `${action} rejected`;
1452
+ case DepositStatus.FAILED:
1453
+ return `${action} failed`;
1454
+ }
1455
+ }
1456
+ function getStatusDescription(status, { amount, symbol, recipientName, isPaymentMode, }) {
1457
+ const verb = isPaymentMode ? "paid" : "deposited";
1458
+ switch (status) {
1459
+ case DepositStatus.CONFIRMING:
1460
+ return "Authenticate the transaction in your wallet.";
1461
+ case DepositStatus.PROCESSING:
1462
+ return "Feel free to dismiss this dialog.";
1463
+ case DepositStatus.COMPLETED:
1464
+ return `You ${verb} ${amount} ${symbol} to ${recipientName} successfully.`;
1465
+ case DepositStatus.PARTIAL_SUCCESS:
1466
+ return "You received a refund to your wallet.";
1467
+ case DepositStatus.REJECTED:
1468
+ return "You declined the transaction in your wallet.";
1469
+ case DepositStatus.FAILED:
1470
+ return "Your tokens were safely returned to your wallet.";
1471
+ }
1472
+ }
1473
+ function getButtonLabel(status) {
1474
+ switch (status) {
1475
+ case DepositStatus.CONFIRMING:
1476
+ return "Cancel";
1477
+ case DepositStatus.PROCESSING:
1478
+ case DepositStatus.COMPLETED:
1479
+ return "Ok, done";
1480
+ case DepositStatus.PARTIAL_SUCCESS:
1481
+ return "Ok, go back";
1482
+ case DepositStatus.REJECTED:
1483
+ case DepositStatus.FAILED:
1484
+ return "Ok, go back";
1485
+ }
1486
+ }
1487
+ function TimeDetail({ status, timer, estimatedTimeDisplay, }) {
1488
+ switch (status) {
1489
+ case DepositStatus.PROCESSING:
1490
+ return estimatedTimeDisplay ? (jsxRuntime.jsx(ui.Transfer, { from: timer, to: estimatedTimeDisplay })) : (jsxRuntime.jsx(ui.CaptionText, { children: timer }));
1491
+ case DepositStatus.COMPLETED:
1492
+ case DepositStatus.PARTIAL_SUCCESS:
1493
+ return jsxRuntime.jsx(ui.CaptionText, { children: timer });
1494
+ default:
1495
+ return jsxRuntime.jsx(ui.CaptionText, { children: estimatedTimeDisplay ?? "—" });
1496
+ }
1497
+ }
1498
+
1499
+ const progressAnimations = {
1500
+ [DepositStatus.CONFIRMING]: ui.transactionPendingAnimation,
1501
+ [DepositStatus.PROCESSING]: ui.transactionProcessingAnimation,
1502
+ [DepositStatus.COMPLETED]: ui.transactionSuccessAnimation,
1503
+ [DepositStatus.PARTIAL_SUCCESS]: ui.transactionHalfSuccessAnimation,
1504
+ [DepositStatus.REJECTED]: ui.transactionRejectedAnimation,
1505
+ [DepositStatus.FAILED]: ui.transactionFailureAnimation,
1506
+ };
1507
+ function TransactionProgressView() {
1508
+ const popToRoot = useRouter((s) => s.popToRoot);
1509
+ const isPaymentMode = useIsPaymentMode();
1510
+ const config = useDepositStore((s) => s.config);
1511
+ const { fromToken, toToken } = reactHooks.useSwap();
1512
+ const { routeData } = useDepositRoute();
1513
+ const { fromAmountFormatted: rawFromAmount, toAmount } = reactHooks.useEstimate(routeData);
1514
+ const { cancelSwap } = reactHooks.useExecuteTransaction(routeData);
1515
+ const { status, estimatedTime, recipient, explorerLink } = useTransactionProgress();
1516
+ const { timer, startTimer, stopTimer } = ui.useTimer({ immediateStart: false });
1517
+ React.useEffect(() => {
1518
+ if (status === DepositStatus.PROCESSING) {
1519
+ startTimer();
1520
+ }
1521
+ else if (status === DepositStatus.COMPLETED ||
1522
+ status === DepositStatus.PARTIAL_SUCCESS ||
1523
+ status === DepositStatus.REJECTED ||
1524
+ status === DepositStatus.FAILED) {
1525
+ stopTimer();
1526
+ }
1527
+ }, [status, startTimer, stopTimer]);
1528
+ const actionLabel = isPaymentMode ? "Payment" : "Deposit";
1529
+ const fromAmountFormatted = reactHooks.formatTokenAmount(rawFromAmount ?? "0", {
1530
+ exact: false,
1531
+ });
1532
+ const toAmountFormatted = reactHooks.formatTokenAmount(toAmount ?? "0", {
1533
+ exact: false,
1534
+ });
1535
+ const handleClose = () => {
1536
+ if (status === DepositStatus.CONFIRMING) {
1537
+ cancelSwap();
1538
+ }
1539
+ popToRoot();
1540
+ };
1541
+ const title = getStatusTitle(status, isPaymentMode);
1542
+ const description = getStatusDescription(status, {
1543
+ amount: toAmountFormatted,
1544
+ symbol: toToken?.symbol ?? "",
1545
+ recipientName: recipient.name,
1546
+ isPaymentMode,
1547
+ });
1548
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SubNavBar, { title: actionLabel }), jsxRuntime.jsxs(ViewContainer, { className: "!tw-py-0", children: [jsxRuntime.jsx("div", { className: "tw-flex tw-h-20 tw-w-full tw-items-center tw-justify-center tw-bg-animation-bg [&_svg_path]:tw-stroke-[6]", children: jsxRuntime.jsx(ui.AnimationWrapper, { style: { height: "100%", maxHeight: "100%", width: "auto" }, autoplay: true, loop: true, src: progressAnimations[status] }) }), jsxRuntime.jsxs("header", { className: "tw-flex tw-w-full tw-flex-col tw-gap-squid-xs tw-px-squid-m tw-py-squid-s", children: [jsxRuntime.jsx("div", { className: "tw-flex tw-items-center tw-gap-2", children: jsxRuntime.jsx(ui.BodyText, { size: "large", className: "tw-text-grey-300", children: title }) }), jsxRuntime.jsx(ui.CaptionText, { className: "tw-text-grey-500", children: description })] }), jsxRuntime.jsxs("ul", { className: "tw-flex tw-w-full tw-flex-col tw-items-center tw-justify-center tw-gap-squid-xxs tw-rounded-squid-l tw-pb-squid-s tw-pt-squid-xs tw-squid-property-gradient-bg-odd-container", children: [jsxRuntime.jsx(ui.PropertyListItem, { icon: jsxRuntime.jsx(ui.ArrowRightUpCircleIcon, {}), label: "You send", detail: jsxRuntime.jsxs(ui.IconLabel, { src: reactHooks.getTokenImage(fromToken) ?? "", rounded: "full", children: [fromAmountFormatted, " ", fromToken?.symbol] }) }), jsxRuntime.jsx(ui.PropertyListItem, { icon: jsxRuntime.jsx(ui.ArrowRightDownCircleIcon, {}), label: `${actionLabel} amount`, detail: jsxRuntime.jsxs(ui.IconLabel, { src: reactHooks.getTokenImage(toToken) ?? "", rounded: "full", children: [toAmountFormatted, " ", toToken?.symbol] }) }), jsxRuntime.jsx(ui.PropertyListItem, { icon: jsxRuntime.jsx(ui.WalletFilledIcon, { size: "24" }), label: "Recipient", detail: jsxRuntime.jsxs("span", { className: "tw-flex tw-items-center tw-gap-squid-xxs", children: [config?.integrator.logoUrl && (jsxRuntime.jsx(ui.Image, { src: config.integrator.logoUrl, size: "medium", rounded: "full" })), recipient.name, jsxRuntime.jsxs("span", { className: "tw-text-material-light-thick", children: ["(", reactHooks.formatHash({
1549
+ hash: recipient.address,
1550
+ chainType: toToken?.type,
1551
+ }), ")"] })] }) }), jsxRuntime.jsx(ui.PropertyListItem, { icon: jsxRuntime.jsx(ui.TimeFliesIcon, {}), label: "Time", detail: jsxRuntime.jsx(TimeDetail, { status: status, timer: timer, estimatedTimeDisplay: estimatedTime }) })] }), jsxRuntime.jsxs("footer", { className: "tw-relative tw-flex tw-flex-col tw-p-2 tw-shrink-0 tw-self-stretch tw-mt-auto", children: [explorerLink && (jsxRuntime.jsxs("a", { href: explorerLink.url, target: "_blank", rel: "noopener noreferrer", className: "tw-group/explorer tw-w-fit tw-mx-auto tw-absolute tw-inset-x-0 tw-bottom-full tw-flex tw-justify-center tw-items-center tw-gap-1 tw-py-2 tw-text-sm tw-text-grey-300 hover:tw-text-grey-100 tw-transition-colors", children: ["View on ", explorerLink.name, jsxRuntime.jsx(ui.SquareArrowTopRightIcon, { size: "0.75rem", className: "tw-transition-all tw-duration-200 tw-w-0 tw-opacity-0 group-hover/explorer:tw-w-4 group-hover/explorer:tw-opacity-100" })] })), jsxRuntime.jsx(Button, { className: "tw-min-h-12", onClick: handleClose, children: getButtonLabel(status) })] })] })] }));
1552
+ }
1553
+
1554
+ function Title() {
1555
+ const name = useDepositStore((s) => s.config?.integrator.name);
1556
+ const isPaymentMode = useIsPaymentMode();
1557
+ const paymentAmount = usePaymentAmount();
1558
+ const { toToken } = reactHooks.useSwap();
1559
+ const label = buildTitleLabel({
1560
+ isPaymentMode,
1561
+ paymentAmount,
1562
+ tokenSymbol: toToken?.symbol,
1563
+ tokenUsdPrice: toToken?.usdPrice,
1564
+ name,
1565
+ });
1566
+ return (jsxRuntime.jsx("div", { className: "tw-flex tw-py-1 tw-px-2 tw-items-center tw-gap-1 tw-flex-1 tw-self-stretch", children: jsxRuntime.jsx("span", { className: "tw-text-grey-100 tw-text-lg tw-font-squid-main tw-font-medium", children: label }) }));
1567
+ }
1568
+ function buildTitleLabel({ isPaymentMode, paymentAmount, tokenSymbol, tokenUsdPrice, name, }) {
1569
+ if (!isPaymentMode)
1570
+ return name ? `Deposit to ${name}` : "Deposit";
1571
+ if (paymentAmount && tokenSymbol) {
1572
+ const usdValue = tokenUsdPrice
1573
+ ? reactHooks.convertTokenAmountToUSD(paymentAmount, tokenUsdPrice)
1574
+ : null;
1575
+ const amount = usdValue
1576
+ ? reactHooks.formatUsdAmount(usdValue)
1577
+ : `${paymentAmount} ${tokenSymbol}`;
1578
+ return name ? `Pay ${amount} to ${name}` : `Pay ${amount}`;
1579
+ }
1580
+ return name ? `Pay ${name}` : "Pay";
1581
+ }
1582
+
1583
+ function ConnectPrompt() {
1584
+ const isPaymentMode = useIsPaymentMode();
1585
+ const logoUrl = useDepositStore((s) => s.config?.integrator.logoUrl);
1586
+ const name = useDepositStore((s) => s.config?.integrator.name);
1587
+ const paymentAmount = usePaymentAmount();
1588
+ const { toToken } = reactHooks.useSwap();
1589
+ const label = buildTitleLabel({
1590
+ isPaymentMode,
1591
+ paymentAmount,
1592
+ tokenSymbol: toToken?.symbol,
1593
+ tokenUsdPrice: toToken?.usdPrice,
1594
+ name,
1595
+ });
1596
+ const purposeCopy = `To ${isPaymentMode ? "pay" : "deposit crypto"} you'll need to connect your wallet first.`;
1597
+ return (jsxRuntime.jsxs("div", { className: "tw-flex tw-pt-3 tw-pb-8 tw-px-4 tw-flex-col tw-justify-end tw-items-center tw-gap-4 tw-flex-1 tw-self-stretch tw-relative", children: [jsxRuntime.jsx("div", { className: "tw-w-32", children: logoUrl && jsxRuntime.jsx("img", { className: "tw-rounded-full tw-w-full", src: logoUrl }) }), jsxRuntime.jsxs("div", { className: "tw-flex tw-pt-2 tw-pb-4 tw-flex-col tw-justify-end tw-items-center tw-gap-4 tw-self-center", children: [jsxRuntime.jsx("span", { className: "tw-text-grey-100 tw-font-medium tw-text-2xl tw-leading-3", children: label }), jsxRuntime.jsx("span", { className: "tw-text-center tw-text-material-light-average tw-font-medium tw-leading-6 tw-text-lg tw-text-balance", children: purposeCopy }), jsxRuntime.jsx("span", { className: "tw-text-material-light-thick tw-font-medium tw-leading-3 tw-text-lg", children: "Learn more" })] })] }));
1598
+ }
1599
+
1600
+ function useTokenSelection() {
1601
+ const { fromToken: token, fromChain: chain } = reactHooks.useSwap();
1602
+ const { connectedAddress } = reactHooks.useMultiChainWallet(chain);
1603
+ const { balance } = reactHooks.useMultiChainBalance({
1604
+ chain,
1605
+ token: token ?? undefined,
1606
+ userAddress: connectedAddress.address,
1607
+ });
1608
+ return { token, chain, balance };
1609
+ }
1610
+
1611
+ const useInputMode = zustand.create((set) => ({
1612
+ mode: ui.UserInputType.USD,
1613
+ setMode: (mode) => set({ mode }),
1614
+ }));
1615
+
1616
+ const placeholder = "0";
1617
+ const BASE_FONT_PX = 48; // tw-text-5xl = 3rem
1618
+ const WRAPPER_PAD_X = 20; // tw-px-squid-xs = 0.625rem × 2
1619
+ const MIN_SCALE = 0.5;
1620
+ function AmountInput({ balance = "0", token, onAmountChange, forcedAmount, maxUsdDecimals = 2, formatIfVerySmall = {
1621
+ token: "0.001",
1622
+ usd: "0.01",
1623
+ }, inputModeButton, debounceInput = true, allowMaxButton = true, readOnly = false, errorMessage, loading = false, forcedUsdDisplay, }) {
1624
+ const inputRef = React.useRef(null);
1625
+ const inputValueSpyRef = React.useRef(null);
1626
+ const inputWidthSpyRef = React.useRef(null);
1627
+ const wrapperRef = React.useRef(null);
1628
+ const { userInputType, inputValue, handleInputChange, handleSwitchInputMode, isTokenAmountVerySmall, isUsdAmountVerySmall, amountFormatted, onBalanceButtonClick, } = ui.useNumericInput({
1629
+ onAmountChange,
1630
+ token,
1631
+ balance,
1632
+ debounceInput,
1633
+ forcedAmount,
1634
+ formatIfVerySmall,
1635
+ inputModeButton,
1636
+ maxUsdDecimals,
1637
+ direction: "from",
1638
+ initialInputMode: ui.UserInputType.USD,
1639
+ });
1640
+ const setInputMode = useInputMode((s) => s.setMode);
1641
+ React.useEffect(() => {
1642
+ setInputMode(userInputType);
1643
+ }, [userInputType, setInputMode]);
1644
+ const displayedNumber = userInputType === ui.UserInputType.USD && forcedUsdDisplay && !inputValue
1645
+ ? forcedUsdDisplay
1646
+ : inputValue || placeholder;
1647
+ const fullDisplayedNumber = userInputType === ui.UserInputType.USD
1648
+ ? `$${displayedNumber}`
1649
+ : displayedNumber;
1650
+ React.useEffect(() => {
1651
+ const spy = inputValueSpyRef.current;
1652
+ const wrapper = wrapperRef.current;
1653
+ const row = wrapper?.parentElement;
1654
+ if (!spy || !wrapper || !row)
1655
+ return;
1656
+ const apply = () => {
1657
+ const containerWidth = row.clientWidth - WRAPPER_PAD_X;
1658
+ const spyWidth = spy.getBoundingClientRect().width;
1659
+ if (containerWidth === 0 || spyWidth === 0)
1660
+ return;
1661
+ // Scale against the full visible value, including the "$" prefix in USD
1662
+ // mode, so read-only/payment values don't overflow by the prefix width.
1663
+ const scale = Math.min(1, Math.max(MIN_SCALE, containerWidth / spyWidth));
1664
+ wrapper.style.fontSize = `${BASE_FONT_PX * scale}px`;
1665
+ if (inputRef.current) {
1666
+ const inputWidthSpy = inputWidthSpyRef.current;
1667
+ // Editable USD renders "$" beside the input, so the input itself must
1668
+ // be sized from the number-only spy. Token mode can reuse full width.
1669
+ const inputWidth = userInputType === ui.UserInputType.USD && inputWidthSpy
1670
+ ? inputWidthSpy.getBoundingClientRect().width
1671
+ : spyWidth;
1672
+ inputRef.current.style.width = `${inputWidth * scale}px`;
1673
+ }
1674
+ };
1675
+ const observer = new ResizeObserver(apply);
1676
+ observer.observe(spy);
1677
+ observer.observe(row);
1678
+ apply();
1679
+ return () => observer.disconnect();
1680
+ }, [readOnly, displayedNumber, fullDisplayedNumber, userInputType]);
1681
+ const wrapperClassName = ui.cn("tw-text-grey-100 tw-flex tw-items-center tw-overflow-hidden tw-px-squid-xs", readOnly
1682
+ ? "tw-cursor-default"
1683
+ : "tw-cursor-text focus-within:tw-bg-material-light-thin hover:tw-bg-material-light-thin group-focus-within/amount-input:tw-text-royal-500");
1684
+ // em so the radius scales with the wrapper's font-size (which the
1685
+ // auto-shrink effect mutates) — keeps the corner proportional to the
1686
+ // shrunk height instead of looking pill-like at small font sizes.
1687
+ const wrapperStyle = { borderRadius: "0.4em" };
1688
+ const inputContent = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { ref: inputValueSpyRef, className: "tw-pointer-events-none tw-absolute tw-opacity-0 tw-text-5xl", children: fullDisplayedNumber }), jsxRuntime.jsx("span", { ref: inputWidthSpyRef, className: "tw-pointer-events-none tw-absolute tw-opacity-0 tw-text-5xl", children: displayedNumber }), readOnly ? (jsxRuntime.jsxs("span", { className: "tw-relative tw-py-2 tw-flex tw-items-center", children: [userInputType === ui.UserInputType.USD && jsxRuntime.jsx("span", { children: "$" }), jsxRuntime.jsx(ui.AnimateNumber, { isLoading: loading, number: displayedNumber, showMask: true }), loading && (jsxRuntime.jsx("span", { className: "tw-pointer-events-none tw-absolute tw-inset-0 tw-z-10 tw-overflow-hidden", children: jsxRuntime.jsx("span", { className: "tw-absolute tw-inset-0 tw-animate-shimmer tw-bg-[length:200%_100%] tw-bg-shimmer-overlay-light dark:tw-bg-shimmer-overlay-dark" }) }))] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [userInputType === ui.UserInputType.USD && jsxRuntime.jsx("span", { children: "$" }), jsxRuntime.jsx("input", { inputMode: "decimal", pattern: "[0-9.,]*", ref: inputRef, value: inputValue, onChange: handleInputChange, className: "tw-bg-transparent tw-placeholder-grey-100 tw-outline-none focus:tw-outline-none focus:tw-placeholder-royal-500", placeholder: placeholder })] }))] }));
1689
+ return (jsxRuntime.jsxs("section", { className: "tw-flex tw-flex-1 tw-flex-col tw-items-center tw-justify-center tw-self-stretch tw-gap-1 tw-relative tw-overflow-hidden", children: [jsxRuntime.jsx("div", { className: "tw-flex tw-w-full tw-items-center tw-justify-center tw-self-stretch tw-text-5xl tw-group/amount-input", children: readOnly ? (jsxRuntime.jsx("div", { ref: wrapperRef, className: wrapperClassName, style: wrapperStyle, children: inputContent })) : (jsxRuntime.jsx("label", { ref: wrapperRef, className: wrapperClassName, style: wrapperStyle, children: inputContent })) }), jsxRuntime.jsxs("div", { className: "tw-relative tw-flex tw-justify-center tw-self-stretch", children: [jsxRuntime.jsxs("footer", { className: "tw-flex tw-h-squid-m tw-items-center tw-justify-center tw-text-sm tw-text-material-light-thick tw-w-fit", children: [jsxRuntime.jsx(ui.Tooltip, { ...(userInputType === ui.UserInputType.TOKEN
1690
+ ? inputModeButton?.tokenModeTooltip
1691
+ : inputModeButton?.usdModeTooltip), tooltipWidth: "max", childrenClassName: "tw-rounded-squid-s", containerClassName: "tw-rounded-squid-s tw-w-fit", children: jsxRuntime.jsxs("button", { onClick: () => {
1692
+ handleSwitchInputMode();
1693
+ inputRef.current?.focus();
1694
+ }, className: "tw-flex tw-flex-1 tw-items-center tw-gap-squid-xxs tw-rounded-squid-s tw-px-3 tw-py-0.5 hover:tw-bg-material-light-thin", children: [userInputType === ui.UserInputType.TOKEN ? (jsxRuntime.jsxs("span", { className: "tw-flex tw-items-center tw-justify-center", children: [jsxRuntime.jsxs(ui.CaptionText, { children: [isUsdAmountVerySmall ? "<" : "", "$"] }), jsxRuntime.jsx(ui.CaptionText, { children: forcedUsdDisplay && !inputValue
1695
+ ? forcedUsdDisplay
1696
+ : isUsdAmountVerySmall
1697
+ ? formatIfVerySmall.token
1698
+ : amountFormatted })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(ui.CaptionText, { children: [isTokenAmountVerySmall ? "<" : "", isTokenAmountVerySmall
1699
+ ? formatIfVerySmall.token
1700
+ : amountFormatted] }), " ", jsxRuntime.jsx(ui.CaptionText, { children: token.symbol })] })), jsxRuntime.jsx("span", { className: "tw-flex tw-items-center tw-justify-center tw-rounded-full tw-size-3 tw-bg-material-light-thin tw-aspect-square", children: jsxRuntime.jsx(ui.ChevronTopSmallIcon, {}) })] }) }), allowMaxButton && Number(balance) > 0 && (jsxRuntime.jsx("button", { onClick: () => {
1701
+ onBalanceButtonClick();
1702
+ inputRef.current?.focus();
1703
+ }, className: "tw-rounded-squid-s tw-px-3 tw-py-0.5 hover:tw-bg-material-light-thin", children: jsxRuntime.jsx(ui.CaptionText, { children: "MAX" }) }))] }), errorMessage && (jsxRuntime.jsx(ui.CaptionText, { className: "tw-text-status-negative tw-text-center tw-absolute tw-top-full tw-mt-2 tw-left-0 tw-right-0 tw-px-4 [text-wrap:pretty]", children: errorMessage }))] })] }));
1704
+ }
1705
+
1706
+ function DepositAmountInput() {
1707
+ const { token, balance } = useTokenSelection();
1708
+ const { fromAmount, fromAmountChanged, toToken } = reactHooks.useSwap();
1709
+ const isPaymentMode = useIsPaymentMode();
1710
+ const paymentAmount = usePaymentAmount();
1711
+ const { quotedSourceAmount, routeErrorMessage, showLoading } = useDepositRoute();
1712
+ const displayedAmount = isPaymentMode ? quotedSourceAmount : fromAmount;
1713
+ const forcedUsdDisplay = isPaymentMode && paymentAmount && toToken?.usdPrice
1714
+ ? reactHooks.convertTokenAmountToUSD(paymentAmount, toToken.usdPrice)
1715
+ : undefined;
1716
+ return (jsxRuntime.jsx(AmountInput, { onAmountChange: fromAmountChanged, balance: balance, forcedAmount: displayedAmount, forcedUsdDisplay: forcedUsdDisplay, allowMaxButton: !isPaymentMode, readOnly: isPaymentMode, loading: isPaymentMode && showLoading, errorMessage: routeErrorMessage, token: {
1717
+ decimals: token?.decimals ?? 0,
1718
+ symbol: token?.symbol ?? "",
1719
+ price: token?.usdPrice ?? 0,
1720
+ } }));
1721
+ }
1722
+
1723
+ function UserRoundIcon({ size = "1.5rem", ...props }) {
1724
+ return (jsxRuntime.jsxs("svg", { ...props, xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntime.jsx("circle", { cx: "12", cy: "8", r: "5" }), jsxRuntime.jsx("path", { d: "M20 21a8 8 0 0 0-16 0" })] }));
1725
+ }
1726
+
1727
+ function Account({ direction, address, name, icon, onDisconnect, }) {
1728
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [direction === "from" && (jsxRuntime.jsx(Avatar, { icon: icon, onDisconnect: onDisconnect })), jsxRuntime.jsxs("div", { className: ui.cn("tw-flex tw-flex-col tw-justify-center tw-gap-2 tw-flex-1 tw-self-stretch", direction === "from" ? "tw-items-start" : "tw-items-end"), children: [jsxRuntime.jsx("span", { className: "tw-text-grey-100 tw-text-lg tw-leading-3", children: name }), jsxRuntime.jsx("span", { className: "tw-text-material-light-thick tw-text-sm tw-leading-3 tw-whitespace-nowrap", children: address })] }), direction === "to" && jsxRuntime.jsx(Avatar, { icon: icon })] }));
1729
+ }
1730
+ function Avatar({ icon, onDisconnect }) {
1731
+ const Wrapper = onDisconnect ? "button" : "div";
1732
+ return (jsxRuntime.jsxs(Wrapper, { onClick: onDisconnect, className: ui.cn("tw-group/avatar tw-relative tw-flex tw-size-squid-xl tw-justify-center tw-items-center tw-aspect-square tw-rounded-full tw-shadow-icon-light dark:tw-shadow-icon-dark tw-transition-colors tw-duration-200", icon ? "tw-overflow-hidden" : "tw-p-2 tw-bg-grey-100 tw-text-grey-900", onDisconnect && "hover:tw-bg-grey-300"), children: [icon ? (jsxRuntime.jsx("img", { src: icon, alt: "", className: "tw-size-full tw-object-cover" })) : (jsxRuntime.jsx(UserRoundIcon, { size: "1.3rem", className: ui.cn("tw-transition-all tw-duration-200", onDisconnect &&
1733
+ "group-hover/account:tw-scale-75 group-hover/account:tw-blur-sm group-hover/account:tw-opacity-0 group-focus-within/account:tw-scale-75 group-focus-within/account:tw-blur-sm group-focus-within/account:tw-opacity-0") })), onDisconnect && (jsxRuntime.jsx(ui.PowerIcon, { size: "1.25rem", className: "tw-absolute tw-scale-75 tw-blur-sm tw-opacity-0 tw-transition-all tw-duration-200 group-hover/account:tw-scale-100 group-hover/account:tw-blur-0 group-hover/account:tw-opacity-100 group-focus-within/account:tw-scale-100 group-focus-within/account:tw-blur-0 group-focus-within/account:tw-opacity-100" }))] }));
1734
+ }
1735
+
1736
+ function Recipient() {
1737
+ const { chain } = useTokenSelection();
1738
+ const { connectedAddress } = reactHooks.useMultiChainWallet(chain);
1739
+ const fromAddress = connectedAddress.address;
1740
+ const { disconnectWallet } = reactHooks.useWallet();
1741
+ const config = useDepositStore((s) => s.config);
1742
+ const { findChain } = reactHooks.useSquidChains();
1743
+ const handleDisconnect = () => {
1744
+ if (chain?.chainType) {
1745
+ void disconnectWallet(chain.chainType);
1746
+ }
1747
+ };
1748
+ const fromLabel = fromAddress
1749
+ ? reactHooks.formatHash({ hash: fromAddress, chainType: chain?.chainType })
1750
+ : "Not connected";
1751
+ const toLabel = config
1752
+ ? reactHooks.formatHash({
1753
+ hash: config.destinationAddress,
1754
+ chainType: findChain(config.destinationToken.chainId)?.chainType,
1755
+ })
1756
+ : "";
1757
+ return (jsxRuntime.jsxs("div", { className: "tw-flex tw-h-squid-xl tw-items-center tw-gap-2 tw-w-full tw-px-3", children: [jsxRuntime.jsx("div", { className: "tw-group/account tw-flex tw-items-center tw-gap-2 tw-flex-1 tw-min-w-0 tw-self-stretch", children: jsxRuntime.jsx(Account, { direction: "from", name: "You", address: fromLabel, onDisconnect: fromAddress ? handleDisconnect : undefined }) }), jsxRuntime.jsxs("div", { className: "tw-flex tw-items-center tw-text-material-light-thick -tw-space-x-4 tw-shrink-0", children: [jsxRuntime.jsx(ui.ChevronRightIcon, { className: "tw-opacity-33" }), jsxRuntime.jsx(ui.ChevronRightIcon, { className: "tw-opacity-66" }), jsxRuntime.jsx(ui.ChevronRightIcon, { className: "" })] }), jsxRuntime.jsx("div", { className: "tw-flex tw-items-center tw-gap-2 tw-flex-1 tw-min-w-0 tw-self-stretch", children: jsxRuntime.jsx(Account, { direction: "to", name: config?.integrator.name ?? "Recipient", address: toLabel, icon: config?.integrator.logoUrl }) })] }));
1758
+ }
1759
+
1760
+ function TokenBadgeIcon({ tokenSrc, chainSrc }) {
1761
+ return (jsxRuntime.jsxs("div", { className: "tw-size-squid-xl tw-rounded-full tw-relative tw-shrink-0", children: [jsxRuntime.jsx(ui.Image, { src: tokenSrc, size: "xlarge", rounded: "full", shadow: true, border: "inset" }), chainSrc && (jsxRuntime.jsx("span", { className: "tw-absolute -tw-bottom-1 -tw-left-1", children: jsxRuntime.jsx(ui.Image, { src: chainSrc, size: "small", rounded: "xxs", style: { width: "1rem", height: "1rem" }, border: "outline-sm" }) }))] }));
1762
+ }
1763
+
1764
+ function TokenSelector() {
1765
+ const push = useRouter((s) => s.push);
1766
+ const { token, chain, balance } = useTokenSelection();
1767
+ const inputMode = useInputMode((s) => s.mode);
1768
+ const isUsdMode = inputMode === ui.UserInputType.USD;
1769
+ const balanceNum = +balance;
1770
+ const formattedBalance = balanceNum > 0
1771
+ ? isUsdMode
1772
+ ? reactHooks.formatUsdAmount(balanceNum * (token?.usdPrice ?? 0))
1773
+ : reactHooks.formatTokenAmount(balance, { exact: false })
1774
+ : undefined;
1775
+ return (jsxRuntime.jsxs("button", { onClick: () => push({ id: "select-token" }), className: "tw-flex tw-gap-2 tw-items-center tw-self-stretch hover:tw-bg-material-light-thin tw-px-3 tw-py-1.5 tw-rounded-3xl", children: [token && chain ? (jsxRuntime.jsx(TokenBadgeIcon, { tokenSrc: reactHooks.getTokenImage(token), chainSrc: chain.chainIconURI })) : (jsxRuntime.jsx("span", { className: "tw-text-grey-900 tw-text-lg tw-leading-3 tw-flex tw-items-center tw-justify-center tw-size-squid-xl tw-bg-royal-500 tw-rounded-full", children: jsxRuntime.jsx(ui.PlusIcon, { size: "1.6rem" }) })), jsxRuntime.jsx("div", { className: "tw-flex tw-flex-col tw-items-start tw-justify-center tw-gap-2 tw-self-stretch tw-flex-1", children: token ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { className: "tw-text-grey-100 tw-text-lg tw-font-medium tw-leading-3", children: token.name }), jsxRuntime.jsxs("div", { className: "tw-flex tw-justify-center tw-items-center tw-gap-1", children: [formattedBalance && (jsxRuntime.jsx("span", { className: "tw-text-sm tw-text-material-light-thick tw-leading-3", children: formattedBalance })), jsxRuntime.jsx("span", { className: "tw-text-sm tw-text-material-light-average tw-leading-3", children: token.symbol })] })] })) : (jsxRuntime.jsx("span", { className: "tw-text-grey-100 tw-text-lg tw-font-medium tw-leading-3", children: "Select a token" })) }), jsxRuntime.jsx("span", { className: "tw-size-8 tw-flex tw-items-center tw-justify-center", children: jsxRuntime.jsx(ui.ChevronDownSmallIcon, { className: "tw-text-material-light-thick", size: "1.6rem", strokeWidth: "1.2" }) })] }));
1776
+ }
1777
+
1778
+ function DepositForm() {
1779
+ return (jsxRuntime.jsxs("div", { className: "tw-flex tw-pb-3 tw-pt-1 tw-flex-col tw-items-center tw-flex-1 tw-self-stretch tw-gap-2 tw-px-1", children: [jsxRuntime.jsx(TokenSelector, {}), jsxRuntime.jsx(DepositAmountInput, {}), jsxRuntime.jsx(Recipient, {})] }));
1780
+ }
1781
+
1782
+ function useMainCTAButtonState() {
1783
+ const push = useRouter((store) => store.push);
1784
+ const { connectedWallets, isChainTypeConnected } = reactHooks.useWallet();
1785
+ const { token, chain, balance } = useTokenSelection();
1786
+ const { fromAmount: typedAmount, fromAmountChanged } = reactHooks.useSwap();
1787
+ const isPaymentMode = useIsPaymentMode();
1788
+ const isConnected = connectedWallets.length > 0;
1789
+ const { routeData, quotedSourceAmount, showLoading: isRouteLoading, } = useDepositRoute();
1790
+ const amount = isPaymentMode ? quotedSourceAmount : typedAmount;
1791
+ const { routeApproved, approveRoute } = reactHooks.useApproval({
1792
+ squidRoute: routeData,
1793
+ });
1794
+ const { executeSwap, isLoading: isExecuting } = reactHooks.useExecuteTransaction(routeData);
1795
+ const { minAmountValueWarnMsg, fromTokenPaysGasFees, isGasBalanceEnough } = reactHooks.useEstimate(routeData);
1796
+ if (!isConnected) {
1797
+ return {
1798
+ label: "Connect wallet",
1799
+ onClick: () => push({ id: "connect-wallet", chainType: null }),
1800
+ };
1801
+ }
1802
+ if (chain && !isChainTypeConnected(chain.chainType)) {
1803
+ return {
1804
+ label: "Connect wallet",
1805
+ onClick: () => push({ id: "connect-wallet", chainType: chain.chainType }),
1806
+ };
1807
+ }
1808
+ if (!token) {
1809
+ return {
1810
+ label: "Select a token",
1811
+ disabled: true,
1812
+ };
1813
+ }
1814
+ if (!amount || amount === "0") {
1815
+ return {
1816
+ label: "Enter amount",
1817
+ disabled: true,
1818
+ };
1819
+ }
1820
+ if (!balance || Number(amount) > Number(balance)) {
1821
+ return {
1822
+ label: "Insufficient balance",
1823
+ disabled: true,
1824
+ };
1825
+ }
1826
+ if (isRouteLoading) {
1827
+ return {
1828
+ label: "Getting quotes...",
1829
+ disabled: true,
1830
+ isLoading: true,
1831
+ };
1832
+ }
1833
+ if (!routeData) {
1834
+ return {
1835
+ label: "No route available",
1836
+ disabled: true,
1837
+ };
1838
+ }
1839
+ if (fromTokenPaysGasFees &&
1840
+ !isGasBalanceEnough &&
1841
+ minAmountValueWarnMsg !== undefined &&
1842
+ Number(minAmountValueWarnMsg) > 0) {
1843
+ return {
1844
+ label: "Fit gas",
1845
+ onClick: () => fromAmountChanged(minAmountValueWarnMsg),
1846
+ };
1847
+ }
1848
+ if (routeApproved.isLoading) {
1849
+ return {
1850
+ label: "Checking approval...",
1851
+ disabled: true,
1852
+ isLoading: true,
1853
+ };
1854
+ }
1855
+ if (routeApproved.data === false) {
1856
+ if (approveRoute.isLoading) {
1857
+ return {
1858
+ label: "Approving...",
1859
+ disabled: true,
1860
+ isLoading: true,
1861
+ };
1862
+ }
1863
+ return {
1864
+ label: `Approve ${token.symbol}`,
1865
+ onClick: () => approveRoute.mutate(),
1866
+ };
1867
+ }
1868
+ if (isExecuting) {
1869
+ return {
1870
+ label: isPaymentMode ? "Paying..." : "Depositing...",
1871
+ disabled: true,
1872
+ isLoading: true,
1873
+ };
1874
+ }
1875
+ return {
1876
+ label: isPaymentMode ? "Pay" : "Deposit",
1877
+ onClick: () => {
1878
+ void executeSwap();
1879
+ push({ id: "transaction-progress" });
1880
+ },
1881
+ };
1882
+ }
1883
+
1884
+ function MainCTAButton() {
1885
+ const { label, onClick, disabled } = useMainCTAButtonState();
1886
+ return (jsxRuntime.jsx("footer", { className: "tw-flex tw-h-16 tw-p-2 tw-items-start tw-shrink-0 tw-self-stretch", children: jsxRuntime.jsx(Button, { onClick: onClick, disabled: disabled, children: label }) }));
1887
+ }
1888
+
1889
+ function Actions() {
1890
+ const push = useRouter((s) => s.push);
1891
+ const { connectedWallets } = reactHooks.useWallet();
1892
+ const isConnected = connectedWallets.length > 0;
1893
+ if (!isConnected)
1894
+ return null;
1895
+ return (jsxRuntime.jsx("div", { className: "tw-flex tw-justify-end tw-items-center tw-gap-1", children: jsxRuntime.jsx(ui.IconButton, { onClick: () => push({ id: "transaction-history" }), icon: jsxRuntime.jsx(ui.ClockOutlineIcon, { className: "tw-text-material-light-thick", size: "1.5rem" }) }) }));
1896
+ }
1897
+
1898
+ function Icon() {
1899
+ const logoUrl = useDepositStore((s) => s.config?.integrator.logoUrl);
1900
+ return (jsxRuntime.jsx("div", { className: "tw-flex tw-size-10 tw-justify-center tw-items-center tw-rounded-squid-m tw-shadow-icon-light dark:tw-shadow-icon-dark tw-bg-grey-900", children: logoUrl && jsxRuntime.jsx("img", { className: "tw-rounded-full", src: logoUrl }) }));
1901
+ }
1902
+
1903
+ function NavBar() {
1904
+ return (jsxRuntime.jsxs(BaseNavBar, { className: "tw-justify-between", children: [jsxRuntime.jsx(Icon, {}), jsxRuntime.jsx(Title, {}), jsxRuntime.jsx(Actions, {})] }));
1905
+ }
1906
+
1907
+ function MainView() {
1908
+ const { connectedWallets } = reactHooks.useWallet();
1909
+ const isConnected = connectedWallets.length > 0;
1910
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [isConnected && jsxRuntime.jsx(NavBar, {}), jsxRuntime.jsxs(ViewContainer, { className: ui.cn(!isConnected && "tw-border-t-0"), children: [isConnected ? jsxRuntime.jsx(DepositForm, {}) : jsxRuntime.jsx(ConnectPrompt, {}), jsxRuntime.jsx(MainCTAButton, {})] })] }));
1911
+ }
1912
+
1913
+ function QrCodeView() {
1914
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SubNavBar, { title: "QR Code" }), jsxRuntime.jsx("div", { className: "tw-flex tw-flex-1 tw-items-center tw-justify-center tw-self-stretch", children: jsxRuntime.jsx("span", { className: "tw-text-grey-100 tw-text-lg tw-font-medium", children: "QR Code" }) })] }));
1915
+ }
1916
+
1917
+ function SelectChainView({ wallet }) {
1918
+ const popToRoot = useRouter((s) => s.popToRoot);
1919
+ const { connectWallet, connectingWalletState } = reactHooks.useWallet();
1920
+ const [connectingChainType, setConnectingChainType] = React.useState(null);
1921
+ if (!wallet.isMultiChain)
1922
+ return null;
1923
+ const networks = wallet.supportedNetworks;
1924
+ const isConnecting = connectingWalletState.status === reactHooks.ConnectingWalletStatus.CONNECTING &&
1925
+ connectingWalletState.wallet?.connectorId === wallet.connectorId;
1926
+ const onChainSelected = async (chainType) => {
1927
+ setConnectingChainType(chainType);
1928
+ try {
1929
+ const connected = await connectWallet({
1930
+ wallet,
1931
+ selectedChainTypes: [chainType],
1932
+ });
1933
+ if (connected) {
1934
+ popToRoot();
1935
+ }
1936
+ }
1937
+ catch (error) {
1938
+ console.error("Failed to connect wallet:", error);
1939
+ setConnectingChainType(null);
1940
+ }
1941
+ };
1942
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SubNavBar, { title: "Select network" }), jsxRuntime.jsxs("div", { className: "tw-flex tw-flex-col tw-items-center tw-gap-2 tw-px-4 tw-py-5 tw-border-b tw-border-grey-800", children: [wallet.icon && (jsxRuntime.jsx("img", { src: wallet.icon, alt: wallet.name, className: "tw-size-12 tw-rounded-xl" })), jsxRuntime.jsxs("div", { className: "tw-flex tw-flex-col tw-items-center tw-self-stretch", children: [jsxRuntime.jsxs("span", { className: "tw-text-material-light-thick tw-text-base tw-text-center", children: [wallet.name, " supports multiple ecosystems."] }), jsxRuntime.jsx("span", { className: "tw-text-material-light-thick tw-text-base tw-text-center", children: "Select one to connect." })] })] }), jsxRuntime.jsx("ul", { className: "tw-flex tw-flex-col tw-items-start tw-flex-1 tw-self-stretch tw-py-1 tw-overflow-auto", children: networks.map((network) => {
1943
+ const meta = CHAIN_TYPE_META[network.chainType];
1944
+ return (jsxRuntime.jsx("li", { className: "tw-self-stretch", children: jsxRuntime.jsxs("button", { className: "tw-flex tw-min-h-14 tw-h-14 tw-px-4 tw-items-center tw-gap-3 tw-self-stretch tw-w-full hover:tw-bg-material-light-thin", disabled: isConnecting, onClick: () => onChainSelected(network.chainType), children: [jsxRuntime.jsx("div", { className: "tw-flex tw-size-squid-xl tw-justify-center tw-items-center tw-aspect-square tw-rounded-xl tw-shadow-icon-light dark:tw-shadow-icon-dark", children: jsxRuntime.jsx("img", { src: meta.icon, alt: meta.name, className: "tw-size-full tw-rounded-xl" }) }), jsxRuntime.jsx("span", { className: "tw-text-grey-200 tw-text-lg tw-flex-1 tw-text-left", children: meta.name }), isConnecting && connectingChainType === network.chainType && (jsxRuntime.jsx(ui.Loader, { size: "20", className: "tw-text-grey-100" }))] }) }, network.chainType));
1945
+ }) })] }));
1946
+ }
1947
+
1948
+ function sortTokensByBalance(tokens) {
1949
+ return tokens.toSorted((a, b) => {
1950
+ const aUsd = +a.balance * +(a.usdPrice ?? 0);
1951
+ const bUsd = +b.balance * +(b.usdPrice ?? 0);
1952
+ if (aUsd !== bUsd)
1953
+ return bUsd - aUsd;
1954
+ return +(b.balance ?? 0) - +(a.balance ?? 0);
1955
+ });
1956
+ }
1957
+ function filterTokensByChain(tokens, chainId) {
1958
+ return chainId ? tokens.filter((token) => token.chainId === chainId) : tokens;
1959
+ }
1960
+
1961
+ function TokenListItem({ icon, chainIcon, symbol, name, balance, price, usdValue, disabled, isLoadingBalance, ...props }) {
1962
+ const showUsdOnHover = (usdValue ?? 0) > 0;
1963
+ return (jsxRuntime.jsx("li", { className: "tw-self-stretch", children: jsxRuntime.jsxs("button", { "aria-disabled": disabled, tabIndex: disabled ? -1 : undefined, title: disabled ? "Insufficient balance" : undefined, className: ui.cn("tw-group/token-item tw-flex tw-h-14 tw-px-4 tw-items-center tw-gap-2 tw-self-stretch tw-w-full hover:tw-bg-material-light-thin", disabled && "tw-opacity-40 tw-cursor-not-allowed"), ...props, children: [jsxRuntime.jsx(TokenBadgeIcon, { tokenSrc: icon, chainSrc: chainIcon }), jsxRuntime.jsxs("div", { className: "tw-flex tw-flex-col tw-justify-center tw-gap-0.5 tw-items-start tw-flex-1 tw-self-stretch tw-overflow-hidden -tw-mt-2", children: [jsxRuntime.jsx("span", { className: "tw-text-grey-100 tw-text-lg tw-truncate tw-max-w-full", children: name }), jsxRuntime.jsxs("div", { className: "tw-flex tw-justify-center tw-items-center tw-gap-1 tw-leading-[0.7]", children: [isLoadingBalance ? (jsxRuntime.jsx(ui.TextSkeleton, { width: "3em", className: "tw-h-3", isLoading: true })) : showUsdOnHover ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [balance && (jsxRuntime.jsx("span", { className: "tw-text-sm tw-text-material-light-thick tw-leading-[inherit] group-hover/token-item:tw-hidden", children: balance })), jsxRuntime.jsx("span", { className: "tw-text-sm tw-text-material-light-thick tw-leading-[inherit] tw-hidden group-hover/token-item:tw-inline", children: reactHooks.formatUsdAmount(usdValue) })] })) : (balance && (jsxRuntime.jsx("span", { className: "tw-text-sm tw-text-material-light-thick tw-leading-[inherit]", children: balance }))), jsxRuntime.jsx("span", { className: "tw-text-sm tw-text-material-light-average tw-leading-[inherit]", children: symbol })] })] }), jsxRuntime.jsx("div", { className: "tw-flex tw-items-start tw-justify-center tw-text-material-light-thick", children: reactHooks.formatUsdAmount(price) })] }) }));
1964
+ }
1965
+
1966
+ function isSameTx(tx, pending) {
1967
+ if (!tx.transactionId || !pending.transactionId)
1968
+ return false;
1969
+ return tx.transactionId.toLowerCase() === pending.transactionId.toLowerCase();
1970
+ }
1971
+ function isSameAddress(a, b) {
1972
+ return a.trim().toLowerCase() === b.trim().toLowerCase();
1973
+ }
1974
+ function matchesDestinationToken(toToken, destinationToken) {
1975
+ return (toToken.chainId === destinationToken.chainId &&
1976
+ isSameAddress(toToken.address, destinationToken.address));
1977
+ }
1978
+ function isPaymentTx(tx, paymentAmount, destinationTokenDecimals) {
1979
+ try {
1980
+ const expected = reactHooks.parseToBigInt(paymentAmount, destinationTokenDecimals);
1981
+ return tx.quote.route.estimate.toAmount === expected.toString();
1982
+ }
1983
+ catch {
1984
+ return false;
1985
+ }
1986
+ }
1987
+
1988
+ const selectedOutline = "tw-outline tw-outline-2 tw-outline-material-light-thick tw-outline-offset-2";
1989
+ function TokenRow({ index, style, tokens, chainIconMap, onSelect, paymentAmountUsd, isLoadingBalances, }) {
1990
+ const token = tokens[index];
1991
+ if (!token)
1992
+ return null;
1993
+ const balanceNum = +token.balance;
1994
+ const balanceUsd = balanceNum * (token.usdPrice ?? 0);
1995
+ const insufficientBalance = !isLoadingBalances &&
1996
+ paymentAmountUsd !== null &&
1997
+ balanceUsd < paymentAmountUsd;
1998
+ return (jsxRuntime.jsx("div", { style: style, children: jsxRuntime.jsx(TokenListItem, { balance: balanceNum > 0
1999
+ ? reactHooks.formatTokenAmount(token.balance, { exact: false })
2000
+ : "", icon: reactHooks.getTokenImage(token), chainIcon: chainIconMap[token.chainId], name: token.name, price: token.usdPrice ?? 0, usdValue: balanceUsd, symbol: token.symbol, disabled: insufficientBalance, isLoadingBalance: isLoadingBalances, onClick: () => !insufficientBalance && onSelect(token) }) }));
2001
+ }
2002
+ function SelectTokenView() {
2003
+ const { tokens, isInitialLoading: isLoadingBalances } = reactHooks.useAllConnectedWalletBalances();
2004
+ const { chains } = reactHooks.useSquidChains();
2005
+ const { onSwapChange, toToken } = reactHooks.useSwap();
2006
+ const pop = useRouter((s) => s.pop);
2007
+ const destinationToken = useDepositStore((s) => s.config?.destinationToken);
2008
+ const paymentAmount = usePaymentAmount();
2009
+ const paymentAmountUsd = paymentAmount
2010
+ ? Number(paymentAmount) * (toToken?.usdPrice ?? 0)
2011
+ : null;
2012
+ const onSelect = (token) => {
2013
+ onSwapChange({
2014
+ fromChainId: token.chainId,
2015
+ fromTokenAddress: token.address,
2016
+ });
2017
+ pop();
2018
+ };
2019
+ const searchRef = React.useRef(null);
2020
+ const [selectedChainId, setSelectedChainId] = React.useState(null);
2021
+ const [search, setSearch] = React.useState("");
2022
+ React.useEffect(() => {
2023
+ const timer = setTimeout(() => searchRef.current?.focus({ preventScroll: true }), VIEW_TRANSITION_DURATION_MS);
2024
+ return () => clearTimeout(timer);
2025
+ }, []);
2026
+ const chainIconMap = React.useMemo(() => Object.fromEntries(chains.map((c) => [c.chainId, c.chainIconURI])), [chains]);
2027
+ const filteredTokens = React.useMemo(() => {
2028
+ const viewableTokens = reactHooks.filterViewableTokens(tokens, {});
2029
+ const chainFiltered = filterTokensByChain(viewableTokens, selectedChainId);
2030
+ const withoutDestToken = destinationToken
2031
+ ? chainFiltered.filter((t) => !(t.chainId === destinationToken.chainId &&
2032
+ isSameAddress(t.address, destinationToken.address)))
2033
+ : chainFiltered;
2034
+ const matched = search
2035
+ ? reactHooks.searchTokens(search, withoutDestToken, chains)
2036
+ : withoutDestToken;
2037
+ return sortTokensByBalance(matched);
2038
+ }, [tokens, selectedChainId, search, chains, destinationToken]);
2039
+ const selectChain = (chainId) => {
2040
+ setSelectedChainId(chainId);
2041
+ searchRef.current?.focus();
2042
+ };
2043
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SubNavBar, { input: {
2044
+ ref: searchRef,
2045
+ placeholder: "Select coin",
2046
+ value: search,
2047
+ onChange: (e) => setSearch(e.target.value),
2048
+ } }), jsxRuntime.jsxs(ViewContainer, { children: [jsxRuntime.jsxs("div", { role: "radiogroup", "aria-label": "Filter by chain", className: "tw-flex tw-h-14 tw-px-4 tw-items-center tw-justify-stretch tw-gap-3 tw-self-stretch tw-w-full tw-overflow-auto tw-min-h-14 tw-scrollbar-hidden", children: [jsxRuntime.jsx(ui.Button, { role: "radio", "aria-checked": selectedChainId === null, size: "sm", variant: "tertiary", className: ui.cn("!tw-p-3 !tw-h-8", selectedChainId === null && selectedOutline), onClick: () => selectChain(null), children: jsxRuntime.jsx("span", { className: "tw-text-xs", children: "ALL" }) }), chains.map((chain) => (jsxRuntime.jsx("button", { role: "radio", "aria-checked": selectedChainId === chain.chainId, className: ui.cn("tw-shrink-0 tw-rounded-squid-xs", selectedChainId === chain.chainId && selectedOutline), onClick: () => selectChain(chain.chainId), children: jsxRuntime.jsx(ui.Image, { size: "large", rounded: "xs", shadow: true, style: { width: "2rem", height: "2rem" }, src: chain.chainIconURI }) }, chain.chainId)))] }), filteredTokens.length > 0 ? (jsxRuntime.jsx(reactWindow.List, { tagName: "ul", className: "tw-scrollbar-hidden tw-flex-1 tw-self-stretch", style: { flex: "1 1 0" }, rowCount: filteredTokens.length, rowHeight: 56, rowComponent: TokenRow, rowProps: {
2049
+ tokens: filteredTokens,
2050
+ chainIconMap,
2051
+ onSelect,
2052
+ paymentAmountUsd,
2053
+ isLoadingBalances,
2054
+ }, overscanCount: 5 })) : (jsxRuntime.jsx("div", { className: "tw-flex tw-flex-1 tw-items-center tw-justify-center tw-self-stretch tw-px-4", children: jsxRuntime.jsx("span", { className: "tw-text-material-light-thick tw-text-lg tw-font-medium tw-text-center tw-truncate tw-max-w-full", children: search ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: ["No tokens matching \"", jsxRuntime.jsx("span", { className: "tw-text-grey-100", children: search }), "\""] })) : ("No tokens found") }) }))] })] }));
2055
+ }
2056
+
2057
+ class Subscribable {
2058
+ constructor() {
2059
+ this.listeners = new Set();
2060
+ this.subscribe = this.subscribe.bind(this);
2061
+ }
2062
+
2063
+ subscribe(listener) {
2064
+ const identity = {
2065
+ listener
2066
+ };
2067
+ this.listeners.add(identity);
2068
+ this.onSubscribe();
2069
+ return () => {
2070
+ this.listeners.delete(identity);
2071
+ this.onUnsubscribe();
2072
+ };
2073
+ }
2074
+
2075
+ hasListeners() {
2076
+ return this.listeners.size > 0;
2077
+ }
2078
+
2079
+ onSubscribe() {// Do nothing
2080
+ }
2081
+
2082
+ onUnsubscribe() {// Do nothing
2083
+ }
2084
+
2085
+ }
2086
+
2087
+ // TYPES
2088
+ // UTILS
2089
+ const isServer = typeof window === 'undefined' || 'Deno' in window;
2090
+ function noop() {
2091
+ return undefined;
2092
+ }
2093
+ function isValidTimeout(value) {
2094
+ return typeof value === 'number' && value >= 0 && value !== Infinity;
2095
+ }
2096
+ function difference(array1, array2) {
2097
+ return array1.filter(x => !array2.includes(x));
2098
+ }
2099
+ function replaceAt(array, index, value) {
2100
+ const copy = array.slice(0);
2101
+ copy[index] = value;
2102
+ return copy;
2103
+ }
2104
+ function timeUntilStale(updatedAt, staleTime) {
2105
+ return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);
2106
+ }
2107
+ /**
2108
+ * This function returns `a` if `b` is deeply equal.
2109
+ * If not, it will replace any deeply equal children of `b` with those of `a`.
2110
+ * This can be used for structural sharing between JSON values for example.
2111
+ */
2112
+
2113
+ function replaceEqualDeep(a, b) {
2114
+ if (a === b) {
2115
+ return a;
2116
+ }
2117
+
2118
+ const array = isPlainArray(a) && isPlainArray(b);
2119
+
2120
+ if (array || isPlainObject(a) && isPlainObject(b)) {
2121
+ const aSize = array ? a.length : Object.keys(a).length;
2122
+ const bItems = array ? b : Object.keys(b);
2123
+ const bSize = bItems.length;
2124
+ const copy = array ? [] : {};
2125
+ let equalItems = 0;
2126
+
2127
+ for (let i = 0; i < bSize; i++) {
2128
+ const key = array ? i : bItems[i];
2129
+ copy[key] = replaceEqualDeep(a[key], b[key]);
2130
+
2131
+ if (copy[key] === a[key]) {
2132
+ equalItems++;
2133
+ }
2134
+ }
2135
+
2136
+ return aSize === bSize && equalItems === aSize ? a : copy;
2137
+ }
2138
+
2139
+ return b;
2140
+ }
2141
+ /**
2142
+ * Shallow compare objects. Only works with objects that always have the same properties.
2143
+ */
2144
+
2145
+ function shallowEqualObjects(a, b) {
2146
+ if (a && !b || b && !a) {
2147
+ return false;
2148
+ }
2149
+
2150
+ for (const key in a) {
2151
+ if (a[key] !== b[key]) {
2152
+ return false;
2153
+ }
2154
+ }
2155
+
2156
+ return true;
2157
+ }
2158
+ function isPlainArray(value) {
2159
+ return Array.isArray(value) && value.length === Object.keys(value).length;
2160
+ } // Copied from: https://github.com/jonschlinkert/is-plain-object
2161
+
2162
+ function isPlainObject(o) {
2163
+ if (!hasObjectPrototype(o)) {
2164
+ return false;
2165
+ } // If has modified constructor
2166
+
2167
+
2168
+ const ctor = o.constructor;
2169
+
2170
+ if (typeof ctor === 'undefined') {
2171
+ return true;
2172
+ } // If has modified prototype
2173
+
2174
+
2175
+ const prot = ctor.prototype;
2176
+
2177
+ if (!hasObjectPrototype(prot)) {
2178
+ return false;
2179
+ } // If constructor does not have an Object-specific method
2180
+
2181
+
2182
+ if (!prot.hasOwnProperty('isPrototypeOf')) {
2183
+ return false;
2184
+ } // Most likely a plain Object
2185
+
2186
+
2187
+ return true;
2188
+ }
2189
+
2190
+ function hasObjectPrototype(o) {
2191
+ return Object.prototype.toString.call(o) === '[object Object]';
2192
+ }
2193
+ function sleep(timeout) {
2194
+ return new Promise(resolve => {
2195
+ setTimeout(resolve, timeout);
2196
+ });
2197
+ }
2198
+ /**
2199
+ * Schedules a microtask.
2200
+ * This can be useful to schedule state updates after rendering.
2201
+ */
2202
+
2203
+ function scheduleMicrotask(callback) {
2204
+ sleep(0).then(callback);
2205
+ }
2206
+ function replaceData(prevData, data, options) {
2207
+ // Use prev data if an isDataEqual function is defined and returns `true`
2208
+ if (options.isDataEqual != null && options.isDataEqual(prevData, data)) {
2209
+ return prevData;
2210
+ } else if (typeof options.structuralSharing === 'function') {
2211
+ return options.structuralSharing(prevData, data);
2212
+ } else if (options.structuralSharing !== false) {
2213
+ // Structurally share data between prev and new data if needed
2214
+ return replaceEqualDeep(prevData, data);
2215
+ }
2216
+
2217
+ return data;
2218
+ }
2219
+
2220
+ class FocusManager extends Subscribable {
2221
+ constructor() {
2222
+ super();
2223
+
2224
+ this.setup = onFocus => {
2225
+ // addEventListener does not exist in React Native, but window does
2226
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
2227
+ if (!isServer && window.addEventListener) {
2228
+ const listener = () => onFocus(); // Listen to visibillitychange and focus
2229
+
2230
+
2231
+ window.addEventListener('visibilitychange', listener, false);
2232
+ window.addEventListener('focus', listener, false);
2233
+ return () => {
2234
+ // Be sure to unsubscribe if a new handler is set
2235
+ window.removeEventListener('visibilitychange', listener);
2236
+ window.removeEventListener('focus', listener);
2237
+ };
2238
+ }
2239
+
2240
+ return;
2241
+ };
2242
+ }
2243
+
2244
+ onSubscribe() {
2245
+ if (!this.cleanup) {
2246
+ this.setEventListener(this.setup);
2247
+ }
2248
+ }
2249
+
2250
+ onUnsubscribe() {
2251
+ if (!this.hasListeners()) {
2252
+ var _this$cleanup;
2253
+
2254
+ (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);
2255
+ this.cleanup = undefined;
2256
+ }
2257
+ }
2258
+
2259
+ setEventListener(setup) {
2260
+ var _this$cleanup2;
2261
+
2262
+ this.setup = setup;
2263
+ (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);
2264
+ this.cleanup = setup(focused => {
2265
+ if (typeof focused === 'boolean') {
2266
+ this.setFocused(focused);
2267
+ } else {
2268
+ this.onFocus();
2269
+ }
2270
+ });
2271
+ }
2272
+
2273
+ setFocused(focused) {
2274
+ const changed = this.focused !== focused;
2275
+
2276
+ if (changed) {
2277
+ this.focused = focused;
2278
+ this.onFocus();
2279
+ }
2280
+ }
2281
+
2282
+ onFocus() {
2283
+ this.listeners.forEach(({
2284
+ listener
2285
+ }) => {
2286
+ listener();
2287
+ });
2288
+ }
2289
+
2290
+ isFocused() {
2291
+ if (typeof this.focused === 'boolean') {
2292
+ return this.focused;
2293
+ } // document global can be unavailable in react native
2294
+
2295
+
2296
+ if (typeof document === 'undefined') {
2297
+ return true;
2298
+ }
2299
+
2300
+ return [undefined, 'visible', 'prerender'].includes(document.visibilityState);
2301
+ }
2302
+
2303
+ }
2304
+ const focusManager = new FocusManager();
2305
+
2306
+ const onlineEvents = ['online', 'offline'];
2307
+ class OnlineManager extends Subscribable {
2308
+ constructor() {
2309
+ super();
2310
+
2311
+ this.setup = onOnline => {
2312
+ // addEventListener does not exist in React Native, but window does
2313
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
2314
+ if (!isServer && window.addEventListener) {
2315
+ const listener = () => onOnline(); // Listen to online
2316
+
2317
+
2318
+ onlineEvents.forEach(event => {
2319
+ window.addEventListener(event, listener, false);
2320
+ });
2321
+ return () => {
2322
+ // Be sure to unsubscribe if a new handler is set
2323
+ onlineEvents.forEach(event => {
2324
+ window.removeEventListener(event, listener);
2325
+ });
2326
+ };
2327
+ }
2328
+
2329
+ return;
2330
+ };
2331
+ }
2332
+
2333
+ onSubscribe() {
2334
+ if (!this.cleanup) {
2335
+ this.setEventListener(this.setup);
2336
+ }
2337
+ }
2338
+
2339
+ onUnsubscribe() {
2340
+ if (!this.hasListeners()) {
2341
+ var _this$cleanup;
2342
+
2343
+ (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);
2344
+ this.cleanup = undefined;
2345
+ }
2346
+ }
2347
+
2348
+ setEventListener(setup) {
2349
+ var _this$cleanup2;
2350
+
2351
+ this.setup = setup;
2352
+ (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);
2353
+ this.cleanup = setup(online => {
2354
+ if (typeof online === 'boolean') {
2355
+ this.setOnline(online);
2356
+ } else {
2357
+ this.onOnline();
2358
+ }
2359
+ });
2360
+ }
2361
+
2362
+ setOnline(online) {
2363
+ const changed = this.online !== online;
2364
+
2365
+ if (changed) {
2366
+ this.online = online;
2367
+ this.onOnline();
2368
+ }
2369
+ }
2370
+
2371
+ onOnline() {
2372
+ this.listeners.forEach(({
2373
+ listener
2374
+ }) => {
2375
+ listener();
2376
+ });
2377
+ }
2378
+
2379
+ isOnline() {
2380
+ if (typeof this.online === 'boolean') {
2381
+ return this.online;
2382
+ }
2383
+
2384
+ if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {
2385
+ return true;
2386
+ }
2387
+
2388
+ return navigator.onLine;
2389
+ }
2390
+
2391
+ }
2392
+ const onlineManager = new OnlineManager();
2393
+
2394
+ function canFetch(networkMode) {
2395
+ return (networkMode != null ? networkMode : 'online') === 'online' ? onlineManager.isOnline() : true;
2396
+ }
2397
+ class CancelledError {
2398
+ constructor(options) {
2399
+ this.revert = options == null ? void 0 : options.revert;
2400
+ this.silent = options == null ? void 0 : options.silent;
2401
+ }
2402
+
2403
+ }
2404
+ function isCancelledError(value) {
2405
+ return value instanceof CancelledError;
2406
+ }
2407
+
2408
+ function createNotifyManager() {
2409
+ let queue = [];
2410
+ let transactions = 0;
2411
+
2412
+ let notifyFn = callback => {
2413
+ callback();
2414
+ };
2415
+
2416
+ let batchNotifyFn = callback => {
2417
+ callback();
2418
+ };
2419
+
2420
+ const batch = callback => {
2421
+ let result;
2422
+ transactions++;
2423
+
2424
+ try {
2425
+ result = callback();
2426
+ } finally {
2427
+ transactions--;
2428
+
2429
+ if (!transactions) {
2430
+ flush();
2431
+ }
2432
+ }
2433
+
2434
+ return result;
2435
+ };
2436
+
2437
+ const schedule = callback => {
2438
+ if (transactions) {
2439
+ queue.push(callback);
2440
+ } else {
2441
+ scheduleMicrotask(() => {
2442
+ notifyFn(callback);
2443
+ });
2444
+ }
2445
+ };
2446
+ /**
2447
+ * All calls to the wrapped function will be batched.
2448
+ */
2449
+
2450
+
2451
+ const batchCalls = callback => {
2452
+ return (...args) => {
2453
+ schedule(() => {
2454
+ callback(...args);
2455
+ });
2456
+ };
2457
+ };
2458
+
2459
+ const flush = () => {
2460
+ const originalQueue = queue;
2461
+ queue = [];
2462
+
2463
+ if (originalQueue.length) {
2464
+ scheduleMicrotask(() => {
2465
+ batchNotifyFn(() => {
2466
+ originalQueue.forEach(callback => {
2467
+ notifyFn(callback);
2468
+ });
2469
+ });
2470
+ });
2471
+ }
2472
+ };
2473
+ /**
2474
+ * Use this method to set a custom notify function.
2475
+ * This can be used to for example wrap notifications with `React.act` while running tests.
2476
+ */
2477
+
2478
+
2479
+ const setNotifyFunction = fn => {
2480
+ notifyFn = fn;
2481
+ };
2482
+ /**
2483
+ * Use this method to set a custom function to batch notifications together into a single tick.
2484
+ * By default React Query will use the batch function provided by ReactDOM or React Native.
2485
+ */
2486
+
2487
+
2488
+ const setBatchNotifyFunction = fn => {
2489
+ batchNotifyFn = fn;
2490
+ };
2491
+
2492
+ return {
2493
+ batch,
2494
+ batchCalls,
2495
+ schedule,
2496
+ setNotifyFunction,
2497
+ setBatchNotifyFunction
2498
+ };
2499
+ } // SINGLETON
2500
+
2501
+ const notifyManager = createNotifyManager();
2502
+
2503
+ class QueryObserver extends Subscribable {
2504
+ constructor(client, options) {
2505
+ super();
2506
+ this.client = client;
2507
+ this.options = options;
2508
+ this.trackedProps = new Set();
2509
+ this.selectError = null;
2510
+ this.bindMethods();
2511
+ this.setOptions(options);
2512
+ }
2513
+
2514
+ bindMethods() {
2515
+ this.remove = this.remove.bind(this);
2516
+ this.refetch = this.refetch.bind(this);
2517
+ }
2518
+
2519
+ onSubscribe() {
2520
+ if (this.listeners.size === 1) {
2521
+ this.currentQuery.addObserver(this);
2522
+
2523
+ if (shouldFetchOnMount(this.currentQuery, this.options)) {
2524
+ this.executeFetch();
2525
+ }
2526
+
2527
+ this.updateTimers();
2528
+ }
2529
+ }
2530
+
2531
+ onUnsubscribe() {
2532
+ if (!this.hasListeners()) {
2533
+ this.destroy();
2534
+ }
2535
+ }
2536
+
2537
+ shouldFetchOnReconnect() {
2538
+ return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect);
2539
+ }
2540
+
2541
+ shouldFetchOnWindowFocus() {
2542
+ return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus);
2543
+ }
2544
+
2545
+ destroy() {
2546
+ this.listeners = new Set();
2547
+ this.clearStaleTimeout();
2548
+ this.clearRefetchInterval();
2549
+ this.currentQuery.removeObserver(this);
2550
+ }
2551
+
2552
+ setOptions(options, notifyOptions) {
2553
+ const prevOptions = this.options;
2554
+ const prevQuery = this.currentQuery;
2555
+ this.options = this.client.defaultQueryOptions(options);
2556
+
2557
+ if (process.env.NODE_ENV !== 'production' && typeof (options == null ? void 0 : options.isDataEqual) !== 'undefined') {
2558
+ this.client.getLogger().error("The isDataEqual option has been deprecated and will be removed in the next major version. You can achieve the same functionality by passing a function as the structuralSharing option");
2559
+ }
2560
+
2561
+ if (!shallowEqualObjects(prevOptions, this.options)) {
2562
+ this.client.getQueryCache().notify({
2563
+ type: 'observerOptionsUpdated',
2564
+ query: this.currentQuery,
2565
+ observer: this
2566
+ });
2567
+ }
2568
+
2569
+ if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {
2570
+ throw new Error('Expected enabled to be a boolean');
2571
+ } // Keep previous query key if the user does not supply one
2572
+
2573
+
2574
+ if (!this.options.queryKey) {
2575
+ this.options.queryKey = prevOptions.queryKey;
2576
+ }
2577
+
2578
+ this.updateQuery();
2579
+ const mounted = this.hasListeners(); // Fetch if there are subscribers
2580
+
2581
+ if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {
2582
+ this.executeFetch();
2583
+ } // Update result
2584
+
2585
+
2586
+ this.updateResult(notifyOptions); // Update stale interval if needed
2587
+
2588
+ if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {
2589
+ this.updateStaleTimeout();
2590
+ }
2591
+
2592
+ const nextRefetchInterval = this.computeRefetchInterval(); // Update refetch interval if needed
2593
+
2594
+ if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) {
2595
+ this.updateRefetchInterval(nextRefetchInterval);
2596
+ }
2597
+ }
2598
+
2599
+ getOptimisticResult(options) {
2600
+ const query = this.client.getQueryCache().build(this.client, options);
2601
+ const result = this.createResult(query, options);
2602
+
2603
+ if (shouldAssignObserverCurrentProperties(this, result, options)) {
2604
+ // this assigns the optimistic result to the current Observer
2605
+ // because if the query function changes, useQuery will be performing
2606
+ // an effect where it would fetch again.
2607
+ // When the fetch finishes, we perform a deep data cloning in order
2608
+ // to reuse objects references. This deep data clone is performed against
2609
+ // the `observer.currentResult.data` property
2610
+ // When QueryKey changes, we refresh the query and get new `optimistic`
2611
+ // result, while we leave the `observer.currentResult`, so when new data
2612
+ // arrives, it finds the old `observer.currentResult` which is related
2613
+ // to the old QueryKey. Which means that currentResult and selectData are
2614
+ // out of sync already.
2615
+ // To solve this, we move the cursor of the currentResult everytime
2616
+ // an observer reads an optimistic value.
2617
+ // When keeping the previous data, the result doesn't change until new
2618
+ // data arrives.
2619
+ this.currentResult = result;
2620
+ this.currentResultOptions = this.options;
2621
+ this.currentResultState = this.currentQuery.state;
2622
+ }
2623
+
2624
+ return result;
2625
+ }
2626
+
2627
+ getCurrentResult() {
2628
+ return this.currentResult;
2629
+ }
2630
+
2631
+ trackResult(result) {
2632
+ const trackedResult = {};
2633
+ Object.keys(result).forEach(key => {
2634
+ Object.defineProperty(trackedResult, key, {
2635
+ configurable: false,
2636
+ enumerable: true,
2637
+ get: () => {
2638
+ this.trackedProps.add(key);
2639
+ return result[key];
2640
+ }
2641
+ });
2642
+ });
2643
+ return trackedResult;
2644
+ }
2645
+
2646
+ getCurrentQuery() {
2647
+ return this.currentQuery;
2648
+ }
2649
+
2650
+ remove() {
2651
+ this.client.getQueryCache().remove(this.currentQuery);
2652
+ }
2653
+
2654
+ refetch({
2655
+ refetchPage,
2656
+ ...options
2657
+ } = {}) {
2658
+ return this.fetch({ ...options,
2659
+ meta: {
2660
+ refetchPage
2661
+ }
2662
+ });
2663
+ }
2664
+
2665
+ fetchOptimistic(options) {
2666
+ const defaultedOptions = this.client.defaultQueryOptions(options);
2667
+ const query = this.client.getQueryCache().build(this.client, defaultedOptions);
2668
+ query.isFetchingOptimistic = true;
2669
+ return query.fetch().then(() => this.createResult(query, defaultedOptions));
2670
+ }
2671
+
2672
+ fetch(fetchOptions) {
2673
+ var _fetchOptions$cancelR;
2674
+
2675
+ return this.executeFetch({ ...fetchOptions,
2676
+ cancelRefetch: (_fetchOptions$cancelR = fetchOptions.cancelRefetch) != null ? _fetchOptions$cancelR : true
2677
+ }).then(() => {
2678
+ this.updateResult();
2679
+ return this.currentResult;
2680
+ });
2681
+ }
2682
+
2683
+ executeFetch(fetchOptions) {
2684
+ // Make sure we reference the latest query as the current one might have been removed
2685
+ this.updateQuery(); // Fetch
2686
+
2687
+ let promise = this.currentQuery.fetch(this.options, fetchOptions);
2688
+
2689
+ if (!(fetchOptions != null && fetchOptions.throwOnError)) {
2690
+ promise = promise.catch(noop);
2691
+ }
2692
+
2693
+ return promise;
2694
+ }
2695
+
2696
+ updateStaleTimeout() {
2697
+ this.clearStaleTimeout();
2698
+
2699
+ if (isServer || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) {
2700
+ return;
2701
+ }
2702
+
2703
+ const time = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration.
2704
+ // To mitigate this issue we always add 1 ms to the timeout.
2705
+
2706
+ const timeout = time + 1;
2707
+ this.staleTimeoutId = setTimeout(() => {
2708
+ if (!this.currentResult.isStale) {
2709
+ this.updateResult();
2710
+ }
2711
+ }, timeout);
2712
+ }
2713
+
2714
+ computeRefetchInterval() {
2715
+ var _this$options$refetch;
2716
+
2717
+ return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false;
2718
+ }
2719
+
2720
+ updateRefetchInterval(nextInterval) {
2721
+ this.clearRefetchInterval();
2722
+ this.currentRefetchInterval = nextInterval;
2723
+
2724
+ if (isServer || this.options.enabled === false || !isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) {
2725
+ return;
2726
+ }
2727
+
2728
+ this.refetchIntervalId = setInterval(() => {
2729
+ if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {
2730
+ this.executeFetch();
2731
+ }
2732
+ }, this.currentRefetchInterval);
2733
+ }
2734
+
2735
+ updateTimers() {
2736
+ this.updateStaleTimeout();
2737
+ this.updateRefetchInterval(this.computeRefetchInterval());
2738
+ }
2739
+
2740
+ clearStaleTimeout() {
2741
+ if (this.staleTimeoutId) {
2742
+ clearTimeout(this.staleTimeoutId);
2743
+ this.staleTimeoutId = undefined;
2744
+ }
2745
+ }
2746
+
2747
+ clearRefetchInterval() {
2748
+ if (this.refetchIntervalId) {
2749
+ clearInterval(this.refetchIntervalId);
2750
+ this.refetchIntervalId = undefined;
2751
+ }
2752
+ }
2753
+
2754
+ createResult(query, options) {
2755
+ const prevQuery = this.currentQuery;
2756
+ const prevOptions = this.options;
2757
+ const prevResult = this.currentResult;
2758
+ const prevResultState = this.currentResultState;
2759
+ const prevResultOptions = this.currentResultOptions;
2760
+ const queryChange = query !== prevQuery;
2761
+ const queryInitialState = queryChange ? query.state : this.currentQueryInitialState;
2762
+ const prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;
2763
+ const {
2764
+ state
2765
+ } = query;
2766
+ let {
2767
+ dataUpdatedAt,
2768
+ error,
2769
+ errorUpdatedAt,
2770
+ fetchStatus,
2771
+ status
2772
+ } = state;
2773
+ let isPreviousData = false;
2774
+ let isPlaceholderData = false;
2775
+ let data; // Optimistically set result in fetching state if needed
2776
+
2777
+ if (options._optimisticResults) {
2778
+ const mounted = this.hasListeners();
2779
+ const fetchOnMount = !mounted && shouldFetchOnMount(query, options);
2780
+ const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);
2781
+
2782
+ if (fetchOnMount || fetchOptionally) {
2783
+ fetchStatus = canFetch(query.options.networkMode) ? 'fetching' : 'paused';
2784
+
2785
+ if (!dataUpdatedAt) {
2786
+ status = 'loading';
2787
+ }
2788
+ }
2789
+
2790
+ if (options._optimisticResults === 'isRestoring') {
2791
+ fetchStatus = 'idle';
2792
+ }
2793
+ } // Keep previous data if needed
2794
+
2795
+
2796
+ if (options.keepPreviousData && !state.dataUpdatedAt && prevQueryResult != null && prevQueryResult.isSuccess && status !== 'error') {
2797
+ data = prevQueryResult.data;
2798
+ dataUpdatedAt = prevQueryResult.dataUpdatedAt;
2799
+ status = prevQueryResult.status;
2800
+ isPreviousData = true;
2801
+ } // Select data if needed
2802
+ else if (options.select && typeof state.data !== 'undefined') {
2803
+ // Memoize select result
2804
+ if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) {
2805
+ data = this.selectResult;
2806
+ } else {
2807
+ try {
2808
+ this.selectFn = options.select;
2809
+ data = options.select(state.data);
2810
+ data = replaceData(prevResult == null ? void 0 : prevResult.data, data, options);
2811
+ this.selectResult = data;
2812
+ this.selectError = null;
2813
+ } catch (selectError) {
2814
+ if (process.env.NODE_ENV !== 'production') {
2815
+ this.client.getLogger().error(selectError);
2816
+ }
2817
+
2818
+ this.selectError = selectError;
2819
+ }
2820
+ }
2821
+ } // Use query data
2822
+ else {
2823
+ data = state.data;
2824
+ } // Show placeholder data if needed
2825
+
2826
+
2827
+ if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && status === 'loading') {
2828
+ let placeholderData; // Memoize placeholder data
2829
+
2830
+ if (prevResult != null && prevResult.isPlaceholderData && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {
2831
+ placeholderData = prevResult.data;
2832
+ } else {
2833
+ placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData;
2834
+
2835
+ if (options.select && typeof placeholderData !== 'undefined') {
2836
+ try {
2837
+ placeholderData = options.select(placeholderData);
2838
+ this.selectError = null;
2839
+ } catch (selectError) {
2840
+ if (process.env.NODE_ENV !== 'production') {
2841
+ this.client.getLogger().error(selectError);
2842
+ }
2843
+
2844
+ this.selectError = selectError;
2845
+ }
2846
+ }
2847
+ }
2848
+
2849
+ if (typeof placeholderData !== 'undefined') {
2850
+ status = 'success';
2851
+ data = replaceData(prevResult == null ? void 0 : prevResult.data, placeholderData, options);
2852
+ isPlaceholderData = true;
2853
+ }
2854
+ }
2855
+
2856
+ if (this.selectError) {
2857
+ error = this.selectError;
2858
+ data = this.selectResult;
2859
+ errorUpdatedAt = Date.now();
2860
+ status = 'error';
2861
+ }
2862
+
2863
+ const isFetching = fetchStatus === 'fetching';
2864
+ const isLoading = status === 'loading';
2865
+ const isError = status === 'error';
2866
+ const result = {
2867
+ status,
2868
+ fetchStatus,
2869
+ isLoading,
2870
+ isSuccess: status === 'success',
2871
+ isError,
2872
+ isInitialLoading: isLoading && isFetching,
2873
+ data,
2874
+ dataUpdatedAt,
2875
+ error,
2876
+ errorUpdatedAt,
2877
+ failureCount: state.fetchFailureCount,
2878
+ failureReason: state.fetchFailureReason,
2879
+ errorUpdateCount: state.errorUpdateCount,
2880
+ isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,
2881
+ isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,
2882
+ isFetching,
2883
+ isRefetching: isFetching && !isLoading,
2884
+ isLoadingError: isError && state.dataUpdatedAt === 0,
2885
+ isPaused: fetchStatus === 'paused',
2886
+ isPlaceholderData,
2887
+ isPreviousData,
2888
+ isRefetchError: isError && state.dataUpdatedAt !== 0,
2889
+ isStale: isStale(query, options),
2890
+ refetch: this.refetch,
2891
+ remove: this.remove
2892
+ };
2893
+ return result;
2894
+ }
2895
+
2896
+ updateResult(notifyOptions) {
2897
+ const prevResult = this.currentResult;
2898
+ const nextResult = this.createResult(this.currentQuery, this.options);
2899
+ this.currentResultState = this.currentQuery.state;
2900
+ this.currentResultOptions = this.options; // Only notify and update result if something has changed
2901
+
2902
+ if (shallowEqualObjects(nextResult, prevResult)) {
2903
+ return;
2904
+ }
2905
+
2906
+ this.currentResult = nextResult; // Determine which callbacks to trigger
2907
+
2908
+ const defaultNotifyOptions = {
2909
+ cache: true
2910
+ };
2911
+
2912
+ const shouldNotifyListeners = () => {
2913
+ if (!prevResult) {
2914
+ return true;
2915
+ }
2916
+
2917
+ const {
2918
+ notifyOnChangeProps
2919
+ } = this.options;
2920
+ const notifyOnChangePropsValue = typeof notifyOnChangeProps === 'function' ? notifyOnChangeProps() : notifyOnChangeProps;
2921
+
2922
+ if (notifyOnChangePropsValue === 'all' || !notifyOnChangePropsValue && !this.trackedProps.size) {
2923
+ return true;
2924
+ }
2925
+
2926
+ const includedProps = new Set(notifyOnChangePropsValue != null ? notifyOnChangePropsValue : this.trackedProps);
2927
+
2928
+ if (this.options.useErrorBoundary) {
2929
+ includedProps.add('error');
2930
+ }
2931
+
2932
+ return Object.keys(this.currentResult).some(key => {
2933
+ const typedKey = key;
2934
+ const changed = this.currentResult[typedKey] !== prevResult[typedKey];
2935
+ return changed && includedProps.has(typedKey);
2936
+ });
2937
+ };
2938
+
2939
+ if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && shouldNotifyListeners()) {
2940
+ defaultNotifyOptions.listeners = true;
2941
+ }
2942
+
2943
+ this.notify({ ...defaultNotifyOptions,
2944
+ ...notifyOptions
2945
+ });
2946
+ }
2947
+
2948
+ updateQuery() {
2949
+ const query = this.client.getQueryCache().build(this.client, this.options);
2950
+
2951
+ if (query === this.currentQuery) {
2952
+ return;
2953
+ }
2954
+
2955
+ const prevQuery = this.currentQuery;
2956
+ this.currentQuery = query;
2957
+ this.currentQueryInitialState = query.state;
2958
+ this.previousQueryResult = this.currentResult;
2959
+
2960
+ if (this.hasListeners()) {
2961
+ prevQuery == null ? void 0 : prevQuery.removeObserver(this);
2962
+ query.addObserver(this);
2963
+ }
2964
+ }
2965
+
2966
+ onQueryUpdate(action) {
2967
+ const notifyOptions = {};
2968
+
2969
+ if (action.type === 'success') {
2970
+ notifyOptions.onSuccess = !action.manual;
2971
+ } else if (action.type === 'error' && !isCancelledError(action.error)) {
2972
+ notifyOptions.onError = true;
2973
+ }
2974
+
2975
+ this.updateResult(notifyOptions);
2976
+
2977
+ if (this.hasListeners()) {
2978
+ this.updateTimers();
2979
+ }
2980
+ }
2981
+
2982
+ notify(notifyOptions) {
2983
+ notifyManager.batch(() => {
2984
+ // First trigger the configuration callbacks
2985
+ if (notifyOptions.onSuccess) {
2986
+ var _this$options$onSucce, _this$options, _this$options$onSettl, _this$options2;
2987
+
2988
+ (_this$options$onSucce = (_this$options = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options, this.currentResult.data);
2989
+ (_this$options$onSettl = (_this$options2 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options2, this.currentResult.data, null);
2990
+ } else if (notifyOptions.onError) {
2991
+ var _this$options$onError, _this$options3, _this$options$onSettl2, _this$options4;
2992
+
2993
+ (_this$options$onError = (_this$options3 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options3, this.currentResult.error);
2994
+ (_this$options$onSettl2 = (_this$options4 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options4, undefined, this.currentResult.error);
2995
+ } // Then trigger the listeners
2996
+
2997
+
2998
+ if (notifyOptions.listeners) {
2999
+ this.listeners.forEach(({
3000
+ listener
3001
+ }) => {
3002
+ listener(this.currentResult);
3003
+ });
3004
+ } // Then the cache listeners
3005
+
3006
+
3007
+ if (notifyOptions.cache) {
3008
+ this.client.getQueryCache().notify({
3009
+ query: this.currentQuery,
3010
+ type: 'observerResultsUpdated'
3011
+ });
3012
+ }
3013
+ });
3014
+ }
3015
+
3016
+ }
3017
+
3018
+ function shouldLoadOnMount(query, options) {
3019
+ return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);
3020
+ }
3021
+
3022
+ function shouldFetchOnMount(query, options) {
3023
+ return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);
3024
+ }
3025
+
3026
+ function shouldFetchOn(query, options, field) {
3027
+ if (options.enabled !== false) {
3028
+ const value = typeof field === 'function' ? field(query) : field;
3029
+ return value === 'always' || value !== false && isStale(query, options);
3030
+ }
3031
+
3032
+ return false;
3033
+ }
3034
+
3035
+ function shouldFetchOptionally(query, prevQuery, options, prevOptions) {
3036
+ return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options);
3037
+ }
3038
+
3039
+ function isStale(query, options) {
3040
+ return query.isStaleByTime(options.staleTime);
3041
+ } // this function would decide if we will update the observer's 'current'
3042
+ // properties after an optimistic reading via getOptimisticResult
3043
+
3044
+
3045
+ function shouldAssignObserverCurrentProperties(observer, optimisticResult, options) {
3046
+ // it is important to keep this condition like this for three reasons:
3047
+ // 1. It will get removed in the v5
3048
+ // 2. it reads: don't update the properties if we want to keep the previous
3049
+ // data.
3050
+ // 3. The opposite condition (!options.keepPreviousData) would fallthrough
3051
+ // and will result in a bad decision
3052
+ if (options.keepPreviousData) {
3053
+ return false;
3054
+ } // this means we want to put some placeholder data when pending and queryKey
3055
+ // changed.
3056
+
3057
+
3058
+ if (options.placeholderData !== undefined) {
3059
+ // re-assign properties only if current data is placeholder data
3060
+ // which means that data did not arrive yet, so, if there is some cached data
3061
+ // we need to "prepare" to receive it
3062
+ return optimisticResult.isPlaceholderData;
3063
+ } // if the newly created result isn't what the observer is holding as current,
3064
+ // then we'll need to update the properties as well
3065
+
3066
+
3067
+ if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {
3068
+ return true;
3069
+ } // basically, just keep previous properties if nothing changed
3070
+
3071
+
3072
+ return false;
3073
+ }
3074
+
3075
+ class QueriesObserver extends Subscribable {
3076
+ constructor(client, queries) {
3077
+ super();
3078
+ this.client = client;
3079
+ this.queries = [];
3080
+ this.result = [];
3081
+ this.observers = [];
3082
+ this.observersMap = {};
3083
+
3084
+ if (queries) {
3085
+ this.setQueries(queries);
3086
+ }
3087
+ }
3088
+
3089
+ onSubscribe() {
3090
+ if (this.listeners.size === 1) {
3091
+ this.observers.forEach(observer => {
3092
+ observer.subscribe(result => {
3093
+ this.onUpdate(observer, result);
3094
+ });
3095
+ });
3096
+ }
3097
+ }
3098
+
3099
+ onUnsubscribe() {
3100
+ if (!this.listeners.size) {
3101
+ this.destroy();
3102
+ }
3103
+ }
3104
+
3105
+ destroy() {
3106
+ this.listeners = new Set();
3107
+ this.observers.forEach(observer => {
3108
+ observer.destroy();
3109
+ });
3110
+ }
3111
+
3112
+ setQueries(queries, notifyOptions) {
3113
+ this.queries = queries;
3114
+ notifyManager.batch(() => {
3115
+ const prevObservers = this.observers;
3116
+ const newObserverMatches = this.findMatchingObservers(this.queries); // set options for the new observers to notify of changes
3117
+
3118
+ newObserverMatches.forEach(match => match.observer.setOptions(match.defaultedQueryOptions, notifyOptions));
3119
+ const newObservers = newObserverMatches.map(match => match.observer);
3120
+ const newObserversMap = Object.fromEntries(newObservers.map(observer => [observer.options.queryHash, observer]));
3121
+ const newResult = newObservers.map(observer => observer.getCurrentResult());
3122
+ const hasIndexChange = newObservers.some((observer, index) => observer !== prevObservers[index]);
3123
+
3124
+ if (prevObservers.length === newObservers.length && !hasIndexChange) {
3125
+ return;
3126
+ }
3127
+
3128
+ this.observers = newObservers;
3129
+ this.observersMap = newObserversMap;
3130
+ this.result = newResult;
3131
+
3132
+ if (!this.hasListeners()) {
3133
+ return;
3134
+ }
3135
+
3136
+ difference(prevObservers, newObservers).forEach(observer => {
3137
+ observer.destroy();
3138
+ });
3139
+ difference(newObservers, prevObservers).forEach(observer => {
3140
+ observer.subscribe(result => {
3141
+ this.onUpdate(observer, result);
3142
+ });
3143
+ });
3144
+ this.notify();
3145
+ });
3146
+ }
3147
+
3148
+ getCurrentResult() {
3149
+ return this.result;
3150
+ }
3151
+
3152
+ getQueries() {
3153
+ return this.observers.map(observer => observer.getCurrentQuery());
3154
+ }
3155
+
3156
+ getObservers() {
3157
+ return this.observers;
3158
+ }
3159
+
3160
+ getOptimisticResult(queries) {
3161
+ return this.findMatchingObservers(queries).map(match => match.observer.getOptimisticResult(match.defaultedQueryOptions));
3162
+ }
3163
+
3164
+ findMatchingObservers(queries) {
3165
+ const prevObservers = this.observers;
3166
+ const prevObserversMap = new Map(prevObservers.map(observer => [observer.options.queryHash, observer]));
3167
+ const defaultedQueryOptions = queries.map(options => this.client.defaultQueryOptions(options));
3168
+ const matchingObservers = defaultedQueryOptions.flatMap(defaultedOptions => {
3169
+ const match = prevObserversMap.get(defaultedOptions.queryHash);
3170
+
3171
+ if (match != null) {
3172
+ return [{
3173
+ defaultedQueryOptions: defaultedOptions,
3174
+ observer: match
3175
+ }];
3176
+ }
3177
+
3178
+ return [];
3179
+ });
3180
+ const matchedQueryHashes = new Set(matchingObservers.map(match => match.defaultedQueryOptions.queryHash));
3181
+ const unmatchedQueries = defaultedQueryOptions.filter(defaultedOptions => !matchedQueryHashes.has(defaultedOptions.queryHash));
3182
+ const matchingObserversSet = new Set(matchingObservers.map(match => match.observer));
3183
+ const unmatchedObservers = prevObservers.filter(prevObserver => !matchingObserversSet.has(prevObserver));
3184
+
3185
+ const getObserver = options => {
3186
+ const defaultedOptions = this.client.defaultQueryOptions(options);
3187
+ const currentObserver = this.observersMap[defaultedOptions.queryHash];
3188
+ return currentObserver != null ? currentObserver : new QueryObserver(this.client, defaultedOptions);
3189
+ };
3190
+
3191
+ const newOrReusedObservers = unmatchedQueries.map((options, index) => {
3192
+ if (options.keepPreviousData) {
3193
+ // return previous data from one of the observers that no longer match
3194
+ const previouslyUsedObserver = unmatchedObservers[index];
3195
+
3196
+ if (previouslyUsedObserver !== undefined) {
3197
+ return {
3198
+ defaultedQueryOptions: options,
3199
+ observer: previouslyUsedObserver
3200
+ };
3201
+ }
3202
+ }
3203
+
3204
+ return {
3205
+ defaultedQueryOptions: options,
3206
+ observer: getObserver(options)
3207
+ };
3208
+ });
3209
+
3210
+ const sortMatchesByOrderOfQueries = (a, b) => defaultedQueryOptions.indexOf(a.defaultedQueryOptions) - defaultedQueryOptions.indexOf(b.defaultedQueryOptions);
3211
+
3212
+ return matchingObservers.concat(newOrReusedObservers).sort(sortMatchesByOrderOfQueries);
3213
+ }
3214
+
3215
+ onUpdate(observer, result) {
3216
+ const index = this.observers.indexOf(observer);
3217
+
3218
+ if (index !== -1) {
3219
+ this.result = replaceAt(this.result, index, result);
3220
+ this.notify();
3221
+ }
3222
+ }
3223
+
3224
+ notify() {
3225
+ notifyManager.batch(() => {
3226
+ this.listeners.forEach(({
3227
+ listener
3228
+ }) => {
3229
+ listener(this.result);
3230
+ });
3231
+ });
3232
+ }
3233
+
3234
+ }
3235
+
3236
+ var shim = {exports: {}};
3237
+
3238
+ var useSyncExternalStoreShim_production = {};
3239
+
3240
+ var require$$0 = /*@__PURE__*/getAugmentedNamespace(React__namespace);
3241
+
3242
+ /**
3243
+ * @license React
3244
+ * use-sync-external-store-shim.production.js
3245
+ *
3246
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3247
+ *
3248
+ * This source code is licensed under the MIT license found in the
3249
+ * LICENSE file in the root directory of this source tree.
3250
+ */
3251
+
3252
+ var hasRequiredUseSyncExternalStoreShim_production;
3253
+
3254
+ function requireUseSyncExternalStoreShim_production () {
3255
+ if (hasRequiredUseSyncExternalStoreShim_production) return useSyncExternalStoreShim_production;
3256
+ hasRequiredUseSyncExternalStoreShim_production = 1;
3257
+ var React = require$$0;
3258
+ function is(x, y) {
3259
+ return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);
3260
+ }
3261
+ var objectIs = "function" === typeof Object.is ? Object.is : is,
3262
+ useState = React.useState,
3263
+ useEffect = React.useEffect,
3264
+ useLayoutEffect = React.useLayoutEffect,
3265
+ useDebugValue = React.useDebugValue;
3266
+ function useSyncExternalStore$2(subscribe, getSnapshot) {
3267
+ var value = getSnapshot(),
3268
+ _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),
3269
+ inst = _useState[0].inst,
3270
+ forceUpdate = _useState[1];
3271
+ useLayoutEffect(
3272
+ function () {
3273
+ inst.value = value;
3274
+ inst.getSnapshot = getSnapshot;
3275
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
3276
+ },
3277
+ [subscribe, value, getSnapshot]
3278
+ );
3279
+ useEffect(
3280
+ function () {
3281
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
3282
+ return subscribe(function () {
3283
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
3284
+ });
3285
+ },
3286
+ [subscribe]
3287
+ );
3288
+ useDebugValue(value);
3289
+ return value;
3290
+ }
3291
+ function checkIfSnapshotChanged(inst) {
3292
+ var latestGetSnapshot = inst.getSnapshot;
3293
+ inst = inst.value;
3294
+ try {
3295
+ var nextValue = latestGetSnapshot();
3296
+ return !objectIs(inst, nextValue);
3297
+ } catch (error) {
3298
+ return true;
3299
+ }
3300
+ }
3301
+ function useSyncExternalStore$1(subscribe, getSnapshot) {
3302
+ return getSnapshot();
3303
+ }
3304
+ var shim =
3305
+ "undefined" === typeof window ||
3306
+ "undefined" === typeof window.document ||
3307
+ "undefined" === typeof window.document.createElement
3308
+ ? useSyncExternalStore$1
3309
+ : useSyncExternalStore$2;
3310
+ useSyncExternalStoreShim_production.useSyncExternalStore =
3311
+ void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;
3312
+ return useSyncExternalStoreShim_production;
3313
+ }
3314
+
3315
+ var useSyncExternalStoreShim_development = {};
3316
+
3317
+ /**
3318
+ * @license React
3319
+ * use-sync-external-store-shim.development.js
3320
+ *
3321
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3322
+ *
3323
+ * This source code is licensed under the MIT license found in the
3324
+ * LICENSE file in the root directory of this source tree.
3325
+ */
3326
+
3327
+ var hasRequiredUseSyncExternalStoreShim_development;
3328
+
3329
+ function requireUseSyncExternalStoreShim_development () {
3330
+ if (hasRequiredUseSyncExternalStoreShim_development) return useSyncExternalStoreShim_development;
3331
+ hasRequiredUseSyncExternalStoreShim_development = 1;
3332
+ "production" !== process.env.NODE_ENV &&
3333
+ (function () {
3334
+ function is(x, y) {
3335
+ return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);
3336
+ }
3337
+ function useSyncExternalStore$2(subscribe, getSnapshot) {
3338
+ didWarnOld18Alpha ||
3339
+ void 0 === React.startTransition ||
3340
+ ((didWarnOld18Alpha = true),
3341
+ console.error(
3342
+ "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."
3343
+ ));
3344
+ var value = getSnapshot();
3345
+ if (!didWarnUncachedGetSnapshot) {
3346
+ var cachedValue = getSnapshot();
3347
+ objectIs(value, cachedValue) ||
3348
+ (console.error(
3349
+ "The result of getSnapshot should be cached to avoid an infinite loop"
3350
+ ),
3351
+ (didWarnUncachedGetSnapshot = true));
3352
+ }
3353
+ cachedValue = useState({
3354
+ inst: { value: value, getSnapshot: getSnapshot }
3355
+ });
3356
+ var inst = cachedValue[0].inst,
3357
+ forceUpdate = cachedValue[1];
3358
+ useLayoutEffect(
3359
+ function () {
3360
+ inst.value = value;
3361
+ inst.getSnapshot = getSnapshot;
3362
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
3363
+ },
3364
+ [subscribe, value, getSnapshot]
3365
+ );
3366
+ useEffect(
3367
+ function () {
3368
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
3369
+ return subscribe(function () {
3370
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
3371
+ });
3372
+ },
3373
+ [subscribe]
3374
+ );
3375
+ useDebugValue(value);
3376
+ return value;
3377
+ }
3378
+ function checkIfSnapshotChanged(inst) {
3379
+ var latestGetSnapshot = inst.getSnapshot;
3380
+ inst = inst.value;
3381
+ try {
3382
+ var nextValue = latestGetSnapshot();
3383
+ return !objectIs(inst, nextValue);
3384
+ } catch (error) {
3385
+ return true;
3386
+ }
3387
+ }
3388
+ function useSyncExternalStore$1(subscribe, getSnapshot) {
3389
+ return getSnapshot();
3390
+ }
3391
+ "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
3392
+ "function" ===
3393
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&
3394
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
3395
+ var React = require$$0,
3396
+ objectIs = "function" === typeof Object.is ? Object.is : is,
3397
+ useState = React.useState,
3398
+ useEffect = React.useEffect,
3399
+ useLayoutEffect = React.useLayoutEffect,
3400
+ useDebugValue = React.useDebugValue,
3401
+ didWarnOld18Alpha = false,
3402
+ didWarnUncachedGetSnapshot = false,
3403
+ shim =
3404
+ "undefined" === typeof window ||
3405
+ "undefined" === typeof window.document ||
3406
+ "undefined" === typeof window.document.createElement
3407
+ ? useSyncExternalStore$1
3408
+ : useSyncExternalStore$2;
3409
+ useSyncExternalStoreShim_development.useSyncExternalStore =
3410
+ void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;
3411
+ "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
3412
+ "function" ===
3413
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
3414
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
3415
+ })();
3416
+ return useSyncExternalStoreShim_development;
3417
+ }
3418
+
3419
+ var hasRequiredShim;
3420
+
3421
+ function requireShim () {
3422
+ if (hasRequiredShim) return shim.exports;
3423
+ hasRequiredShim = 1;
3424
+
3425
+ if (process.env.NODE_ENV === 'production') {
3426
+ shim.exports = requireUseSyncExternalStoreShim_production();
3427
+ } else {
3428
+ shim.exports = requireUseSyncExternalStoreShim_development();
3429
+ }
3430
+ return shim.exports;
3431
+ }
3432
+
3433
+ var shimExports = requireShim();
3434
+
3435
+ const useSyncExternalStore = shimExports.useSyncExternalStore;
3436
+
3437
+ const defaultContext = /*#__PURE__*/React__namespace.createContext(undefined);
3438
+ const QueryClientSharingContext = /*#__PURE__*/React__namespace.createContext(false); // If we are given a context, we will use it.
3439
+ // Otherwise, if contextSharing is on, we share the first and at least one
3440
+ // instance of the context across the window
3441
+ // to ensure that if React Query is used across
3442
+ // different bundles or microfrontends they will
3443
+ // all use the same **instance** of context, regardless
3444
+ // of module scoping.
3445
+
3446
+ function getQueryClientContext(context, contextSharing) {
3447
+ if (context) {
3448
+ return context;
3449
+ }
3450
+
3451
+ if (contextSharing && typeof window !== 'undefined') {
3452
+ if (!window.ReactQueryClientContext) {
3453
+ window.ReactQueryClientContext = defaultContext;
3454
+ }
3455
+
3456
+ return window.ReactQueryClientContext;
3457
+ }
3458
+
3459
+ return defaultContext;
3460
+ }
3461
+
3462
+ const useQueryClient = ({
3463
+ context
3464
+ } = {}) => {
3465
+ const queryClient = React__namespace.useContext(getQueryClientContext(context, React__namespace.useContext(QueryClientSharingContext)));
3466
+
3467
+ if (!queryClient) {
3468
+ throw new Error('No QueryClient set, use QueryClientProvider to set one');
3469
+ }
3470
+
3471
+ return queryClient;
3472
+ };
3473
+
3474
+ const IsRestoringContext = /*#__PURE__*/React__namespace.createContext(false);
3475
+ const useIsRestoring = () => React__namespace.useContext(IsRestoringContext);
3476
+ IsRestoringContext.Provider;
3477
+
3478
+ function createValue() {
3479
+ let isReset = false;
3480
+ return {
3481
+ clearReset: () => {
3482
+ isReset = false;
3483
+ },
3484
+ reset: () => {
3485
+ isReset = true;
3486
+ },
3487
+ isReset: () => {
3488
+ return isReset;
3489
+ }
3490
+ };
3491
+ }
3492
+
3493
+ const QueryErrorResetBoundaryContext = /*#__PURE__*/React__namespace.createContext(createValue()); // HOOK
3494
+
3495
+ const useQueryErrorResetBoundary = () => React__namespace.useContext(QueryErrorResetBoundaryContext); // COMPONENT
3496
+
3497
+ function shouldThrowError(_useErrorBoundary, params) {
3498
+ // Allow useErrorBoundary function to override throwing behavior on a per-error basis
3499
+ if (typeof _useErrorBoundary === 'function') {
3500
+ return _useErrorBoundary(...params);
3501
+ }
3502
+
3503
+ return !!_useErrorBoundary;
3504
+ }
3505
+
3506
+ const ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {
3507
+ if (options.suspense || options.useErrorBoundary) {
3508
+ // Prevent retrying failed query if the error boundary has not been reset yet
3509
+ if (!errorResetBoundary.isReset()) {
3510
+ options.retryOnMount = false;
3511
+ }
3512
+ }
3513
+ };
3514
+ const useClearResetErrorBoundary = errorResetBoundary => {
3515
+ React__namespace.useEffect(() => {
3516
+ errorResetBoundary.clearReset();
3517
+ }, [errorResetBoundary]);
3518
+ };
3519
+ const getHasError = ({
3520
+ result,
3521
+ errorResetBoundary,
3522
+ useErrorBoundary,
3523
+ query
3524
+ }) => {
3525
+ return result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(useErrorBoundary, [result.error, query]);
3526
+ };
3527
+
3528
+ const ensureStaleTime = defaultedOptions => {
3529
+ if (defaultedOptions.suspense) {
3530
+ // Always set stale time when using suspense to prevent
3531
+ // fetching again when directly mounting after suspending
3532
+ if (typeof defaultedOptions.staleTime !== 'number') {
3533
+ defaultedOptions.staleTime = 1000;
3534
+ }
3535
+ }
3536
+ };
3537
+ const willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;
3538
+ const shouldSuspend = (defaultedOptions, result, isRestoring) => (defaultedOptions == null ? void 0 : defaultedOptions.suspense) && willFetch(result, isRestoring);
3539
+ const fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).then(({
3540
+ data
3541
+ }) => {
3542
+ defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);
3543
+ defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);
3544
+ }).catch(error => {
3545
+ errorResetBoundary.clearReset();
3546
+ defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error);
3547
+ defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error);
3548
+ });
3549
+
3550
+ function useQueries({
3551
+ queries,
3552
+ context
3553
+ }) {
3554
+ const queryClient = useQueryClient({
3555
+ context
3556
+ });
3557
+ const isRestoring = useIsRestoring();
3558
+ const errorResetBoundary = useQueryErrorResetBoundary();
3559
+ const defaultedQueries = React__namespace.useMemo(() => queries.map(options => {
3560
+ const defaultedOptions = queryClient.defaultQueryOptions(options); // Make sure the results are already in fetching state before subscribing or updating options
3561
+
3562
+ defaultedOptions._optimisticResults = isRestoring ? 'isRestoring' : 'optimistic';
3563
+ return defaultedOptions;
3564
+ }), [queries, queryClient, isRestoring]);
3565
+ defaultedQueries.forEach(query => {
3566
+ ensureStaleTime(query);
3567
+ ensurePreventErrorBoundaryRetry(query, errorResetBoundary);
3568
+ });
3569
+ useClearResetErrorBoundary(errorResetBoundary);
3570
+ const [observer] = React__namespace.useState(() => new QueriesObserver(queryClient, defaultedQueries));
3571
+ const optimisticResult = observer.getOptimisticResult(defaultedQueries);
3572
+ useSyncExternalStore(React__namespace.useCallback(onStoreChange => isRestoring ? () => undefined : observer.subscribe(notifyManager.batchCalls(onStoreChange)), [observer, isRestoring]), () => observer.getCurrentResult(), () => observer.getCurrentResult());
3573
+ React__namespace.useEffect(() => {
3574
+ // Do not notify on updates because of changes in the options because
3575
+ // these changes should already be reflected in the optimistic result.
3576
+ observer.setQueries(defaultedQueries, {
3577
+ listeners: false
3578
+ });
3579
+ }, [defaultedQueries, observer]);
3580
+ const shouldAtLeastOneSuspend = optimisticResult.some((result, index) => shouldSuspend(defaultedQueries[index], result, isRestoring));
3581
+ const suspensePromises = shouldAtLeastOneSuspend ? optimisticResult.flatMap((result, index) => {
3582
+ const options = defaultedQueries[index];
3583
+ const queryObserver = observer.getObservers()[index];
3584
+
3585
+ if (options && queryObserver) {
3586
+ if (shouldSuspend(options, result, isRestoring)) {
3587
+ return fetchOptimistic(options, queryObserver, errorResetBoundary);
3588
+ } else if (willFetch(result, isRestoring)) {
3589
+ void fetchOptimistic(options, queryObserver, errorResetBoundary);
3590
+ }
3591
+ }
3592
+
3593
+ return [];
3594
+ }) : [];
3595
+
3596
+ if (suspensePromises.length > 0) {
3597
+ throw Promise.all(suspensePromises);
3598
+ }
3599
+
3600
+ const observerQueries = observer.getQueries();
3601
+ const firstSingleResultWhichShouldThrow = optimisticResult.find((result, index) => {
3602
+ var _defaultedQueries$ind, _defaultedQueries$ind2;
3603
+
3604
+ return getHasError({
3605
+ result,
3606
+ errorResetBoundary,
3607
+ useErrorBoundary: (_defaultedQueries$ind = (_defaultedQueries$ind2 = defaultedQueries[index]) == null ? void 0 : _defaultedQueries$ind2.useErrorBoundary) != null ? _defaultedQueries$ind : false,
3608
+ query: observerQueries[index]
3609
+ });
3610
+ });
3611
+
3612
+ if (firstSingleResultWhichShouldThrow != null && firstSingleResultWhichShouldThrow.error) {
3613
+ throw firstSingleResultWhichShouldThrow.error;
3614
+ }
3615
+
3616
+ return optimisticResult;
3617
+ }
3618
+
3619
+ const VALID_STATUSES = new Set([
3620
+ "ongoing",
3621
+ "success",
3622
+ "refunded",
3623
+ ]);
3624
+ function isObject(value) {
3625
+ return typeof value === "object" && value !== null;
3626
+ }
3627
+ function isSquidTransactionToken(value) {
3628
+ if (!isObject(value))
3629
+ return false;
3630
+ return (typeof value.address === "string" &&
3631
+ typeof value.symbol === "string" &&
3632
+ typeof value.decimals === "number" &&
3633
+ typeof value.chainId === "string");
3634
+ }
3635
+ function isSquidTransaction(tx) {
3636
+ if (!isObject(tx))
3637
+ return false;
3638
+ if (typeof tx.createdAt !== "string" ||
3639
+ typeof tx.fromChainId !== "string" ||
3640
+ typeof tx.toChainId !== "string") {
3641
+ return false;
3642
+ }
3643
+ if (!isObject(tx.quote))
3644
+ return false;
3645
+ const quote = tx.quote;
3646
+ if (!isObject(quote.route))
3647
+ return false;
3648
+ const route = quote.route;
3649
+ if (!isObject(route.estimate))
3650
+ return false;
3651
+ const estimate = route.estimate;
3652
+ if (typeof estimate.fromAmount !== "string" ||
3653
+ typeof estimate.toAmount !== "string" ||
3654
+ !isSquidTransactionToken(estimate.fromToken) ||
3655
+ !isSquidTransactionToken(estimate.toToken)) {
3656
+ return false;
3657
+ }
3658
+ if (!isObject(tx.statusResponse))
3659
+ return false;
3660
+ const status = tx.statusResponse;
3661
+ if (typeof status.squidTransactionStatus !== "string" ||
3662
+ !VALID_STATUSES.has(status.squidTransactionStatus)) {
3663
+ return false;
3664
+ }
3665
+ return true;
3666
+ }
3667
+
3668
+ async function getWalletHistory(address, integratorId, apiUrl) {
3669
+ const url = new URL("/v2/history/wallet", apiUrl);
3670
+ url.searchParams.append("address", address);
3671
+ const response = await fetch(url, {
3672
+ headers: { "X-Integrator-Id": integratorId },
3673
+ });
3674
+ if (!response.ok) {
3675
+ throw new Error(`Failed to fetch wallet history: ${response.status}`);
3676
+ }
3677
+ const data = await response.json();
3678
+ if (!Array.isArray(data))
3679
+ return [];
3680
+ return data.filter(isSquidTransaction);
3681
+ }
3682
+
3683
+ function formatAmount(raw, decimals) {
3684
+ const readable = reactHooks.formatBNToReadable(raw, decimals);
3685
+ return reactHooks.formatTokenAmount(readable, { compact: true });
3686
+ }
3687
+ // Maps react-hooks' TransactionStatus (+ error variants) to our 3-state display.
3688
+ function mapLocalStatusToDisplayStatus(status) {
3689
+ if (status === "success" || status === "partial_success")
3690
+ return "success";
3691
+ if (status === "refunded" || status === "error")
3692
+ return "refunded";
3693
+ return "ongoing";
3694
+ }
3695
+ function fallbackId(tx) {
3696
+ const { estimate } = tx.quote.route;
3697
+ return `${tx.createdAt}-${estimate.fromToken.address}-${estimate.toToken.address}-${estimate.fromAmount}`;
3698
+ }
3699
+ function toFormattedTx(tx, sourceChain) {
3700
+ const { estimate } = tx.quote.route;
3701
+ const { fromToken, toToken } = estimate;
3702
+ return {
3703
+ id: tx.transactionId ?? fallbackId(tx),
3704
+ timestamp: tx.createdAt,
3705
+ status: tx.statusResponse.squidTransactionStatus,
3706
+ fromAmount: formatAmount(estimate.fromAmount, fromToken.decimals),
3707
+ toAmount: formatAmount(estimate.toAmount, toToken.decimals),
3708
+ fromToken: {
3709
+ symbol: fromToken.symbol,
3710
+ logo: reactHooks.getTokenImage({
3711
+ address: fromToken.address,
3712
+ chainId: tx.fromChainId,
3713
+ }),
3714
+ },
3715
+ fromChain: { logo: sourceChain?.chainIconURI ?? "" },
3716
+ toToken: { symbol: toToken.symbol },
3717
+ explorer: getMainExplorerUrl({
3718
+ transactionId: tx.transactionId,
3719
+ routeType: tx.routeType,
3720
+ sourceTxExplorerUrl: tx.sourceTxExplorerUrl,
3721
+ statusResponse: tx.statusResponse,
3722
+ actions: tx.actions,
3723
+ sourceChain,
3724
+ }),
3725
+ };
3726
+ }
3727
+ function pendingSwapToFormattedTx(pending, findToken, findChain) {
3728
+ const fromTokenMeta = findToken(pending.fromToken, pending.fromChain);
3729
+ const toTokenMeta = findToken(pending.toToken, pending.toChain);
3730
+ const fromReadable = fromTokenMeta
3731
+ ? reactHooks.formatBNToReadable(pending.fromAmount, fromTokenMeta.decimals)
3732
+ : pending.fromAmount;
3733
+ const toReadable = toTokenMeta
3734
+ ? reactHooks.formatBNToReadable(pending.toAmount, toTokenMeta.decimals)
3735
+ : pending.toAmount;
3736
+ return {
3737
+ id: pending.transactionId,
3738
+ timestamp: new Date(pending.timestamp).toISOString(),
3739
+ status: mapLocalStatusToDisplayStatus(pending.status),
3740
+ fromAmount: reactHooks.formatTokenAmount(fromReadable, { compact: true }),
3741
+ toAmount: reactHooks.formatTokenAmount(toReadable, { compact: true }),
3742
+ fromToken: {
3743
+ symbol: fromTokenMeta?.symbol ?? "",
3744
+ logo: reactHooks.getTokenImage({
3745
+ address: pending.fromToken,
3746
+ chainId: pending.fromChain,
3747
+ }),
3748
+ },
3749
+ fromChain: { logo: findChain(pending.fromChain)?.chainIconURI ?? "" },
3750
+ toToken: { symbol: toTokenMeta?.symbol ?? "" },
3751
+ explorer: getMainExplorerUrl({
3752
+ transactionId: pending.transactionId,
3753
+ routeType: pending.routeType,
3754
+ sourceTxExplorerUrl: pending.sourceTxExplorerUrl,
3755
+ statusResponse: pending.statusResponse,
3756
+ actions: pending.actions,
3757
+ sourceChain: findChain(pending.fromChain),
3758
+ }),
3759
+ };
3760
+ }
3761
+ function groupAndSortByDay(txs) {
3762
+ const byDay = new Map();
3763
+ for (const tx of txs) {
3764
+ const dayKey = new Date(tx.timestamp).toISOString().slice(0, 10);
3765
+ const bucket = byDay.get(dayKey) ?? [];
3766
+ bucket.push(tx);
3767
+ byDay.set(dayKey, bucket);
3768
+ }
3769
+ const groups = [];
3770
+ for (const [day, transactions] of byDay.entries()) {
3771
+ transactions.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
3772
+ groups.push({ day, transactions });
3773
+ }
3774
+ groups.sort((a, b) => new Date(b.day).getTime() - new Date(a.day).getTime());
3775
+ return groups;
3776
+ }
3777
+
3778
+ function useTransactionHistory() {
3779
+ const { connectedAddresses } = reactHooks.useWallet();
3780
+ const config = useDepositStore((s) => s.config);
3781
+ const integratorId = config?.integrator.id;
3782
+ const apiUrl = reactHooks.useConfigStore((s) => s.config.apiUrl);
3783
+ const pendingFromStore = reactHooks.useHistoryStore((s) => s.transactions);
3784
+ const { findToken, tokens } = reactHooks.useSquidTokens();
3785
+ const { findChain } = reactHooks.useSquidChains();
3786
+ const destinationToken = config?.destinationToken;
3787
+ const isPaymentMode = useIsPaymentMode();
3788
+ const paymentAmount = usePaymentAmount();
3789
+ const destinationTokenDecimals = destinationToken
3790
+ ? tokens.find((t) => t.chainId === destinationToken.chainId &&
3791
+ isSameAddress(t.address, destinationToken.address))?.decimals
3792
+ : null;
3793
+ const addresses = React.useMemo(() => Array.from(new Set(Object.values(connectedAddresses).filter((a) => a != null && a.length > 0))), [connectedAddresses]);
3794
+ // Memoized so TanStack Query doesn't re-run the filter on every render.
3795
+ const select = React.useCallback((data) => {
3796
+ if (!destinationToken)
3797
+ return [];
3798
+ if (isPaymentMode &&
3799
+ (!paymentAmount || destinationTokenDecimals == null)) {
3800
+ return [];
3801
+ }
3802
+ return data.filter((tx) => {
3803
+ // validate destination token
3804
+ if (!matchesDestinationToken(tx.quote.route.estimate.toToken, destinationToken)) {
3805
+ return false;
3806
+ }
3807
+ if (isPaymentMode) {
3808
+ return isPaymentTx(tx, paymentAmount, destinationTokenDecimals);
3809
+ }
3810
+ return true;
3811
+ });
3812
+ }, [destinationToken, isPaymentMode, paymentAmount, destinationTokenDecimals]);
3813
+ const queries = useQueries({
3814
+ queries: addresses.map((address) => ({
3815
+ queryKey: ["deposit-widget", "tx-history", address, integratorId, apiUrl],
3816
+ queryFn: () => {
3817
+ if (!integratorId || !apiUrl) {
3818
+ throw new Error("integratorId and apiUrl are required to fetch wallet history");
3819
+ }
3820
+ return getWalletHistory(address, integratorId, apiUrl);
3821
+ },
3822
+ select,
3823
+ enabled: !!address && !!integratorId && !!apiUrl,
3824
+ staleTime: 30_000,
3825
+ })),
3826
+ });
3827
+ const isLoading = queries.some((q) => q.isLoading);
3828
+ const isError = queries.length > 0 && queries.every((q) => q.isError);
3829
+ return React.useMemo(() => {
3830
+ if (!destinationToken) {
3831
+ return { isLoading, isError, groups: [] };
3832
+ }
3833
+ const backendTxs = queries
3834
+ .map((q) => q.data)
3835
+ .flatMap((data) => data ?? []);
3836
+ // Overlay local pendings for the brief window where a tx resolved locally
3837
+ // but Squid's backend hasn't indexed it yet.
3838
+ const formatted = backendTxs.map((tx) => toFormattedTx(tx, findChain(tx.fromChainId)));
3839
+ const connectedAddressSet = new Set(addresses.map((a) => a.toLowerCase()));
3840
+ const expectedPayment = paymentAmount && destinationTokenDecimals != null
3841
+ ? reactHooks.parseToBigInt(paymentAmount, destinationTokenDecimals).toString()
3842
+ : undefined;
3843
+ for (const { data: pendingTx, txType } of pendingFromStore) {
3844
+ if (txType !== reactHooks.HistoryTxType.SWAP)
3845
+ continue;
3846
+ // validate source address
3847
+ if (!connectedAddressSet.has(pendingTx.fromAddress.toLowerCase())) {
3848
+ continue;
3849
+ }
3850
+ // validate destination token
3851
+ if (!matchesDestinationToken({ address: pendingTx.toToken, chainId: pendingTx.toChain }, destinationToken)) {
3852
+ continue;
3853
+ }
3854
+ // skip if already indexed
3855
+ if (backendTxs.some((tx) => isSameTx(tx, pendingTx)))
3856
+ continue;
3857
+ const isPayment = expectedPayment != null && pendingTx.toAmount === expectedPayment;
3858
+ if (isPaymentMode !== isPayment)
3859
+ continue;
3860
+ formatted.unshift(pendingSwapToFormattedTx(pendingTx, findToken, findChain));
3861
+ }
3862
+ return {
3863
+ isLoading,
3864
+ isError,
3865
+ groups: groupAndSortByDay(formatted),
3866
+ };
3867
+ // `useQueries` returns a fresh outer array every render, so depending on
3868
+ // `queries` directly would bust this memo on every render. Spreading the
3869
+ // individual `q.data` refs sidesteps that — they're kept stable by
3870
+ // React Query's structural sharing across renders when the data is equal.
3871
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3872
+ }, [
3873
+ destinationToken,
3874
+ addresses,
3875
+ isPaymentMode,
3876
+ paymentAmount,
3877
+ destinationTokenDecimals,
3878
+ findChain,
3879
+ findToken,
3880
+ pendingFromStore,
3881
+ isLoading,
3882
+ isError,
3883
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3884
+ ...queries.map((q) => q.data),
3885
+ ]);
3886
+ }
3887
+
3888
+ function formatDateToHhMm(date) {
3889
+ return date.toLocaleTimeString("en-US", {
3890
+ hour: "2-digit",
3891
+ minute: "2-digit",
3892
+ });
3893
+ }
3894
+ function formatDayHeader(yyyyMmDd) {
3895
+ const [year = 0, month = 0, day] = yyyyMmDd.split("-").map(Number);
3896
+ const date = new Date(year, month - 1, day);
3897
+ const currentYear = new Date().getFullYear();
3898
+ if (year === currentYear) {
3899
+ return new Intl.DateTimeFormat("en-US", {
3900
+ month: "long",
3901
+ day: "numeric",
3902
+ }).format(date);
3903
+ }
3904
+ return new Intl.DateTimeFormat("en-US", {
3905
+ month: "long",
3906
+ day: "numeric",
3907
+ year: "numeric",
3908
+ }).format(date);
3909
+ }
3910
+
3911
+ function ActivityListItem({ fromAmount, fromToken, fromChain, toAmount, toToken, timestamp, status, explorer, }) {
3912
+ const isPaymentMode = useIsPaymentMode();
3913
+ return (jsxRuntime.jsx("li", { children: jsxRuntime.jsxs("a", { href: explorer?.url, target: explorer ? "_blank" : undefined, rel: explorer ? "noopener noreferrer" : undefined, title: explorer ? `View on ${explorer.name}` : undefined, className: ui.cn("tw-flex tw-h-[4.5rem] tw-px-4 tw-items-center tw-gap-3 tw-shrink-0", explorer && "hover:tw-bg-material-light-thin"), children: [jsxRuntime.jsx(TokenBadgeIcon, { tokenSrc: fromToken.logo, chainSrc: fromChain.logo }), jsxRuntime.jsxs("div", { className: "tw-flex tw-flex-col tw-items-start tw-gap-0.5 tw-flex-1 tw-min-w-0", children: [jsxRuntime.jsxs("div", { className: "tw-flex tw-items-center tw-gap-1 tw-self-stretch", children: [jsxRuntime.jsx(ui.BodyText, { size: "small", children: isPaymentMode ? "Payment" : "Deposit" }), explorer && (jsxRuntime.jsx(ui.SquareArrowTopRightIcon, { size: "0.875rem", className: "tw-text-grey-500" })), jsxRuntime.jsx(ui.BodyText, { size: "small", className: "tw-ml-auto", children: toAmount }), jsxRuntime.jsx(ui.BodyText, { size: "small", className: "tw-text-grey-400", children: toToken.symbol })] }), jsxRuntime.jsxs("div", { className: "tw-flex tw-justify-between tw-items-center tw-self-stretch", children: [jsxRuntime.jsx("div", { className: "tw-flex tw-items-center tw-gap-1", children: jsxRuntime.jsxs(ui.CaptionText, { className: "tw-text-grey-500", children: ["Paid ", fromAmount, " ", fromToken.symbol] }) }), status === "ongoing" ? (jsxRuntime.jsx(ui.Loader, { size: "1rem", strokeWidth: "4", className: "tw-text-royal-500" })) : status === "refunded" ? (jsxRuntime.jsx(ui.CaptionText, { className: "tw-text-status-negative", children: "Refunded" })) : (jsxRuntime.jsx(ui.CaptionText, { className: "tw-text-grey-500", children: formatDateToHhMm(new Date(timestamp)) }))] })] })] }) }));
3914
+ }
3915
+
3916
+ function TransactionHistoryView() {
3917
+ const { isLoading, isError, groups } = useTransactionHistory();
3918
+ const isPaymentMode = useIsPaymentMode();
3919
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SubNavBar, { title: "Activity" }), jsxRuntime.jsx(ViewContainer, { children: isLoading ? (jsxRuntime.jsx("div", { className: "tw-flex tw-flex-1 tw-items-center tw-justify-center", children: jsxRuntime.jsx(ui.Loader, { size: "2rem", className: "tw-text-royal-500" }) })) : isError ? (jsxRuntime.jsx(Message, { children: "Error loading transactions" })) : groups.length === 0 ? (jsxRuntime.jsxs(Message, { children: ["Your ", isPaymentMode ? "payments" : "deposits", " will appear here"] })) : (jsxRuntime.jsx("div", { className: "tw-flex tw-flex-col tw-w-full", children: groups.map((group) => (jsxRuntime.jsxs("section", { className: "tw-flex tw-flex-col", children: [jsxRuntime.jsx(ui.SectionTitle, { title: formatDayHeader(group.day), className: "tw-bg-transparent" }), jsxRuntime.jsx("ul", { className: "tw-flex tw-flex-col", children: group.transactions.map((tx) => (jsxRuntime.jsx(ActivityListItem, { ...tx }, tx.id))) })] }, group.day))) })) })] }));
3920
+ }
3921
+ function Message({ children }) {
3922
+ return (jsxRuntime.jsx("div", { className: "tw-flex tw-flex-1 tw-items-center tw-justify-center tw-px-4 tw-text-center", children: jsxRuntime.jsx(ui.BodyText, { size: "small", className: "tw-text-material-light-thick", children: children }) }));
3923
+ }
3924
+
3925
+ function renderView(view) {
3926
+ switch (view.id) {
3927
+ case "main":
3928
+ return jsxRuntime.jsx(MainView, {});
3929
+ case "connect-wallet":
3930
+ return jsxRuntime.jsx(ConnectWalletView, { chainType: view.chainType });
3931
+ case "select-chain":
3932
+ return jsxRuntime.jsx(SelectChainView, { wallet: view.wallet });
3933
+ case "qr-code":
3934
+ return jsxRuntime.jsx(QrCodeView, {});
3935
+ case "select-token":
3936
+ return jsxRuntime.jsx(SelectTokenView, {});
3937
+ case "transaction-history":
3938
+ return jsxRuntime.jsx(TransactionHistoryView, {});
3939
+ case "transaction-progress":
3940
+ return jsxRuntime.jsx(TransactionProgressView, {});
3941
+ }
3942
+ }
3943
+
3944
+ const CHAIN_TYPE_PRIORITY = [
3945
+ distExports.ChainType.EVM,
3946
+ distExports.ChainType.SOLANA,
3947
+ distExports.ChainType.COSMOS,
3948
+ distExports.ChainType.SUI,
3949
+ distExports.ChainType.BTC,
3950
+ distExports.ChainType.XRPL,
3951
+ distExports.ChainType.STELLAR,
3952
+ ];
3953
+ const DEFAULT_CHAIN_ID_BY_TYPE = {
3954
+ [distExports.ChainType.EVM]: reactHooks.CHAIN_IDS.ETHEREUM,
3955
+ [distExports.ChainType.COSMOS]: reactHooks.CHAIN_IDS.OSMOSIS,
3956
+ [distExports.ChainType.BTC]: reactHooks.CHAIN_IDS.BITCOIN,
3957
+ [distExports.ChainType.SOLANA]: reactHooks.CHAIN_IDS.SOLANA,
3958
+ [distExports.ChainType.SUI]: reactHooks.CHAIN_IDS.SUI,
3959
+ [distExports.ChainType.XRPL]: reactHooks.CHAIN_IDS.XRPL,
3960
+ [distExports.ChainType.STELLAR]: reactHooks.CHAIN_IDS.STELLAR,
3961
+ };
3962
+ function useAutoSelectToken() {
3963
+ const { fromToken: token, onSwapChange } = reactHooks.useSwap();
3964
+ const { connectedWalletsByChainType } = reactHooks.useWallet();
3965
+ const { findToken, tokens } = reactHooks.useSquidTokens();
3966
+ const hasAutoSelected = React.useRef(false);
3967
+ React.useEffect(() => {
3968
+ if (token != null) {
3969
+ hasAutoSelected.current = false;
3970
+ return;
3971
+ }
3972
+ if (hasAutoSelected.current)
3973
+ return;
3974
+ if (tokens.length === 0)
3975
+ return;
3976
+ const connectedChainType = CHAIN_TYPE_PRIORITY.find((ct) => {
3977
+ const walletState = connectedWalletsByChainType[ct];
3978
+ return !!walletState?.wallet && !!walletState?.address;
3979
+ });
3980
+ if (!connectedChainType)
3981
+ return;
3982
+ const nativeAddress = reactHooks.chainTypeToNativeTokenAddressMap[connectedChainType];
3983
+ const defaultChainId = DEFAULT_CHAIN_ID_BY_TYPE[connectedChainType];
3984
+ const nativeToken = findToken(nativeAddress, defaultChainId);
3985
+ if (nativeToken) {
3986
+ onSwapChange({
3987
+ fromChainId: nativeToken.chainId,
3988
+ fromTokenAddress: nativeToken.address,
3989
+ });
3990
+ hasAutoSelected.current = true;
3991
+ }
3992
+ }, [token, connectedWalletsByChainType, tokens, findToken, onSwapChange]);
3993
+ }
3994
+
3995
+ function DepositWidget({ config, }) {
3996
+ const { theme, themeType } = config;
3997
+ return (jsxRuntime.jsx(reactHooks.SquidProvider, { config: { integratorId: config.integrator.id, apiUrl: config.apiUrl }, placeholder: jsxRuntime.jsx(WidgetLayout, { theme: theme, themeType: themeType, children: jsxRuntime.jsx(WidgetSkeleton, {}) }), children: jsxRuntime.jsx(WidgetLayout, { theme: theme, themeType: themeType, children: jsxRuntime.jsx(DepositWidgetContent, { config: config }) }) }));
3998
+ }
3999
+ function DepositWidgetContent({ config, }) {
4000
+ const currentView = useRouter(selectCurrentView);
4001
+ const setConfig = useDepositStore((s) => s.setConfig);
4002
+ const { onSwapChange, toAmountChanged, fromAmountChanged } = reactHooks.useSwap();
4003
+ React.useEffect(() => {
4004
+ setConfig(config);
4005
+ }, [config, setConfig]);
4006
+ React.useEffect(() => {
4007
+ onSwapChange({
4008
+ toChainId: config.destinationToken.chainId,
4009
+ toTokenAddress: config.destinationToken.address,
4010
+ destinationAddress: { address: config.destinationAddress },
4011
+ });
4012
+ // eslint-disable-next-line react-hooks/exhaustive-deps
4013
+ }, [
4014
+ config.destinationAddress,
4015
+ config.destinationToken.chainId,
4016
+ config.destinationToken.address,
4017
+ ]);
4018
+ const paymentAmount = usePaymentAmount();
4019
+ React.useEffect(() => {
4020
+ if (paymentAmount) {
4021
+ fromAmountChanged("");
4022
+ toAmountChanged(paymentAmount);
4023
+ }
4024
+ else {
4025
+ toAmountChanged("");
4026
+ fromAmountChanged("");
4027
+ }
4028
+ }, [paymentAmount, toAmountChanged, fromAmountChanged]);
4029
+ useAutoSelectToken();
4030
+ reactHooks.useAllConnectedWalletBalances(); // Pre-warm balance cache
4031
+ // Polls /v2/status for pending txs — also what registers them with Squid's backend for /history/wallet
4032
+ reactHooks.useAllTransactionsStatus({ enabled: true });
4033
+ return (jsxRuntime.jsx(ViewTransition, { viewId: currentView.id, children: renderView(currentView) }));
4034
+ }
4035
+ function WidgetLayout({ theme, themeType, children, }) {
4036
+ const mergedTheme = React.useMemo(() => {
4037
+ const base = themeType === "dark" ? ui.darkTheme : ui.lightTheme;
4038
+ const merged = { ...base.color, ...theme?.color };
4039
+ return {
4040
+ ...base,
4041
+ ...theme,
4042
+ fontFamily: {
4043
+ ...base.fontFamily,
4044
+ "squid-main": '"DMSansVariable", sans-serif',
4045
+ // Integrator override wins.
4046
+ ...theme?.fontFamily,
4047
+ },
4048
+ color: {
4049
+ ...merged,
4050
+ "animation-bg": merged["grey-900"],
4051
+ "animation-text": merged["animation-bg"] ?? merged["grey-900"],
4052
+ },
4053
+ };
4054
+ }, [theme, themeType]);
4055
+ return (jsxRuntime.jsxs(ui.ThemeProvider, { theme: mergedTheme, themeType: themeType, children: [jsxRuntime.jsx("style", { id: "squid-deposit-widget-inline-style", dangerouslySetInnerHTML: { __html: css_248z } }), jsxRuntime.jsx("div", { className: "squid-style-container--preflight tw-bg-grey-900 tw-text-grey-100 tw-flex tw-w-widget-card tw-h-widget-card tw-flex-col tw-items-center tw-shrink-0 tw-rounded-3xl tw-border tw-border-grey-900 dark:tw-shadow-widget-card-dark tw-shadow-widget-card-light tw-font-medium", children: children })] }));
4056
+ }
4057
+ function WidgetSkeleton() {
4058
+ return (jsxRuntime.jsxs("div", { className: "tw-flex tw-flex-col tw-flex-1 tw-w-full tw-animate-pulse", children: [jsxRuntime.jsxs("div", { className: "tw-flex tw-pt-3 tw-pb-8 tw-px-4 tw-flex-col tw-justify-end tw-items-center tw-gap-4 tw-flex-1", children: [jsxRuntime.jsx("div", { className: "tw-w-32 tw-h-32 tw-rounded-full tw-bg-grey-800" }), jsxRuntime.jsxs("div", { className: "tw-flex tw-pt-2 tw-pb-4 tw-flex-col tw-items-center tw-gap-4", children: [jsxRuntime.jsx("div", { className: "tw-h-6 tw-w-48 tw-rounded tw-bg-grey-800" }), jsxRuntime.jsxs("div", { className: "tw-flex tw-flex-col tw-items-center tw-gap-2", children: [jsxRuntime.jsx("div", { className: "tw-h-4 tw-w-56 tw-rounded tw-bg-grey-800" }), jsxRuntime.jsx("div", { className: "tw-h-4 tw-w-40 tw-rounded tw-bg-grey-800" })] }), jsxRuntime.jsx("div", { className: "tw-h-4 tw-w-20 tw-rounded tw-bg-grey-800" })] })] }), jsxRuntime.jsx("div", { className: "tw-px-4 tw-pb-4", children: jsxRuntime.jsx("div", { className: "tw-h-12 tw-w-full tw-rounded-full tw-bg-grey-800" }) })] }));
4059
+ }
4060
+
4061
+ exports.DepositWidget = DepositWidget;
4062
+ //# sourceMappingURL=index.cjs.map