@rainlanguage/ui-components 0.0.1-alpha.10

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 (236) hide show
  1. package/README.md +58 -0
  2. package/dist/__fixtures__/orderDetail.d.ts +99 -0
  3. package/dist/__fixtures__/orderDetail.js +204 -0
  4. package/dist/__fixtures__/settings-12-11-24.json +160 -0
  5. package/dist/__mocks__/MockComponent.d.ts +1 -0
  6. package/dist/__mocks__/MockComponent.js +2 -0
  7. package/dist/__mocks__/MockComponent.svelte +3 -0
  8. package/dist/__mocks__/MockComponent.svelte.d.ts +18 -0
  9. package/dist/__mocks__/mockTransactionStore.d.ts +22 -0
  10. package/dist/__mocks__/mockTransactionStore.js +56 -0
  11. package/dist/__mocks__/mockWeb3Config.d.ts +2 -0
  12. package/dist/__mocks__/mockWeb3Config.js +15 -0
  13. package/dist/__mocks__/queries.d.ts +13 -0
  14. package/dist/__mocks__/queries.js +64 -0
  15. package/dist/__mocks__/settings.d.ts +3 -0
  16. package/dist/__mocks__/settings.js +37 -0
  17. package/dist/__mocks__/stores.d.ts +94 -0
  18. package/dist/__mocks__/stores.js +113 -0
  19. package/dist/app.css +3 -0
  20. package/dist/assets/ledger.svg +6 -0
  21. package/dist/assets/logo-dark.svg +15 -0
  22. package/dist/assets/logo-light.svg +15 -0
  23. package/dist/assets/walletconnect.svg +1 -0
  24. package/dist/components/BadgeActive.svelte +9 -0
  25. package/dist/components/BadgeActive.svelte.d.ts +19 -0
  26. package/dist/components/BlockQuote.svelte +1 -0
  27. package/dist/components/BlockQuote.svelte.d.ts +29 -0
  28. package/dist/components/ButtonDarkMode.svelte +14 -0
  29. package/dist/components/ButtonDarkMode.svelte.d.ts +18 -0
  30. package/dist/components/ButtonLoading.svelte +11 -0
  31. package/dist/components/ButtonLoading.svelte.d.ts +24 -0
  32. package/dist/components/ButtonTab.svelte +7 -0
  33. package/dist/components/ButtonTab.svelte.d.ts +23 -0
  34. package/dist/components/ButtonVaultLink.svelte +29 -0
  35. package/dist/components/ButtonVaultLink.svelte.d.ts +22 -0
  36. package/dist/components/CardProperty.svelte +11 -0
  37. package/dist/components/CardProperty.svelte.d.ts +31 -0
  38. package/dist/components/CheckboxMyItemsOnly.svelte +23 -0
  39. package/dist/components/CheckboxMyItemsOnly.svelte.d.ts +21 -0
  40. package/dist/components/CheckboxZeroBalanceVault.svelte +20 -0
  41. package/dist/components/CheckboxZeroBalanceVault.svelte.d.ts +19 -0
  42. package/dist/components/CodeMirrorDotrain.svelte +35 -0
  43. package/dist/components/CodeMirrorDotrain.svelte.d.ts +23 -0
  44. package/dist/components/CodeMirrorRainlang.svelte +34 -0
  45. package/dist/components/CodeMirrorRainlang.svelte.d.ts +23 -0
  46. package/dist/components/DropdownProperty.svelte +12 -0
  47. package/dist/components/DropdownProperty.svelte.d.ts +19 -0
  48. package/dist/components/EditableSpan.svelte +46 -0
  49. package/dist/components/EditableSpan.svelte.d.ts +21 -0
  50. package/dist/components/Hash.svelte +85 -0
  51. package/dist/components/Hash.svelte.d.ts +28 -0
  52. package/dist/components/Heading.svelte +19 -0
  53. package/dist/components/Heading.svelte.d.ts +29 -0
  54. package/dist/components/IconError.svelte +8 -0
  55. package/dist/components/IconError.svelte.d.ts +16 -0
  56. package/dist/components/IconExternalLink.svelte +18 -0
  57. package/dist/components/IconExternalLink.svelte.d.ts +18 -0
  58. package/dist/components/IconInfo.svelte +8 -0
  59. package/dist/components/IconInfo.svelte.d.ts +16 -0
  60. package/dist/components/IconLedger.svelte +13 -0
  61. package/dist/components/IconLedger.svelte.d.ts +16 -0
  62. package/dist/components/IconSuccess.svelte +8 -0
  63. package/dist/components/IconSuccess.svelte.d.ts +16 -0
  64. package/dist/components/IconTelegram.svelte +12 -0
  65. package/dist/components/IconTelegram.svelte.d.ts +25 -0
  66. package/dist/components/IconWalletConnect.svelte +13 -0
  67. package/dist/components/IconWalletConnect.svelte.d.ts +16 -0
  68. package/dist/components/IconWarning.svelte +8 -0
  69. package/dist/components/IconWarning.svelte.d.ts +16 -0
  70. package/dist/components/License.svelte +29 -0
  71. package/dist/components/License.svelte.d.ts +25 -0
  72. package/dist/components/ListViewOrderbookFilters.svelte +58 -0
  73. package/dist/components/ListViewOrderbookFilters.svelte.d.ts +28 -0
  74. package/dist/components/OrderOrVaultHash.svelte +24 -0
  75. package/dist/components/OrderOrVaultHash.svelte.d.ts +22 -0
  76. package/dist/components/PageHeader.svelte +33 -0
  77. package/dist/components/PageHeader.svelte.d.ts +21 -0
  78. package/dist/components/TanstackAppTable.svelte +73 -0
  79. package/dist/components/TanstackAppTable.svelte.d.ts +30 -0
  80. package/dist/components/Text.svelte +12 -0
  81. package/dist/components/Text.svelte.d.ts +31 -0
  82. package/dist/components/charts/APYTimeFilters.svelte +47 -0
  83. package/dist/components/charts/APYTimeFilters.svelte.d.ts +19 -0
  84. package/dist/components/charts/ChartTimeFilters.svelte +35 -0
  85. package/dist/components/charts/ChartTimeFilters.svelte.d.ts +18 -0
  86. package/dist/components/charts/LightweightChart.svelte +110 -0
  87. package/dist/components/charts/LightweightChart.svelte.d.ts +29 -0
  88. package/dist/components/charts/OrderTradesChart.svelte +36 -0
  89. package/dist/components/charts/OrderTradesChart.svelte.d.ts +21 -0
  90. package/dist/components/charts/TableTimeFilters.svelte +48 -0
  91. package/dist/components/charts/TableTimeFilters.svelte.d.ts +19 -0
  92. package/dist/components/charts/TanstackLightweightChartLine.svelte +24 -0
  93. package/dist/components/charts/TanstackLightweightChartLine.svelte.d.ts +23 -0
  94. package/dist/components/charts/VaultBalanceChart.svelte +37 -0
  95. package/dist/components/charts/VaultBalanceChart.svelte.d.ts +22 -0
  96. package/dist/components/checkbox/Checkbox.svelte +17 -0
  97. package/dist/components/checkbox/Checkbox.svelte.d.ts +21 -0
  98. package/dist/components/deployment/ButtonSelectOption.svelte +14 -0
  99. package/dist/components/deployment/ButtonSelectOption.svelte.d.ts +20 -0
  100. package/dist/components/deployment/ComposedRainlangModal.svelte +35 -0
  101. package/dist/components/deployment/ComposedRainlangModal.svelte.d.ts +19 -0
  102. package/dist/components/deployment/DeploymentSectionHeader.svelte +14 -0
  103. package/dist/components/deployment/DeploymentSectionHeader.svelte.d.ts +19 -0
  104. package/dist/components/deployment/DeploymentSteps.svelte +252 -0
  105. package/dist/components/deployment/DeploymentSteps.svelte.d.ts +38 -0
  106. package/dist/components/deployment/DeploymentTile.svelte +19 -0
  107. package/dist/components/deployment/DeploymentTile.svelte.d.ts +21 -0
  108. package/dist/components/deployment/DeploymentsSection.svelte +20 -0
  109. package/dist/components/deployment/DeploymentsSection.svelte.d.ts +19 -0
  110. package/dist/components/deployment/DepositInput.svelte +93 -0
  111. package/dist/components/deployment/DepositInput.svelte.d.ts +20 -0
  112. package/dist/components/deployment/DepositsSection.svelte +8 -0
  113. package/dist/components/deployment/DepositsSection.svelte.d.ts +20 -0
  114. package/dist/components/deployment/DisclaimerModal.svelte +54 -0
  115. package/dist/components/deployment/DisclaimerModal.svelte.d.ts +19 -0
  116. package/dist/components/deployment/FieldDefinitionInput.svelte +66 -0
  117. package/dist/components/deployment/FieldDefinitionInput.svelte.d.ts +20 -0
  118. package/dist/components/deployment/FieldDefinitionsSection.svelte +9 -0
  119. package/dist/components/deployment/FieldDefinitionsSection.svelte.d.ts +20 -0
  120. package/dist/components/deployment/InvalidStrategiesSection.svelte +19 -0
  121. package/dist/components/deployment/InvalidStrategiesSection.svelte.d.ts +19 -0
  122. package/dist/components/deployment/SelectToken.svelte +88 -0
  123. package/dist/components/deployment/SelectToken.svelte.d.ts +21 -0
  124. package/dist/components/deployment/SelectTokensSection.svelte +17 -0
  125. package/dist/components/deployment/SelectTokensSection.svelte.d.ts +21 -0
  126. package/dist/components/deployment/ShareChoicesButton.svelte +26 -0
  127. package/dist/components/deployment/ShareChoicesButton.svelte.d.ts +18 -0
  128. package/dist/components/deployment/StrategyPage.svelte +70 -0
  129. package/dist/components/deployment/StrategyPage.svelte.d.ts +19 -0
  130. package/dist/components/deployment/TokenIOInput.svelte +62 -0
  131. package/dist/components/deployment/TokenIOInput.svelte.d.ts +22 -0
  132. package/dist/components/deployment/TokenIOSection.svelte +17 -0
  133. package/dist/components/deployment/TokenIOSection.svelte.d.ts +21 -0
  134. package/dist/components/deployment/ValidStrategiesSection.svelte +25 -0
  135. package/dist/components/deployment/ValidStrategiesSection.svelte.d.ts +19 -0
  136. package/dist/components/deployment/getDeploymentTransactionArgs.d.ts +17 -0
  137. package/dist/components/deployment/getDeploymentTransactionArgs.js +24 -0
  138. package/dist/components/detail/DepositOrWithdrawButtons.svelte +44 -0
  139. package/dist/components/detail/DepositOrWithdrawButtons.svelte.d.ts +26 -0
  140. package/dist/components/detail/OrderDetail.svelte +195 -0
  141. package/dist/components/detail/OrderDetail.svelte.d.ts +36 -0
  142. package/dist/components/detail/TanstackOrderQuote.svelte +173 -0
  143. package/dist/components/detail/TanstackOrderQuote.svelte.d.ts +22 -0
  144. package/dist/components/detail/TanstackPageContentDetail.svelte +56 -0
  145. package/dist/components/detail/TanstackPageContentDetail.svelte.d.ts +31 -0
  146. package/dist/components/detail/VaultDetail.svelte +178 -0
  147. package/dist/components/detail/VaultDetail.svelte.d.ts +35 -0
  148. package/dist/components/dropdown/DropdownActiveSubgraphs.svelte +38 -0
  149. package/dist/components/dropdown/DropdownActiveSubgraphs.svelte.d.ts +21 -0
  150. package/dist/components/dropdown/DropdownCheckbox.svelte +77 -0
  151. package/dist/components/dropdown/DropdownCheckbox.svelte.d.ts +26 -0
  152. package/dist/components/dropdown/DropdownOrderListAccounts.svelte +15 -0
  153. package/dist/components/dropdown/DropdownOrderListAccounts.svelte.d.ts +20 -0
  154. package/dist/components/dropdown/DropdownOrderStatus.svelte +31 -0
  155. package/dist/components/dropdown/DropdownOrderStatus.svelte.d.ts +19 -0
  156. package/dist/components/dropdown/DropdownRadio.svelte +45 -0
  157. package/dist/components/dropdown/DropdownRadio.svelte.d.ts +30 -0
  158. package/dist/components/icon/RainLogo.svelte +54 -0
  159. package/dist/components/icon/RainLogo.svelte.d.ts +25 -0
  160. package/dist/components/icon/Refresh.svelte +57 -0
  161. package/dist/components/icon/Refresh.svelte.d.ts +40 -0
  162. package/dist/components/input/InputHex.svelte +42 -0
  163. package/dist/components/input/InputHex.svelte.d.ts +19 -0
  164. package/dist/components/input/InputOrderHash.svelte +22 -0
  165. package/dist/components/input/InputOrderHash.svelte.d.ts +20 -0
  166. package/dist/components/input/InputRegistryUrl.svelte +18 -0
  167. package/dist/components/input/InputRegistryUrl.svelte.d.ts +16 -0
  168. package/dist/components/input/InputToken.svelte +53 -0
  169. package/dist/components/input/InputToken.svelte.d.ts +19 -0
  170. package/dist/components/input/InputTokenAmount.svelte +63 -0
  171. package/dist/components/input/InputTokenAmount.svelte.d.ts +21 -0
  172. package/dist/components/tables/OrderAPY.svelte +57 -0
  173. package/dist/components/tables/OrderAPY.svelte.d.ts +19 -0
  174. package/dist/components/tables/OrderTradesListTable.svelte +145 -0
  175. package/dist/components/tables/OrderTradesListTable.svelte.d.ts +21 -0
  176. package/dist/components/tables/OrderVaultsVolTable.svelte +67 -0
  177. package/dist/components/tables/OrderVaultsVolTable.svelte.d.ts +19 -0
  178. package/dist/components/tables/OrdersListTable.svelte +181 -0
  179. package/dist/components/tables/OrdersListTable.svelte.d.ts +35 -0
  180. package/dist/components/tables/VaultBalanceChangesTable.svelte +74 -0
  181. package/dist/components/tables/VaultBalanceChangesTable.svelte.d.ts +17 -0
  182. package/dist/components/tables/VaultsListTable.svelte +229 -0
  183. package/dist/components/tables/VaultsListTable.svelte.d.ts +40 -0
  184. package/dist/components/wallet/WalletConnect.svelte +28 -0
  185. package/dist/components/wallet/WalletConnect.svelte.d.ts +23 -0
  186. package/dist/errors/DeploymentStepsError.d.ts +24 -0
  187. package/dist/errors/DeploymentStepsError.js +45 -0
  188. package/dist/errors/index.d.ts +1 -0
  189. package/dist/errors/index.js +1 -0
  190. package/dist/index.d.ts +89 -0
  191. package/dist/index.js +89 -0
  192. package/dist/queries/constants.d.ts +2 -0
  193. package/dist/queries/constants.js +2 -0
  194. package/dist/queries/keys.d.ts +9 -0
  195. package/dist/queries/keys.js +9 -0
  196. package/dist/queries/queryClient.d.ts +3 -0
  197. package/dist/queries/queryClient.js +16 -0
  198. package/dist/services/getExplorerLink.d.ts +1 -0
  199. package/dist/services/getExplorerLink.js +10 -0
  200. package/dist/services/handleShareChoices.d.ts +2 -0
  201. package/dist/services/handleShareChoices.js +10 -0
  202. package/dist/services/historicalOrderCharts.d.ts +12 -0
  203. package/dist/services/historicalOrderCharts.js +496 -0
  204. package/dist/services/index.d.ts +2 -0
  205. package/dist/services/index.js +1 -0
  206. package/dist/services/registry.d.ts +25 -0
  207. package/dist/services/registry.js +133 -0
  208. package/dist/services/time.d.ts +6 -0
  209. package/dist/services/time.js +17 -0
  210. package/dist/stores/transactionStore.d.ts +98 -0
  211. package/dist/stores/transactionStore.js +303 -0
  212. package/dist/test/matchers.d.ts +6 -0
  213. package/dist/test/matchers.js +4 -0
  214. package/dist/types/appStores.d.ts +19 -0
  215. package/dist/types/appStores.js +1 -0
  216. package/dist/types/modal.d.ts +20 -0
  217. package/dist/types/modal.js +1 -0
  218. package/dist/types/strategy.d.ts +10 -0
  219. package/dist/types/strategy.js +1 -0
  220. package/dist/types/transaction.d.ts +27 -0
  221. package/dist/types/transaction.js +1 -0
  222. package/dist/utils/breadcrumbs.d.ts +5 -0
  223. package/dist/utils/breadcrumbs.js +9 -0
  224. package/dist/utils/codeMirrorThemes.d.ts +2 -0
  225. package/dist/utils/codeMirrorThemes.js +86 -0
  226. package/dist/utils/hex.d.ts +2 -0
  227. package/dist/utils/hex.js +3 -0
  228. package/dist/utils/lightweightChartsThemes.d.ts +52 -0
  229. package/dist/utils/lightweightChartsThemes.js +21 -0
  230. package/dist/utils/number.d.ts +14 -0
  231. package/dist/utils/number.js +43 -0
  232. package/dist/utils/time.d.ts +12 -0
  233. package/dist/utils/time.js +27 -0
  234. package/dist/utils/vault.d.ts +2 -0
  235. package/dist/utils/vault.js +29 -0
  236. package/package.json +86 -0
@@ -0,0 +1,9 @@
1
+ <script>import FieldDefinitionInput from "./FieldDefinitionInput.svelte";
2
+ import {} from "@rainlanguage/orderbook/js_api";
3
+ export let allFieldDefinitions;
4
+ export let gui;
5
+ </script>
6
+
7
+ {#each allFieldDefinitions as fieldDefinition}
8
+ <FieldDefinitionInput {fieldDefinition} {gui} />
9
+ {/each}
@@ -0,0 +1,20 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { type DotrainOrderGui, type GuiFieldDefinitionCfg } from '@rainlanguage/orderbook/js_api';
3
+ declare const __propDef: {
4
+ props: {
5
+ allFieldDefinitions: GuiFieldDefinitionCfg[];
6
+ gui: DotrainOrderGui;
7
+ };
8
+ events: {
9
+ [evt: string]: CustomEvent<any>;
10
+ };
11
+ slots: {};
12
+ exports?: {} | undefined;
13
+ bindings?: string | undefined;
14
+ };
15
+ export type FieldDefinitionsSectionProps = typeof __propDef.props;
16
+ export type FieldDefinitionsSectionEvents = typeof __propDef.events;
17
+ export type FieldDefinitionsSectionSlots = typeof __propDef.slots;
18
+ export default class FieldDefinitionsSection extends SvelteComponent<FieldDefinitionsSectionProps, FieldDefinitionsSectionEvents, FieldDefinitionsSectionSlots> {
19
+ }
20
+ export {};
@@ -0,0 +1,19 @@
1
+ <script>export let strategiesWithErrors;
2
+ </script>
3
+
4
+ <div
5
+ class="flex flex-col gap-4 rounded-xl bg-red-100 p-6 dark:bg-red-900"
6
+ data-testid="invalid-strategies"
7
+ >
8
+ <h2 class="text-xl font-semibold text-gray-900 dark:text-white">
9
+ Invalid Strategies in registry
10
+ </h2>
11
+ <div class="flex flex-col gap-2">
12
+ {#each strategiesWithErrors as strategy}
13
+ <div class="flex flex-col gap-1">
14
+ <span class="font-medium">{strategy.name}</span>
15
+ <span class="text-red-600 dark:text-red-400">{strategy.error}</span>
16
+ </div>
17
+ {/each}
18
+ </div>
19
+ </div>
@@ -0,0 +1,19 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { InvalidStrategyDetail } from '../../types/strategy';
3
+ declare const __propDef: {
4
+ props: {
5
+ strategiesWithErrors: InvalidStrategyDetail[];
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ exports?: {} | undefined;
12
+ bindings?: string | undefined;
13
+ };
14
+ export type InvalidStrategiesSectionProps = typeof __propDef.props;
15
+ export type InvalidStrategiesSectionEvents = typeof __propDef.events;
16
+ export type InvalidStrategiesSectionSlots = typeof __propDef.slots;
17
+ export default class InvalidStrategiesSection extends SvelteComponent<InvalidStrategiesSectionProps, InvalidStrategiesSectionEvents, InvalidStrategiesSectionSlots> {
18
+ }
19
+ export {};
@@ -0,0 +1,88 @@
1
+ <script>import { Input } from "flowbite-svelte";
2
+ import { CheckCircleSolid, CloseCircleSolid } from "flowbite-svelte-icons";
3
+ import { Spinner } from "flowbite-svelte";
4
+ import { onMount } from "svelte";
5
+ export let token;
6
+ export let gui;
7
+ export let onSelectTokenSelect;
8
+ let inputValue = null;
9
+ let tokenInfo = null;
10
+ let error = "";
11
+ let checking = false;
12
+ onMount(async () => {
13
+ try {
14
+ tokenInfo = await gui?.getTokenInfo(token.key);
15
+ if (tokenInfo?.address) {
16
+ inputValue = tokenInfo.address;
17
+ }
18
+ } catch {
19
+ }
20
+ });
21
+ async function getInfoForSelectedToken() {
22
+ error = "";
23
+ try {
24
+ tokenInfo = await gui.getTokenInfo(token.key);
25
+ error = "";
26
+ } catch {
27
+ return error = "No token exists at this address.";
28
+ }
29
+ }
30
+ async function handleInput(event) {
31
+ tokenInfo = null;
32
+ const currentTarget = event.currentTarget;
33
+ if (currentTarget instanceof HTMLInputElement) {
34
+ inputValue = currentTarget.value;
35
+ if (!inputValue) {
36
+ error = "";
37
+ }
38
+ checking = true;
39
+ try {
40
+ await gui.saveSelectToken(token.key, currentTarget.value);
41
+ await getInfoForSelectedToken();
42
+ } catch (e) {
43
+ const errorMessage = e.message ? e.message : "Invalid token address.";
44
+ error = errorMessage;
45
+ }
46
+ }
47
+ checking = false;
48
+ onSelectTokenSelect();
49
+ }
50
+ </script>
51
+
52
+ <div class="flex w-full flex-col">
53
+ <div class="flex flex-col gap-2">
54
+ <div class="flex flex-col justify-start gap-4 lg:flex-row lg:items-center lg:justify-between">
55
+ {#if token.name || token.description}
56
+ <div class="flex flex-col">
57
+ {#if token.name}
58
+ <h1 class="break-words text-xl font-semibold text-gray-900 lg:text-xl dark:text-white">
59
+ {token.name}
60
+ </h1>
61
+ {/if}
62
+ {#if token.description}
63
+ <p class="text-sm font-light text-gray-600 lg:text-base dark:text-gray-400">
64
+ {token.description}
65
+ </p>
66
+ {/if}
67
+ </div>
68
+ {/if}
69
+ {#if checking}
70
+ <div class="flex h-5 flex-row items-center gap-2">
71
+ <Spinner class="h-5 w-5" />
72
+ <span>Checking...</span>
73
+ </div>
74
+ {:else if tokenInfo}
75
+ <div class="flex h-5 flex-row items-center gap-2">
76
+ <CheckCircleSolid class="h-5 w-5" color="green" />
77
+ <span>{tokenInfo.name}</span>
78
+ </div>
79
+ {:else if error}
80
+ <div class="flex h-5 flex-row items-center gap-2" data-testid="error">
81
+ <CloseCircleSolid class="h-5 w-5" color="red" />
82
+ <span>{error}</span>
83
+ </div>
84
+ {/if}
85
+ </div>
86
+ <Input type="text" size="lg" on:input={handleInput} bind:value={inputValue} />
87
+ </div>
88
+ </div>
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { DotrainOrderGui, GuiSelectTokensCfg } from '@rainlanguage/orderbook/js_api';
3
+ declare const __propDef: {
4
+ props: {
5
+ token: GuiSelectTokensCfg;
6
+ gui: DotrainOrderGui;
7
+ onSelectTokenSelect: () => void;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ exports?: {} | undefined;
14
+ bindings?: string | undefined;
15
+ };
16
+ export type SelectTokenProps = typeof __propDef.props;
17
+ export type SelectTokenEvents = typeof __propDef.events;
18
+ export type SelectTokenSlots = typeof __propDef.slots;
19
+ export default class SelectToken extends SvelteComponent<SelectTokenProps, SelectTokenEvents, SelectTokenSlots> {
20
+ }
21
+ export {};
@@ -0,0 +1,17 @@
1
+ <script>import DeploymentSectionHeader from "./DeploymentSectionHeader.svelte";
2
+ import SelectToken from "./SelectToken.svelte";
3
+ import { DotrainOrderGui } from "@rainlanguage/orderbook/js_api";
4
+ export let gui;
5
+ export let selectTokens;
6
+ export let onSelectTokenSelect;
7
+ </script>
8
+
9
+ <div class="flex w-full flex-col gap-4">
10
+ <DeploymentSectionHeader
11
+ title="Select Tokens"
12
+ description="Select the tokens that you want to use in your order."
13
+ />
14
+ {#each selectTokens as token}
15
+ <SelectToken {token} bind:gui {onSelectTokenSelect} />
16
+ {/each}
17
+ </div>
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { DotrainOrderGui, type SelectTokens } from '@rainlanguage/orderbook/js_api';
3
+ declare const __propDef: {
4
+ props: {
5
+ gui: DotrainOrderGui;
6
+ selectTokens: SelectTokens;
7
+ onSelectTokenSelect: () => void;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ exports?: {} | undefined;
14
+ bindings?: string | undefined;
15
+ };
16
+ export type SelectTokensSectionProps = typeof __propDef.props;
17
+ export type SelectTokensSectionEvents = typeof __propDef.events;
18
+ export type SelectTokensSectionSlots = typeof __propDef.slots;
19
+ export default class SelectTokensSection extends SvelteComponent<SelectTokensSectionProps, SelectTokensSectionEvents, SelectTokensSectionSlots> {
20
+ }
21
+ export {};
@@ -0,0 +1,26 @@
1
+ <script>import { Button } from "flowbite-svelte";
2
+ import { fade } from "svelte/transition";
3
+ export let handleShareChoices;
4
+ let showCopiedMessage = false;
5
+ const handleClick = () => {
6
+ handleShareChoices();
7
+ showCopiedMessage = true;
8
+ setTimeout(() => {
9
+ showCopiedMessage = false;
10
+ }, 2e3);
11
+ };
12
+ </script>
13
+
14
+ <div class="relative">
15
+ {#if showCopiedMessage}
16
+ <div
17
+ transition:fade
18
+ class="absolute -top-16 left-1/2 z-[200] -translate-x-1/2 whitespace-nowrap rounded-full border border-gray-200 bg-white px-8 py-4 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-white"
19
+ >
20
+ Shareable URL copied to clipboard
21
+ </div>
22
+ {/if}
23
+ <Button color="light" size="lg" data-testid="review-choices-button" on:click={handleClick}
24
+ >Share these choices</Button
25
+ >
26
+ </div>
@@ -0,0 +1,18 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ handleShareChoices: () => void;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ exports?: {} | undefined;
11
+ bindings?: string | undefined;
12
+ };
13
+ export type ShareChoicesButtonProps = typeof __propDef.props;
14
+ export type ShareChoicesButtonEvents = typeof __propDef.events;
15
+ export type ShareChoicesButtonSlots = typeof __propDef.slots;
16
+ export default class ShareChoicesButton extends SvelteComponent<ShareChoicesButtonProps, ShareChoicesButtonEvents, ShareChoicesButtonSlots> {
17
+ }
18
+ export {};
@@ -0,0 +1,70 @@
1
+ <script>import { fade } from "svelte/transition";
2
+ import { DotrainOrderGui } from "@rainlanguage/orderbook/js_api";
3
+ import DeploymentsSection from "./DeploymentsSection.svelte";
4
+ import SvelteMarkdown from "svelte-markdown";
5
+ export let strategyName = "";
6
+ export let dotrain = "";
7
+ let markdownContent = "";
8
+ let error;
9
+ const isMarkdownUrl = (url) => {
10
+ return url.trim().toLowerCase().endsWith(".md");
11
+ };
12
+ const fetchMarkdownContent = async (url) => {
13
+ try {
14
+ const response = await fetch(url);
15
+ if (response.ok) {
16
+ markdownContent = await response.text();
17
+ }
18
+ } catch {
19
+ error = `Failed to fetch markdown`;
20
+ }
21
+ };
22
+ const getStrategyWithMarkdown = async () => {
23
+ try {
24
+ const strategyDetails = await DotrainOrderGui.getStrategyDetails(dotrain);
25
+ if (strategyDetails.description && isMarkdownUrl(strategyDetails.description)) {
26
+ await fetchMarkdownContent(strategyDetails.description);
27
+ }
28
+ return strategyDetails;
29
+ } catch {
30
+ throw new Error("Failed to get strategy details");
31
+ }
32
+ };
33
+ </script>
34
+
35
+ {#await getStrategyWithMarkdown() then strategyDetails}
36
+ <div>
37
+ <div in:fade class="flex flex-col gap-8">
38
+ <div class="flex max-w-2xl flex-col gap-3 text-start lg:gap-6">
39
+ <h1 class="text-4xl font-semibold text-gray-900 lg:text-6xl dark:text-white">
40
+ {strategyDetails.name}
41
+ </h1>
42
+ {#if markdownContent}
43
+ <div data-testid="markdown-content" class="prose dark:prose-invert">
44
+ <SvelteMarkdown source={markdownContent} />
45
+ </div>
46
+ {:else}
47
+ <div class="flex flex-col gap-2">
48
+ {#if error}
49
+ <p data-testid="markdown-error" class="text-red-500">{error}</p>
50
+ {/if}
51
+ <p
52
+ data-testid="plain-description"
53
+ class="text-base text-gray-600 lg:text-lg dark:text-gray-400"
54
+ >
55
+ {strategyDetails.description}
56
+ </p>
57
+ </div>
58
+ {/if}
59
+ </div>
60
+ <div class="u flex flex-col gap-4">
61
+ <h2 class="text-3xl font-semibold text-gray-900 dark:text-white">Deployments</h2>
62
+ <DeploymentsSection {dotrain} {strategyName} />
63
+ </div>
64
+ </div>
65
+ </div>
66
+ {:catch error}
67
+ <div>
68
+ <p class="text-red-500">{error}</p>
69
+ </div>
70
+ {/await}
@@ -0,0 +1,19 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ strategyName?: string;
5
+ dotrain?: string;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ exports?: {} | undefined;
12
+ bindings?: string | undefined;
13
+ };
14
+ export type StrategyPageProps = typeof __propDef.props;
15
+ export type StrategyPageEvents = typeof __propDef.events;
16
+ export type StrategyPageSlots = typeof __propDef.slots;
17
+ export default class StrategyPage extends SvelteComponent<StrategyPageProps, StrategyPageEvents, StrategyPageSlots> {
18
+ }
19
+ export {};
@@ -0,0 +1,62 @@
1
+ <script>import { Input } from "flowbite-svelte";
2
+ import {
3
+ } from "@rainlanguage/orderbook/js_api";
4
+ import DeploymentSectionHeader from "./DeploymentSectionHeader.svelte";
5
+ import { onMount } from "svelte";
6
+ export let i;
7
+ export let label;
8
+ export let vault;
9
+ export let gui;
10
+ let tokenInfo = null;
11
+ let inputValue = "";
12
+ let error = "";
13
+ onMount(() => {
14
+ const vaultIds = gui.getVaultIds();
15
+ if (label === "Input") {
16
+ inputValue = vaultIds.get("input")?.[i];
17
+ } else if (label === "Output") {
18
+ inputValue = vaultIds.get("output")?.[i];
19
+ }
20
+ });
21
+ const handleGetTokenInfo = async () => {
22
+ if (!vault.token?.key) return;
23
+ try {
24
+ tokenInfo = await gui?.getTokenInfo(vault.token?.key);
25
+ } catch (e) {
26
+ const errorMessage = e.message ? e.message : "Error getting token info.";
27
+ error = errorMessage;
28
+ }
29
+ };
30
+ const handleInput = async () => {
31
+ const isInput = label === "Input";
32
+ error = "";
33
+ try {
34
+ gui?.setVaultId(isInput, i, inputValue);
35
+ } catch (e) {
36
+ const errorMessage = e.message ? e.message : "Error setting vault ID.";
37
+ error = errorMessage;
38
+ }
39
+ };
40
+ $: if (vault.token?.key) {
41
+ handleGetTokenInfo();
42
+ }
43
+ </script>
44
+
45
+ <div class="flex w-full flex-col gap-6">
46
+ <DeploymentSectionHeader
47
+ title={`${label} ${i + 1} ${tokenInfo?.symbol ? `(${tokenInfo.symbol})` : ''}`}
48
+ description={`${tokenInfo?.symbol} vault ID`}
49
+ />
50
+ <div class="flex flex-col gap-2">
51
+ <Input
52
+ size="lg"
53
+ type="text"
54
+ placeholder="Enter vault ID"
55
+ bind:value={inputValue}
56
+ on:input={handleInput}
57
+ />
58
+ {#if error}
59
+ <p class="text-red-500">{error}</p>
60
+ {/if}
61
+ </div>
62
+ </div>
@@ -0,0 +1,22 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { type OrderIOCfg, type DotrainOrderGui } from '@rainlanguage/orderbook/js_api';
3
+ declare const __propDef: {
4
+ props: {
5
+ i: number;
6
+ label: "Input" | "Output";
7
+ vault: OrderIOCfg;
8
+ gui: DotrainOrderGui;
9
+ };
10
+ events: {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {};
14
+ exports?: {} | undefined;
15
+ bindings?: string | undefined;
16
+ };
17
+ export type TokenIoInputProps = typeof __propDef.props;
18
+ export type TokenIoInputEvents = typeof __propDef.events;
19
+ export type TokenIoInputSlots = typeof __propDef.slots;
20
+ export default class TokenIoInput extends SvelteComponent<TokenIoInputProps, TokenIoInputEvents, TokenIoInputSlots> {
21
+ }
22
+ export {};
@@ -0,0 +1,17 @@
1
+ <script>import TokenIOInput from "./TokenIOInput.svelte";
2
+ export let allTokenInputs = [];
3
+ export let allTokenOutputs = [];
4
+ export let gui;
5
+ </script>
6
+
7
+ {#if allTokenInputs.length > 0}
8
+ {#each allTokenInputs as input, i}
9
+ <TokenIOInput {i} label="Input" vault={input} {gui} />
10
+ {/each}
11
+ {/if}
12
+
13
+ {#if allTokenOutputs.length > 0}
14
+ {#each allTokenOutputs as output, i}
15
+ <TokenIOInput {i} label="Output" vault={output} {gui} />
16
+ {/each}
17
+ {/if}
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { DotrainOrderGui, OrderIOCfg } from '@rainlanguage/orderbook/js_api';
3
+ declare const __propDef: {
4
+ props: {
5
+ allTokenInputs?: OrderIOCfg[];
6
+ allTokenOutputs?: OrderIOCfg[];
7
+ gui: DotrainOrderGui;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ exports?: {} | undefined;
14
+ bindings?: string | undefined;
15
+ };
16
+ export type TokenIoSectionProps = typeof __propDef.props;
17
+ export type TokenIoSectionEvents = typeof __propDef.events;
18
+ export type TokenIoSectionSlots = typeof __propDef.slots;
19
+ export default class TokenIoSection extends SvelteComponent<TokenIoSectionProps, TokenIoSectionEvents, TokenIoSectionSlots> {
20
+ }
21
+ export {};
@@ -0,0 +1,25 @@
1
+ <script>import { onMount } from "svelte";
2
+ import { page } from "$app/stores";
3
+ export let strategies;
4
+ let customRegistryParam = "";
5
+ onMount(async () => {
6
+ customRegistryParam = $page.url.searchParams.get("registry") ? `?registry=${$page.url.searchParams.get("registry")}` : "";
7
+ });
8
+ </script>
9
+
10
+ <div class="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3" data-testid="valid-strategies">
11
+ {#each strategies as strategy}
12
+ <a
13
+ href={`/deploy/${strategy.name}${customRegistryParam}`}
14
+ data-testid="strategy-short-tile"
15
+ class="flex flex-col gap-y-2 rounded-xl border border-gray-200 p-4 hover:bg-gray-50 dark:border-gray-800 dark:hover:bg-gray-900"
16
+ >
17
+ <h3 class="text-2xl font-semibold text-gray-900 dark:text-white">
18
+ {strategy.details.name}
19
+ </h3>
20
+ <p class="text-lg text-gray-600 dark:text-gray-400">
21
+ {strategy.details.short_description}
22
+ </p>
23
+ </a>
24
+ {/each}
25
+ </div>
@@ -0,0 +1,19 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { ValidStrategyDetail } from '../../types/strategy';
3
+ declare const __propDef: {
4
+ props: {
5
+ strategies: ValidStrategyDetail[];
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ exports?: {} | undefined;
12
+ bindings?: string | undefined;
13
+ };
14
+ export type ValidStrategiesSectionProps = typeof __propDef.props;
15
+ export type ValidStrategiesSectionEvents = typeof __propDef.events;
16
+ export type ValidStrategiesSectionSlots = typeof __propDef.slots;
17
+ export default class ValidStrategiesSection extends SvelteComponent<ValidStrategiesSectionProps, ValidStrategiesSectionEvents, ValidStrategiesSectionSlots> {
18
+ }
19
+ export {};
@@ -0,0 +1,17 @@
1
+ import type { Config } from '@wagmi/core';
2
+ import type { DepositAndAddOrderCalldataResult, DotrainOrderGui } from '@rainlanguage/orderbook/js_api';
3
+ import type { Hex } from 'viem';
4
+ import type { ExtendedApprovalCalldata } from '../../stores/transactionStore';
5
+ export declare enum AddOrderErrors {
6
+ ADD_ORDER_FAILED = "Failed to add order",
7
+ MISSING_GUI = "Order GUI is required",
8
+ MISSING_CONFIG = "Wagmi config is required",
9
+ NO_WALLET = "No wallet address found"
10
+ }
11
+ export interface HandleAddOrderResult {
12
+ approvals: ExtendedApprovalCalldata[];
13
+ deploymentCalldata: DepositAndAddOrderCalldataResult;
14
+ orderbookAddress: Hex;
15
+ chainId: number;
16
+ }
17
+ export declare function getDeploymentTransactionArgs(gui: DotrainOrderGui, wagmiConfig: Config | undefined): Promise<HandleAddOrderResult>;
@@ -0,0 +1,24 @@
1
+ import { getAccount } from '@wagmi/core';
2
+ export var AddOrderErrors;
3
+ (function (AddOrderErrors) {
4
+ AddOrderErrors["ADD_ORDER_FAILED"] = "Failed to add order";
5
+ AddOrderErrors["MISSING_GUI"] = "Order GUI is required";
6
+ AddOrderErrors["MISSING_CONFIG"] = "Wagmi config is required";
7
+ AddOrderErrors["NO_WALLET"] = "No wallet address found";
8
+ })(AddOrderErrors || (AddOrderErrors = {}));
9
+ export async function getDeploymentTransactionArgs(gui, wagmiConfig) {
10
+ if (!wagmiConfig) {
11
+ throw new Error(AddOrderErrors.MISSING_CONFIG);
12
+ }
13
+ const { address } = getAccount(wagmiConfig);
14
+ if (!address) {
15
+ throw new Error(AddOrderErrors.NO_WALLET);
16
+ }
17
+ const { approvals, deploymentCalldata, orderbookAddress, chainId } = await gui.getDeploymentTransactionArgs(address);
18
+ return {
19
+ approvals,
20
+ deploymentCalldata,
21
+ orderbookAddress: orderbookAddress,
22
+ chainId
23
+ };
24
+ }
@@ -0,0 +1,44 @@
1
+ <script>import { Button } from "flowbite-svelte";
2
+ import { ArrowDownOutline, ArrowUpOutline } from "flowbite-svelte-icons";
3
+ export let handleDepositOrWithdrawModal;
4
+ export let vault;
5
+ export let chainId;
6
+ export let rpcUrl;
7
+ export let query;
8
+ export let subgraphUrl;
9
+ </script>
10
+
11
+ <Button
12
+ data-testid="depositOrWithdrawButton"
13
+ color="light"
14
+ size="xs"
15
+ on:click={() =>
16
+ handleDepositOrWithdrawModal({
17
+ open: true,
18
+ args: {
19
+ vault,
20
+ onDepositOrWithdraw: $query.refetch,
21
+ action: 'deposit',
22
+ chainId,
23
+ rpcUrl,
24
+ subgraphUrl
25
+ }
26
+ })}><ArrowUpOutline size="xs" /></Button
27
+ >
28
+ <Button
29
+ data-testid="depositOrWithdrawButton"
30
+ color="light"
31
+ size="xs"
32
+ on:click={() =>
33
+ handleDepositOrWithdrawModal({
34
+ open: true,
35
+ args: {
36
+ vault,
37
+ onDepositOrWithdraw: $query.refetch,
38
+ action: 'withdraw',
39
+ chainId,
40
+ rpcUrl,
41
+ subgraphUrl
42
+ }
43
+ })}><ArrowDownOutline size="xs" /></Button
44
+ >
@@ -0,0 +1,26 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { SgVault } from '@rainlanguage/orderbook/js_api';
3
+ import type { CreateQueryResult } from '@tanstack/svelte-query';
4
+ import type { DepositOrWithdrawModalProps } from '../../types/modal';
5
+ declare const __propDef: {
6
+ props: {
7
+ handleDepositOrWithdrawModal: (props: DepositOrWithdrawModalProps) => void;
8
+ vault: SgVault;
9
+ chainId: number;
10
+ rpcUrl: string;
11
+ query: CreateQueryResult;
12
+ subgraphUrl: string;
13
+ };
14
+ events: {
15
+ [evt: string]: CustomEvent<any>;
16
+ };
17
+ slots: {};
18
+ exports?: {} | undefined;
19
+ bindings?: string | undefined;
20
+ };
21
+ export type DepositOrWithdrawButtonsProps = typeof __propDef.props;
22
+ export type DepositOrWithdrawButtonsEvents = typeof __propDef.events;
23
+ export type DepositOrWithdrawButtonsSlots = typeof __propDef.slots;
24
+ export default class DepositOrWithdrawButtons extends SvelteComponent<DepositOrWithdrawButtonsProps, DepositOrWithdrawButtonsEvents, DepositOrWithdrawButtonsSlots> {
25
+ }
26
+ export {};