@rainlanguage/ui-components 0.0.1-alpha.24 → 0.0.1-alpha.240

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 (299) hide show
  1. package/README.md +14 -6
  2. package/dist/__fixtures__/settings.yaml +123 -0
  3. package/dist/__mocks__/CodeMirrorRainlang.svelte +4 -0
  4. package/dist/__mocks__/CodeMirrorRainlang.svelte.d.ts +18 -0
  5. package/dist/__mocks__/MockCodeMirrorEditor.svelte +17 -0
  6. package/dist/__mocks__/MockCodeMirrorEditor.svelte.d.ts +21 -0
  7. package/dist/__mocks__/MockComponent.js +1 -1
  8. package/dist/__mocks__/MockComponent.svelte +10 -2
  9. package/dist/__mocks__/MockComponent.svelte.d.ts +4 -1
  10. package/dist/__mocks__/mockWeb3Config.d.ts +1 -1
  11. package/dist/__mocks__/mockWeb3Config.js +10 -7
  12. package/dist/__mocks__/queries.js +9 -9
  13. package/dist/__mocks__/stores.d.ts +55 -45
  14. package/dist/__mocks__/stores.js +85 -68
  15. package/dist/app.css +3 -3
  16. package/dist/components/ButtonDarkMode.svelte +7 -1
  17. package/dist/components/ButtonLoading.svelte +1 -1
  18. package/dist/components/ButtonScrub.svelte +22 -0
  19. package/dist/components/ButtonScrub.svelte.d.ts +25 -0
  20. package/dist/components/ButtonVaultLink.svelte +12 -11
  21. package/dist/components/ButtonVaultLink.svelte.d.ts +4 -3
  22. package/dist/components/CheckboxInactiveOrdersVault.svelte +20 -0
  23. package/dist/components/CheckboxInactiveOrdersVault.svelte.d.ts +19 -0
  24. package/dist/components/CheckboxZeroBalanceVault.svelte.d.ts +2 -2
  25. package/dist/components/CodeMirrorDotrain.svelte +4 -0
  26. package/dist/components/CodeMirrorDotrain.svelte.d.ts +1 -0
  27. package/dist/components/CodeMirrorRainlang.svelte +20 -12
  28. package/dist/components/CodeMirrorRainlang.svelte.d.ts +3 -2
  29. package/dist/components/EditableSpan.svelte +3 -14
  30. package/dist/components/EditableSpan.svelte.d.ts +0 -1
  31. package/dist/components/Hash.svelte +6 -5
  32. package/dist/components/License.svelte +5 -4
  33. package/dist/components/ListViewRaindexFilters.svelte +64 -0
  34. package/dist/components/ListViewRaindexFilters.svelte.d.ts +32 -0
  35. package/dist/components/LocalDbStatusBadge.svelte +27 -0
  36. package/dist/components/LocalDbStatusBadge.svelte.d.ts +19 -0
  37. package/dist/components/LocalDbStatusCard.svelte +43 -0
  38. package/dist/components/LocalDbStatusCard.svelte.d.ts +20 -0
  39. package/dist/components/LocalDbStatusModal.svelte +105 -0
  40. package/dist/components/LocalDbStatusModal.svelte.d.ts +21 -0
  41. package/dist/components/OrderOrVaultHash.svelte +12 -12
  42. package/dist/components/OrderOrVaultHash.svelte.d.ts +4 -4
  43. package/dist/components/PageHeader.svelte +1 -1
  44. package/dist/components/Sensitive.svelte +16 -0
  45. package/dist/components/Sensitive.svelte.d.ts +28 -0
  46. package/dist/components/TanstackAppTable.svelte +270 -60
  47. package/dist/components/TanstackAppTable.svelte.d.ts +15 -9
  48. package/dist/components/ToastDetail.svelte +42 -0
  49. package/dist/components/ToastDetail.svelte.d.ts +20 -0
  50. package/dist/components/Tooltip.svelte +8 -0
  51. package/dist/components/Tooltip.svelte.d.ts +21 -0
  52. package/dist/components/VaultBalanceChangeTypeFilter.svelte +23 -0
  53. package/dist/components/VaultBalanceChangeTypeFilter.svelte.d.ts +19 -0
  54. package/dist/components/VaultCard.svelte +18 -0
  55. package/dist/components/VaultCard.svelte.d.ts +19 -0
  56. package/dist/components/charts/LightweightChart.svelte +1 -1
  57. package/dist/components/charts/LightweightChart.svelte.d.ts +5 -5
  58. package/dist/components/charts/OrderTradesChart.svelte +319 -28
  59. package/dist/components/charts/OrderTradesChart.svelte.d.ts +4 -4
  60. package/dist/components/charts/TanstackLightweightChartLine.svelte +5 -9
  61. package/dist/components/charts/VaultBalanceChart.svelte +8 -26
  62. package/dist/components/charts/VaultBalanceChart.svelte.d.ts +1 -7
  63. package/dist/components/charts/transformAndSortData.d.ts +24 -0
  64. package/dist/components/charts/transformAndSortData.js +111 -0
  65. package/dist/components/checkbox/CheckboxActiveOrders.svelte +11 -0
  66. package/dist/components/checkbox/CheckboxActiveOrders.svelte.d.ts +19 -0
  67. package/dist/components/deployment/ButtonSelectOption.svelte +2 -0
  68. package/dist/components/deployment/ButtonSelectOption.svelte.d.ts +1 -0
  69. package/dist/components/deployment/ComposedRainlangModal.svelte +3 -2
  70. package/dist/components/deployment/ComposedRainlangModal.svelte.d.ts +1 -4
  71. package/dist/components/deployment/DeploymentSectionHeader.svelte +7 -4
  72. package/dist/components/deployment/DeploymentSteps.svelte +196 -221
  73. package/dist/components/deployment/DeploymentSteps.svelte.d.ts +6 -12
  74. package/dist/components/deployment/DeploymentTile.svelte +2 -2
  75. package/dist/components/deployment/DeploymentTile.svelte.d.ts +1 -1
  76. package/dist/components/deployment/DeploymentsSection.svelte +15 -22
  77. package/dist/components/deployment/DeploymentsSection.svelte.d.ts +3 -2
  78. package/dist/components/deployment/DepositInput.svelte +10 -11
  79. package/dist/components/deployment/DepositInput.svelte.d.ts +2 -3
  80. package/dist/components/deployment/DisclaimerModal.svelte +6 -7
  81. package/dist/components/deployment/FieldDefinitionInput.svelte +10 -14
  82. package/dist/components/deployment/FieldDefinitionInput.svelte.d.ts +2 -3
  83. package/dist/components/deployment/InvalidOrdersSection.svelte +17 -0
  84. package/dist/components/deployment/InvalidOrdersSection.svelte.d.ts +19 -0
  85. package/dist/components/deployment/{StrategyPage.svelte → OrderPage.svelte} +15 -24
  86. package/dist/components/deployment/OrderPage.svelte.d.ts +21 -0
  87. package/dist/components/deployment/SelectToken.svelte +127 -50
  88. package/dist/components/deployment/SelectToken.svelte.d.ts +5 -4
  89. package/dist/components/deployment/TokenBalance.svelte +19 -0
  90. package/dist/components/deployment/TokenBalance.svelte.d.ts +19 -0
  91. package/dist/components/deployment/TokenIOInput.svelte +27 -17
  92. package/dist/components/deployment/TokenIOInput.svelte.d.ts +3 -3
  93. package/dist/components/deployment/TokenSelectionModal.svelte +148 -0
  94. package/dist/components/deployment/TokenSelectionModal.svelte.d.ts +20 -0
  95. package/dist/components/deployment/{ValidStrategiesSection.svelte → ValidOrdersSection.svelte} +7 -7
  96. package/dist/components/deployment/ValidOrdersSection.svelte.d.ts +19 -0
  97. package/dist/components/deployment/VaultIdInformation.svelte +17 -0
  98. package/dist/components/deployment/VaultIdInformation.svelte.d.ts +21 -0
  99. package/dist/components/detail/OrderDetail.svelte +220 -82
  100. package/dist/components/detail/OrderDetail.svelte.d.ts +21 -15
  101. package/dist/components/detail/TanstackOrderQuote.svelte +114 -46
  102. package/dist/components/detail/TanstackOrderQuote.svelte.d.ts +14 -16
  103. package/dist/components/detail/VaultDetail.svelte +82 -79
  104. package/dist/components/detail/VaultDetail.svelte.d.ts +12 -18
  105. package/dist/components/dropdown/DropdownActiveNetworks.svelte +44 -0
  106. package/dist/components/dropdown/DropdownActiveNetworks.svelte.d.ts +19 -0
  107. package/dist/components/dropdown/DropdownCheckbox.svelte +4 -4
  108. package/dist/components/dropdown/DropdownRaindexesFilter.svelte +172 -0
  109. package/dist/components/dropdown/DropdownRaindexesFilter.svelte.d.ts +25 -0
  110. package/dist/components/dropdown/DropdownTokensFilter.svelte +152 -0
  111. package/dist/components/dropdown/DropdownTokensFilter.svelte.d.ts +28 -0
  112. package/dist/components/icon/Refresh.svelte +4 -2
  113. package/dist/components/icon/Refresh.svelte.d.ts +2 -0
  114. package/dist/components/input/InputOrderHash.svelte +1 -1
  115. package/dist/components/input/InputOrderHash.svelte.d.ts +3 -3
  116. package/dist/components/input/InputOwnerFilter.svelte +48 -0
  117. package/dist/components/input/InputOwnerFilter.svelte.d.ts +19 -0
  118. package/dist/components/input/InputRegistryUrl.svelte +36 -14
  119. package/dist/components/input/InputToken.svelte +2 -2
  120. package/dist/components/input/InputTokenAmount.svelte +30 -20
  121. package/dist/components/input/InputTokenAmount.svelte.d.ts +3 -3
  122. package/dist/components/tables/OrderAPY.svelte +6 -33
  123. package/dist/components/tables/OrderAPY.svelte.d.ts +1 -4
  124. package/dist/components/tables/OrderTradesListTable.svelte +132 -124
  125. package/dist/components/tables/OrderTradesListTable.svelte.d.ts +4 -4
  126. package/dist/components/tables/OrderVaultsVolTable.svelte +17 -22
  127. package/dist/components/tables/OrderVaultsVolTable.svelte.d.ts +2 -2
  128. package/dist/components/tables/OrdersListTable.svelte +206 -115
  129. package/dist/components/tables/OrdersListTable.svelte.d.ts +18 -23
  130. package/dist/components/tables/VaultBalanceChangesTable.svelte +83 -43
  131. package/dist/components/tables/VaultBalanceChangesTable.svelte.d.ts +13 -11
  132. package/dist/components/tables/VaultsListTable.svelte +275 -150
  133. package/dist/components/tables/VaultsListTable.svelte.d.ts +24 -33
  134. package/dist/components/transactions/FixedBottomTransaction.svelte +64 -0
  135. package/dist/components/transactions/FixedBottomTransaction.svelte.d.ts +16 -0
  136. package/dist/components/transactions/TransactionDetail.svelte +31 -0
  137. package/dist/components/transactions/TransactionDetail.svelte.d.ts +20 -0
  138. package/dist/components/transactions/TransactionList.svelte +17 -0
  139. package/dist/components/transactions/TransactionList.svelte.d.ts +16 -0
  140. package/dist/components/transactions/getStatusEmoji.d.ts +2 -0
  141. package/dist/components/transactions/getStatusEmoji.js +20 -0
  142. package/dist/components/wallet/WalletConnect.svelte +5 -4
  143. package/dist/components/wallet/WalletConnect.svelte.d.ts +0 -1
  144. package/dist/consts.d.ts +1 -0
  145. package/dist/consts.js +1 -0
  146. package/dist/errors/DeploymentStepsError.d.ts +11 -5
  147. package/dist/errors/DeploymentStepsError.js +13 -7
  148. package/dist/errors/index.d.ts +1 -1
  149. package/dist/errors/index.js +1 -1
  150. package/dist/hooks/useLocalDb.d.ts +3 -0
  151. package/dist/hooks/useLocalDb.js +10 -0
  152. package/dist/hooks/useRaindexClient.d.ts +3 -0
  153. package/dist/hooks/useRaindexClient.js +11 -0
  154. package/dist/hooks/useRaindexOrderBuilder.d.ts +3 -0
  155. package/dist/hooks/useRaindexOrderBuilder.js +11 -0
  156. package/dist/index.d.ts +122 -91
  157. package/dist/index.js +118 -87
  158. package/dist/models/Transaction.d.ts +75 -0
  159. package/dist/models/Transaction.js +100 -0
  160. package/dist/providers/LocalDbProvider.svelte +8 -0
  161. package/dist/providers/LocalDbProvider.svelte.d.ts +21 -0
  162. package/dist/providers/RaindexClientProvider.svelte +8 -0
  163. package/dist/providers/RaindexClientProvider.svelte.d.ts +21 -0
  164. package/dist/providers/RaindexOrderBuilderProvider.svelte +8 -0
  165. package/dist/providers/RaindexOrderBuilderProvider.svelte.d.ts +21 -0
  166. package/dist/providers/dotrainRegistry/DotrainRegistryProvider.svelte +8 -0
  167. package/dist/providers/dotrainRegistry/DotrainRegistryProvider.svelte.d.ts +24 -0
  168. package/dist/providers/dotrainRegistry/context.d.ts +9 -0
  169. package/dist/providers/dotrainRegistry/context.js +43 -0
  170. package/dist/providers/dotrainRegistry/useDotrainRegistry.d.ts +5 -0
  171. package/dist/providers/dotrainRegistry/useDotrainRegistry.js +35 -0
  172. package/dist/providers/registry/RegistryManager.d.ts +65 -0
  173. package/dist/providers/registry/RegistryManager.js +134 -0
  174. package/dist/providers/registry/RegistryProvider.svelte +6 -0
  175. package/dist/providers/registry/RegistryProvider.svelte.d.ts +21 -0
  176. package/dist/providers/registry/context.d.ts +10 -0
  177. package/dist/providers/registry/context.js +46 -0
  178. package/dist/providers/registry/useRegistry.d.ts +7 -0
  179. package/dist/providers/registry/useRegistry.js +29 -0
  180. package/dist/providers/toasts/ToastProvider.svelte +17 -0
  181. package/dist/providers/toasts/ToastProvider.svelte.d.ts +18 -0
  182. package/dist/providers/toasts/context.d.ts +14 -0
  183. package/dist/providers/toasts/context.js +22 -0
  184. package/dist/providers/toasts/useToasts.d.ts +16 -0
  185. package/dist/providers/toasts/useToasts.js +63 -0
  186. package/dist/providers/transactions/TransactionManager.d.ts +234 -0
  187. package/dist/providers/transactions/TransactionManager.js +509 -0
  188. package/dist/providers/transactions/TransactionProvider.svelte +11 -0
  189. package/dist/providers/transactions/TransactionProvider.svelte.d.ts +24 -0
  190. package/dist/providers/transactions/context.d.ts +19 -0
  191. package/dist/providers/transactions/context.js +28 -0
  192. package/dist/providers/transactions/useTransactions.d.ts +13 -0
  193. package/dist/providers/transactions/useTransactions.js +18 -0
  194. package/dist/providers/wallet/WalletProvider.svelte +7 -0
  195. package/dist/providers/wallet/WalletProvider.svelte.d.ts +21 -0
  196. package/dist/providers/wallet/context.d.ts +10 -0
  197. package/dist/providers/wallet/context.js +47 -0
  198. package/dist/providers/wallet/useAccount.d.ts +8 -0
  199. package/dist/providers/wallet/useAccount.js +148 -0
  200. package/dist/queries/keys.d.ts +1 -0
  201. package/dist/queries/keys.js +10 -9
  202. package/dist/queries/queryClient.d.ts +2 -2
  203. package/dist/queries/queryClient.js +16 -11
  204. package/dist/services/awaitTransactionIndexing.d.ts +107 -0
  205. package/dist/services/awaitTransactionIndexing.js +60 -0
  206. package/dist/services/getExplorerLink.d.ts +1 -1
  207. package/dist/services/getExplorerLink.js +3 -5
  208. package/dist/services/handleShareChoices.d.ts +2 -2
  209. package/dist/services/handleShareChoices.js +6 -5
  210. package/dist/services/historicalOrderCharts.d.ts +3 -3
  211. package/dist/services/historicalOrderCharts.js +364 -371
  212. package/dist/services/index.d.ts +5 -2
  213. package/dist/services/index.js +3 -1
  214. package/dist/services/loadRegistryUrl.d.ts +2 -0
  215. package/dist/services/loadRegistryUrl.js +22 -0
  216. package/dist/services/pairTradesChartData.d.ts +47 -0
  217. package/dist/services/pairTradesChartData.js +194 -0
  218. package/dist/services/registry.d.ts +5 -5
  219. package/dist/services/registry.js +17 -217
  220. package/dist/services/time.d.ts +12 -0
  221. package/dist/services/time.js +88 -6
  222. package/dist/services/validateAmount.d.ts +30 -0
  223. package/dist/services/validateAmount.js +53 -0
  224. package/dist/storesGeneric/cachedWritableStore.d.ts +57 -0
  225. package/dist/storesGeneric/cachedWritableStore.js +93 -0
  226. package/dist/storesGeneric/scrub.d.ts +14 -0
  227. package/dist/storesGeneric/scrub.js +22 -0
  228. package/dist/test/matchers.d.ts +2 -2
  229. package/dist/test/matchers.js +2 -2
  230. package/dist/types/account.d.ts +3 -0
  231. package/dist/types/appStores.d.ts +9 -16
  232. package/dist/types/modal.d.ts +26 -14
  233. package/dist/types/order.d.ts +10 -0
  234. package/dist/types/order.js +1 -0
  235. package/dist/types/toast.d.ts +11 -0
  236. package/dist/types/toast.js +1 -0
  237. package/dist/types/tokenBalance.d.ts +6 -0
  238. package/dist/types/tokenBalance.js +1 -0
  239. package/dist/types/transaction.d.ts +67 -22
  240. package/dist/types/transaction.js +31 -1
  241. package/dist/utils/breadcrumbs.js +2 -2
  242. package/dist/utils/codeMirrorThemes.js +80 -74
  243. package/dist/utils/configHelpers.d.ts +4 -0
  244. package/dist/utils/configHelpers.js +21 -0
  245. package/dist/utils/constructHashLink.d.ts +24 -0
  246. package/dist/utils/constructHashLink.js +117 -0
  247. package/dist/utils/getNetworkName.d.ts +1 -0
  248. package/dist/utils/getNetworkName.js +13 -0
  249. package/dist/utils/hex.js +1 -1
  250. package/dist/utils/lightweightChartsThemes.d.ts +1 -1
  251. package/dist/utils/lightweightChartsThemes.js +11 -11
  252. package/dist/utils/localDbStatus.d.ts +26 -0
  253. package/dist/utils/localDbStatus.js +22 -0
  254. package/dist/utils/number.d.ts +0 -7
  255. package/dist/utils/number.js +5 -30
  256. package/dist/utils/stripTrailingWhitespace.d.ts +16 -0
  257. package/dist/utils/stripTrailingWhitespace.js +22 -0
  258. package/dist/utils/tokens.d.ts +2 -0
  259. package/dist/utils/tokens.js +3 -0
  260. package/dist/utils/vaultBalanceChangeLabels.d.ts +4 -0
  261. package/dist/utils/vaultBalanceChangeLabels.js +18 -0
  262. package/package.json +89 -84
  263. package/dist/__fixtures__/orderDetail.d.ts +0 -99
  264. package/dist/__fixtures__/orderDetail.js +0 -204
  265. package/dist/__fixtures__/settings-12-11-24.json +0 -160
  266. package/dist/__mocks__/mockTransactionStore.d.ts +0 -22
  267. package/dist/__mocks__/mockTransactionStore.js +0 -56
  268. package/dist/__mocks__/settings.d.ts +0 -3
  269. package/dist/__mocks__/settings.js +0 -37
  270. package/dist/components/CheckboxMyItemsOnly.svelte +0 -23
  271. package/dist/components/CheckboxMyItemsOnly.svelte.d.ts +0 -21
  272. package/dist/components/ListViewOrderbookFilters.svelte +0 -58
  273. package/dist/components/ListViewOrderbookFilters.svelte.d.ts +0 -28
  274. package/dist/components/deployment/InvalidStrategiesSection.svelte +0 -19
  275. package/dist/components/deployment/InvalidStrategiesSection.svelte.d.ts +0 -19
  276. package/dist/components/deployment/StrategyPage.svelte.d.ts +0 -19
  277. package/dist/components/deployment/ValidStrategiesSection.svelte.d.ts +0 -19
  278. package/dist/components/deployment/getDeploymentTransactionArgs.d.ts +0 -17
  279. package/dist/components/deployment/getDeploymentTransactionArgs.js +0 -28
  280. package/dist/components/detail/DepositOrWithdrawButtons.svelte +0 -44
  281. package/dist/components/detail/DepositOrWithdrawButtons.svelte.d.ts +0 -26
  282. package/dist/components/dropdown/DropdownActiveSubgraphs.svelte +0 -38
  283. package/dist/components/dropdown/DropdownActiveSubgraphs.svelte.d.ts +0 -21
  284. package/dist/components/dropdown/DropdownOrderListAccounts.svelte +0 -15
  285. package/dist/components/dropdown/DropdownOrderListAccounts.svelte.d.ts +0 -20
  286. package/dist/components/dropdown/DropdownOrderStatus.svelte +0 -31
  287. package/dist/components/dropdown/DropdownOrderStatus.svelte.d.ts +0 -19
  288. package/dist/hooks/useGui.d.ts +0 -3
  289. package/dist/hooks/useGui.js +0 -11
  290. package/dist/providers/GuiProvider.svelte +0 -8
  291. package/dist/providers/GuiProvider.svelte.d.ts +0 -21
  292. package/dist/stores/transactionStore.d.ts +0 -98
  293. package/dist/stores/transactionStore.js +0 -303
  294. package/dist/types/strategy.d.ts +0 -10
  295. package/dist/utils/time.d.ts +0 -12
  296. package/dist/utils/time.js +0 -27
  297. package/dist/utils/vault.d.ts +0 -2
  298. package/dist/utils/vault.js +0 -29
  299. /package/dist/types/{strategy.js → account.js} +0 -0
@@ -1,13 +1,13 @@
1
1
  <script>import {
2
- DotrainOrderGui
3
- } from "@rainlanguage/orderbook/js_api";
2
+ } from "@rainlanguage/raindex";
4
3
  import { Input } from "flowbite-svelte";
5
4
  import ButtonSelectOption from "./ButtonSelectOption.svelte";
6
5
  import DeploymentSectionHeader from "./DeploymentSectionHeader.svelte";
7
6
  import { CloseCircleSolid } from "flowbite-svelte-icons";
8
7
  import { onMount } from "svelte";
8
+ import { useRaindexOrderBuilder } from "../../hooks/useRaindexOrderBuilder";
9
9
  export let deposit;
10
- export let gui;
10
+ const builder = useRaindexOrderBuilder();
11
11
  let error = "";
12
12
  let currentDeposit;
13
13
  let inputValue = "";
@@ -16,7 +16,7 @@ onMount(() => {
16
16
  setCurrentDeposit();
17
17
  });
18
18
  const getCurrentDeposit = () => {
19
- const deposits = gui.getDeposits();
19
+ const deposits = builder.getDeposits();
20
20
  if (deposits.error) {
21
21
  throw new Error(deposits.error.msg);
22
22
  }
@@ -34,7 +34,7 @@ const setCurrentDeposit = () => {
34
34
  const getTokenSymbol = async () => {
35
35
  if (!deposit.token?.key) return;
36
36
  try {
37
- let result = await gui.getTokenInfo(deposit.token?.key);
37
+ let result = await builder.getTokenInfo(deposit.token?.key);
38
38
  if (result.error) {
39
39
  throw new Error(result.error.msg);
40
40
  }
@@ -44,11 +44,10 @@ const getTokenSymbol = async () => {
44
44
  error = errorMessage;
45
45
  }
46
46
  };
47
- function handlePresetClick(preset) {
47
+ async function handlePresetClick(preset) {
48
48
  if (deposit.token?.key) {
49
49
  inputValue = preset;
50
- gui?.saveDeposit(deposit.token?.key, preset);
51
- gui = gui;
50
+ await builder.setDeposit(deposit.token?.key, preset);
52
51
  try {
53
52
  currentDeposit = getCurrentDeposit();
54
53
  } catch (e) {
@@ -56,12 +55,11 @@ function handlePresetClick(preset) {
56
55
  }
57
56
  }
58
57
  }
59
- function handleInput(e) {
58
+ async function handleInput(e) {
60
59
  if (deposit.token?.key) {
61
60
  if (e.currentTarget instanceof HTMLInputElement) {
62
61
  inputValue = e.currentTarget.value;
63
- gui?.saveDeposit(deposit.token.key, e.currentTarget.value);
64
- gui = gui;
62
+ await builder.setDeposit(deposit.token.key, e.currentTarget.value);
65
63
  try {
66
64
  currentDeposit = getCurrentDeposit();
67
65
  } catch (e2) {
@@ -88,6 +86,7 @@ $: if (deposit.token?.key) {
88
86
  <div class="flex w-full flex-wrap gap-4">
89
87
  {#each deposit.presets as preset}
90
88
  <ButtonSelectOption
89
+ dataTestId={`deposit-preset-${preset}`}
91
90
  active={currentDeposit?.amount === preset}
92
91
  buttonText={preset}
93
92
  clickHandler={() => handlePresetClick(preset)}
@@ -1,9 +1,8 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import { DotrainOrderGui, type GuiDepositCfg } from '@rainlanguage/orderbook/js_api';
2
+ import { type OrderBuilderDepositCfg } from '@rainlanguage/raindex';
3
3
  declare const __propDef: {
4
4
  props: {
5
- deposit: GuiDepositCfg;
6
- gui: DotrainOrderGui;
5
+ deposit: OrderBuilderDepositCfg;
7
6
  };
8
7
  events: {
9
8
  [evt: string]: CustomEvent<any>;
@@ -13,6 +13,7 @@ async function handleAcceptDisclaimer() {
13
13
  bind:open
14
14
  class="max-h-full dark:border dark:border-gray-700 dark:bg-gray-900"
15
15
  dialogClass="fixed top-0 start-0 end-1 h-modal md:inset-0 md:h-full z-50 w-full p-4 flex justify-center items-center h-full"
16
+ data-testid="deployment-disclaimer-modal"
16
17
  >
17
18
  <div class="flex flex-col items-start gap-y-8 p-4">
18
19
  <div class="space-y-4">
@@ -20,7 +21,7 @@ async function handleAcceptDisclaimer() {
20
21
  <div class="flex items-center justify-center">
21
22
  <ExclamationCircleSolid class="h-6 w-6 text-red-500" />
22
23
  <span class="ml-2">
23
- Before you deploy your strategy, make sure you understand the following...
24
+ Before you deploy your order, make sure you understand the following...
24
25
  </span>
25
26
  </div>
26
27
  </Alert>
@@ -29,16 +30,14 @@ async function handleAcceptDisclaimer() {
29
30
  This front end is provided as a tool to interact with the Raindex smart contracts.
30
31
  </li>
31
32
  <li class="ml-4">
32
- You are deploying your own strategy and depositing funds to an immutable smart contract
33
- using your own wallet and private keys.
33
+ You are deploying your own order and depositing funds to an immutable smart contract using
34
+ your own wallet and private keys.
34
35
  </li>
35
36
  <li class="ml-4">
36
37
  Nobody is custodying your funds, there is no recourse for recovery of funds if lost.
37
38
  </li>
38
- <li class="ml-4">There is no endorsement or guarantee provided with these strategies.</li>
39
- <li class="ml-4">
40
- Do not proceed if you do not understand the strategy you are deploying.
41
- </li>
39
+ <li class="ml-4">There is no endorsement or guarantee provided with these orders.</li>
40
+ <li class="ml-4">Do not proceed if you do not understand the order you are deploying.</li>
42
41
  <li class="ml-4">Do not invest unless you are prepared to lose all funds.</li>
43
42
  </ul>
44
43
  </div>
@@ -1,17 +1,17 @@
1
1
  <script>import { Input } from "flowbite-svelte";
2
2
  import {
3
- DotrainOrderGui
4
- } from "@rainlanguage/orderbook/js_api";
3
+ } from "@rainlanguage/raindex";
5
4
  import ButtonSelectOption from "./ButtonSelectOption.svelte";
6
5
  import DeploymentSectionHeader from "./DeploymentSectionHeader.svelte";
7
6
  import { onMount } from "svelte";
7
+ import { useRaindexOrderBuilder } from "../../hooks/useRaindexOrderBuilder";
8
8
  export let fieldDefinition;
9
- export let gui;
9
+ const builder = useRaindexOrderBuilder();
10
10
  let currentValue;
11
11
  let inputValue = currentValue?.value ? currentValue?.value : fieldDefinition.default || null;
12
12
  onMount(() => {
13
13
  try {
14
- const result = gui.getFieldValue(fieldDefinition.binding);
14
+ const result = builder.getFieldValue(fieldDefinition.binding);
15
15
  if (result.error) {
16
16
  throw new Error(result.error.msg);
17
17
  }
@@ -23,11 +23,8 @@ onMount(() => {
23
23
  });
24
24
  async function handlePresetClick(preset) {
25
25
  inputValue = preset.value;
26
- gui?.saveFieldValue(fieldDefinition.binding, {
27
- isPreset: true,
28
- value: preset.id
29
- });
30
- const result = gui.getFieldValue(fieldDefinition.binding);
26
+ builder.setFieldValue(fieldDefinition.binding, inputValue);
27
+ const result = builder.getFieldValue(fieldDefinition.binding);
31
28
  if (result.error) {
32
29
  throw new Error(result.error.msg);
33
30
  }
@@ -35,11 +32,8 @@ async function handlePresetClick(preset) {
35
32
  }
36
33
  async function handleCustomInputChange(value) {
37
34
  inputValue = value;
38
- gui?.saveFieldValue(fieldDefinition.binding, {
39
- isPreset: false,
40
- value
41
- });
42
- const result = gui.getFieldValue(fieldDefinition.binding);
35
+ builder.setFieldValue(fieldDefinition.binding, inputValue);
36
+ const result = builder.getFieldValue(fieldDefinition.binding);
43
37
  if (result.error) {
44
38
  throw new Error(result.error.msg);
45
39
  }
@@ -54,6 +48,7 @@ async function handleCustomInputChange(value) {
54
48
  <div class="flex w-full flex-wrap gap-4">
55
49
  {#each fieldDefinition.presets as preset}
56
50
  <ButtonSelectOption
51
+ dataTestId={`binding-${fieldDefinition.binding}-preset-${preset.name || preset.value}`}
57
52
  buttonText={preset.name || preset.value}
58
53
  clickHandler={() => handlePresetClick(preset)}
59
54
  active={currentValue?.value === preset.value}
@@ -64,6 +59,7 @@ async function handleCustomInputChange(value) {
64
59
 
65
60
  {#if !fieldDefinition.presets || fieldDefinition.showCustomField}
66
61
  <Input
62
+ data-testid={`binding-${fieldDefinition.binding}-input`}
67
63
  size="lg"
68
64
  placeholder="Enter custom value"
69
65
  bind:value={inputValue}
@@ -1,9 +1,8 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import { DotrainOrderGui, type GuiFieldDefinitionCfg } from '@rainlanguage/orderbook/js_api';
2
+ import { type OrderBuilderFieldDefinitionCfg } from '@rainlanguage/raindex';
3
3
  declare const __propDef: {
4
4
  props: {
5
- fieldDefinition: GuiFieldDefinitionCfg;
6
- gui: DotrainOrderGui;
5
+ fieldDefinition: OrderBuilderFieldDefinitionCfg;
7
6
  };
8
7
  events: {
9
8
  [evt: string]: CustomEvent<any>;
@@ -0,0 +1,17 @@
1
+ <script>export let ordersWithErrors;
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-orders"
7
+ >
8
+ <h2 class="text-xl font-semibold text-gray-900 dark:text-white">Invalid orders in rainlang</h2>
9
+ <div class="flex flex-col gap-2">
10
+ {#each ordersWithErrors as order}
11
+ <div class="flex flex-col gap-1">
12
+ <span class="font-medium">{order.name}</span>
13
+ <span class="text-red-600 dark:text-red-400">{order.error}</span>
14
+ </div>
15
+ {/each}
16
+ </div>
17
+ </div>
@@ -0,0 +1,19 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { InvalidOrderDetail } from '../../types/order';
3
+ declare const __propDef: {
4
+ props: {
5
+ ordersWithErrors: InvalidOrderDetail[];
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ exports?: {} | undefined;
12
+ bindings?: string | undefined;
13
+ };
14
+ export type InvalidOrdersSectionProps = typeof __propDef.props;
15
+ export type InvalidOrdersSectionEvents = typeof __propDef.events;
16
+ export type InvalidOrdersSectionSlots = typeof __propDef.slots;
17
+ export default class InvalidOrdersSection extends SvelteComponent<InvalidOrdersSectionProps, InvalidOrdersSectionEvents, InvalidOrdersSectionSlots> {
18
+ }
19
+ export {};
@@ -1,9 +1,10 @@
1
1
  <script>import { fade } from "svelte/transition";
2
- import { DotrainOrderGui } from "@rainlanguage/orderbook/js_api";
3
2
  import DeploymentsSection from "./DeploymentsSection.svelte";
4
3
  import SvelteMarkdown from "svelte-markdown";
5
- export let strategyName = "";
6
- export let dotrain = "";
4
+ import { onMount } from "svelte";
5
+ export let orderName = "";
6
+ export let orderDetail;
7
+ export let deployments = [];
7
8
  let markdownContent = "";
8
9
  let error;
9
10
  const isMarkdownUrl = (url) => {
@@ -19,29 +20,19 @@ const fetchMarkdownContent = async (url) => {
19
20
  error = `Failed to fetch markdown`;
20
21
  }
21
22
  };
22
- const getStrategyWithMarkdown = async () => {
23
- try {
24
- const result = await DotrainOrderGui.getStrategyDetails(dotrain);
25
- if (result.error) {
26
- throw new Error(result.error.msg);
27
- }
28
- const strategyDetails = result.value;
29
- if (strategyDetails.description && isMarkdownUrl(strategyDetails.description)) {
30
- await fetchMarkdownContent(strategyDetails.description);
31
- }
32
- return strategyDetails;
33
- } catch {
34
- throw new Error("Failed to get strategy details");
23
+ onMount(async () => {
24
+ if (orderDetail?.description && isMarkdownUrl(orderDetail.description)) {
25
+ await fetchMarkdownContent(orderDetail.description);
35
26
  }
36
- };
27
+ });
37
28
  </script>
38
29
 
39
- {#await getStrategyWithMarkdown() then strategyDetails}
30
+ {#if orderDetail}
40
31
  <div>
41
32
  <div in:fade class="flex flex-col gap-8">
42
33
  <div class="flex max-w-2xl flex-col gap-3 text-start lg:gap-6">
43
34
  <h1 class="text-4xl font-semibold text-gray-900 lg:text-6xl dark:text-white">
44
- {strategyDetails.name}
35
+ {orderDetail.name ?? orderName}
45
36
  </h1>
46
37
  {#if markdownContent}
47
38
  <div data-testid="markdown-content" class="prose dark:prose-invert">
@@ -56,19 +47,19 @@ const getStrategyWithMarkdown = async () => {
56
47
  data-testid="plain-description"
57
48
  class="text-base text-gray-600 lg:text-lg dark:text-gray-400"
58
49
  >
59
- {strategyDetails.description}
50
+ {orderDetail.description}
60
51
  </p>
61
52
  </div>
62
53
  {/if}
63
54
  </div>
64
55
  <div class="u flex flex-col gap-4">
65
56
  <h2 class="text-3xl font-semibold text-gray-900 dark:text-white">Deployments</h2>
66
- <DeploymentsSection {dotrain} {strategyName} />
57
+ <DeploymentsSection {deployments} {orderName} />
67
58
  </div>
68
59
  </div>
69
60
  </div>
70
- {:catch error}
61
+ {:else}
71
62
  <div>
72
- <p class="text-red-500">{error}</p>
63
+ <p class="text-red-500">Failed to load order details.</p>
73
64
  </div>
74
- {/await}
65
+ {/if}
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { NameAndDescriptionCfg } from '@rainlanguage/raindex';
3
+ declare const __propDef: {
4
+ props: {
5
+ orderName?: string;
6
+ orderDetail: NameAndDescriptionCfg;
7
+ deployments?: Map<string, NameAndDescriptionCfg> | [string, NameAndDescriptionCfg][];
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ exports?: {} | undefined;
14
+ bindings?: string | undefined;
15
+ };
16
+ export type OrderPageProps = typeof __propDef.props;
17
+ export type OrderPageEvents = typeof __propDef.events;
18
+ export type OrderPageSlots = typeof __propDef.slots;
19
+ export default class OrderPage extends SvelteComponent<OrderPageProps, OrderPageEvents, OrderPageSlots> {
20
+ }
21
+ export {};
@@ -2,30 +2,75 @@
2
2
  import { CheckCircleSolid, CloseCircleSolid } from "flowbite-svelte-icons";
3
3
  import { Spinner } from "flowbite-svelte";
4
4
  import { onMount } from "svelte";
5
+ import { useRaindexOrderBuilder } from "../../hooks/useRaindexOrderBuilder";
6
+ import ButtonSelectOption from "./ButtonSelectOption.svelte";
7
+ import TokenSelectionModal from "./TokenSelectionModal.svelte";
8
+ import TokenBalanceComponent from "./TokenBalance.svelte";
5
9
  export let token;
6
- export let gui;
7
10
  export let onSelectTokenSelect;
11
+ export let tokenBalances = /* @__PURE__ */ new Map();
8
12
  let inputValue = null;
9
13
  let tokenInfo = null;
10
14
  let error = "";
11
15
  let checking = false;
16
+ let selectionMode = "dropdown";
17
+ let selectedToken = null;
18
+ const builder = useRaindexOrderBuilder();
12
19
  onMount(async () => {
13
20
  try {
14
- let result = await gui.getTokenInfo(token.key);
21
+ let result = await builder.getTokenInfo(token.key);
15
22
  if (result.error) {
16
23
  throw new Error(result.error.msg);
17
24
  }
18
25
  tokenInfo = result.value;
19
- if (tokenInfo?.address) {
20
- inputValue = tokenInfo.address;
26
+ if (result.value.address) {
27
+ inputValue = result.value.address;
28
+ onSelectTokenSelect(token.key);
21
29
  }
22
30
  } catch {
23
31
  }
24
32
  });
33
+ $: if (tokenInfo?.address && inputValue === null) {
34
+ inputValue = tokenInfo.address;
35
+ }
36
+ function setMode(mode) {
37
+ selectionMode = mode;
38
+ error = "";
39
+ if (mode === "custom") {
40
+ selectedToken = null;
41
+ tokenInfo = null;
42
+ inputValue = "";
43
+ error = "";
44
+ clearTokenSelection();
45
+ }
46
+ }
47
+ function handleTokenSelect(token2) {
48
+ selectedToken = token2;
49
+ inputValue = token2.address;
50
+ saveTokenSelection(token2.address);
51
+ }
52
+ async function saveTokenSelection(address) {
53
+ checking = true;
54
+ error = "";
55
+ try {
56
+ await builder.setSelectToken(token.key, address);
57
+ await getInfoForSelectedToken();
58
+ } catch (e) {
59
+ const errorMessage = e.message || "Invalid token address.";
60
+ error = errorMessage;
61
+ } finally {
62
+ checking = false;
63
+ onSelectTokenSelect(token.key);
64
+ }
65
+ }
66
+ function clearTokenSelection() {
67
+ builder.unsetSelectToken(token.key);
68
+ onSelectTokenSelect(token.key);
69
+ }
25
70
  async function getInfoForSelectedToken() {
26
71
  error = "";
27
72
  try {
28
- let result = await gui.getTokenInfo(token.key);
73
+ let result = await builder.getTokenInfo(token.key);
29
74
  if (result.error) {
30
75
  throw new Error(result.error.msg);
31
76
  }
@@ -36,61 +81,93 @@ async function getInfoForSelectedToken() {
36
81
  }
37
82
  }
38
83
  async function handleInput(event) {
39
- tokenInfo = null;
40
84
  const currentTarget = event.currentTarget;
41
85
  if (currentTarget instanceof HTMLInputElement) {
42
86
  inputValue = currentTarget.value;
87
+ if (tokenInfo && tokenInfo.address.toLowerCase() !== inputValue.toLowerCase()) {
88
+ tokenInfo = null;
89
+ selectedToken = null;
90
+ }
43
91
  if (!inputValue) {
44
92
  error = "";
93
+ tokenInfo = null;
94
+ selectedToken = null;
95
+ return;
45
96
  }
46
- checking = true;
47
- try {
48
- await gui.saveSelectToken(token.key, currentTarget.value);
49
- await getInfoForSelectedToken();
50
- } catch (e) {
51
- const errorMessage = e.message ? e.message : "Invalid token address.";
52
- error = errorMessage;
53
- }
97
+ saveTokenSelection(inputValue);
54
98
  }
55
- checking = false;
56
- onSelectTokenSelect();
57
99
  }
58
100
  </script>
59
101
 
60
- <div class="flex w-full flex-col">
61
- <div class="flex flex-col gap-2">
62
- <div class="flex flex-col justify-start gap-4 lg:flex-row lg:items-center lg:justify-between">
63
- {#if token.name || token.description}
64
- <div class="flex flex-col">
65
- {#if token.name}
66
- <h1 class="break-words text-xl font-semibold text-gray-900 lg:text-xl dark:text-white">
67
- {token.name}
68
- </h1>
69
- {/if}
70
- {#if token.description}
71
- <p class="text-sm font-light text-gray-600 lg:text-base dark:text-gray-400">
72
- {token.description}
73
- </p>
74
- {/if}
75
- </div>
76
- {/if}
77
- {#if checking}
78
- <div class="flex h-5 flex-row items-center gap-2">
79
- <Spinner class="h-5 w-5" />
80
- <span>Checking...</span>
81
- </div>
82
- {:else if tokenInfo}
83
- <div class="flex h-5 flex-row items-center gap-2">
84
- <CheckCircleSolid class="h-5 w-5" color="green" />
85
- <span>{tokenInfo.name}</span>
86
- </div>
87
- {:else if error}
88
- <div class="flex h-5 flex-row items-center gap-2" data-testid="error">
89
- <CloseCircleSolid class="h-5 w-5" color="red" />
90
- <span>{error}</span>
91
- </div>
92
- {/if}
102
+ <div class="token-selection-container flex w-full flex-col gap-4">
103
+ <div class="token-header">
104
+ {#if token.name || token.description}
105
+ <div class="flex flex-col">
106
+ {#if token.name}
107
+ <h1 class="break-words text-xl font-semibold text-gray-900 lg:text-xl dark:text-white">
108
+ {token.name}
109
+ </h1>
110
+ {/if}
111
+ {#if token.description}
112
+ <p class="text-sm font-light text-gray-600 lg:text-base dark:text-gray-400">
113
+ {token.description}
114
+ </p>
115
+ {/if}
116
+ </div>
117
+ {/if}
118
+ </div>
119
+
120
+ <div class="selection-mode flex gap-2">
121
+ <ButtonSelectOption
122
+ active={selectionMode === 'dropdown'}
123
+ buttonText="Select from list"
124
+ clickHandler={() => setMode('dropdown')}
125
+ dataTestId="dropdown-mode-button"
126
+ />
127
+ <ButtonSelectOption
128
+ active={selectionMode === 'custom'}
129
+ buttonText="Custom address"
130
+ clickHandler={() => setMode('custom')}
131
+ dataTestId="custom-mode-button"
132
+ />
133
+ </div>
134
+
135
+ {#if selectionMode === 'dropdown'}
136
+ <TokenSelectionModal {selectedToken} onSelect={handleTokenSelect} />
137
+ {/if}
138
+
139
+ {#if selectionMode === 'custom'}
140
+ <div class="custom-input">
141
+ <Input
142
+ type="text"
143
+ size="lg"
144
+ placeholder="Enter token address (0x...)"
145
+ bind:value={inputValue}
146
+ on:input={handleInput}
147
+ />
93
148
  </div>
94
- <Input type="text" size="lg" on:input={handleInput} bind:value={inputValue} />
149
+ {/if}
150
+
151
+ <div class="token-status">
152
+ {#if checking}
153
+ <div class="flex h-5 flex-row items-center gap-2">
154
+ <Spinner class="h-5 w-5" />
155
+ <span>Checking...</span>
156
+ </div>
157
+ {:else if tokenInfo}
158
+ <div
159
+ class="flex h-5 flex-row items-center gap-2"
160
+ data-testid={`select-token-success-${token.key}`}
161
+ >
162
+ <CheckCircleSolid class="h-5 w-5" color="green" />
163
+ <span>{tokenInfo.name}</span>
164
+ <TokenBalanceComponent tokenBalance={tokenBalances.get(token.key)} />
165
+ </div>
166
+ {:else if error}
167
+ <div class="flex h-5 flex-row items-center gap-2" data-testid="error">
168
+ <CloseCircleSolid class="h-5 w-5" color="red" />
169
+ <span>{error}</span>
170
+ </div>
171
+ {/if}
95
172
  </div>
96
173
  </div>
@@ -1,10 +1,11 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { DotrainOrderGui, GuiSelectTokensCfg } from '@rainlanguage/orderbook/js_api';
2
+ import type { OrderBuilderSelectTokensCfg } from '@rainlanguage/raindex';
3
+ import type { TokenBalance } from '../../types/tokenBalance';
3
4
  declare const __propDef: {
4
5
  props: {
5
- token: GuiSelectTokensCfg;
6
- gui: DotrainOrderGui;
7
- onSelectTokenSelect: () => void;
6
+ token: OrderBuilderSelectTokensCfg;
7
+ onSelectTokenSelect: (key: string) => void;
8
+ tokenBalances?: Map<string, TokenBalance>;
8
9
  };
9
10
  events: {
10
11
  [evt: string]: CustomEvent<any>;
@@ -0,0 +1,19 @@
1
+ <script>import { Spinner } from "flowbite-svelte";
2
+ export let tokenBalance;
3
+ </script>
4
+
5
+ {#if tokenBalance}
6
+ {#if tokenBalance.loading}
7
+ <div class="flex items-center gap-2 text-sm text-gray-600 dark:text-gray-400">
8
+ <Spinner class="h-4 w-4" />
9
+ </div>
10
+ {:else if !tokenBalance.error}
11
+ <div class="text-sm text-gray-600 dark:text-gray-400">
12
+ Balance: {tokenBalance.value.formattedBalance}
13
+ </div>
14
+ {:else if tokenBalance.error}
15
+ <div class="text-sm text-red-600 dark:text-red-400">
16
+ {tokenBalance.error}
17
+ </div>
18
+ {/if}
19
+ {/if}
@@ -0,0 +1,19 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { TokenBalance } from '../../types/tokenBalance';
3
+ declare const __propDef: {
4
+ props: {
5
+ tokenBalance: TokenBalance | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ exports?: {} | undefined;
12
+ bindings?: string | undefined;
13
+ };
14
+ export type TokenBalanceProps = typeof __propDef.props;
15
+ export type TokenBalanceEvents = typeof __propDef.events;
16
+ export type TokenBalanceSlots = typeof __propDef.slots;
17
+ export default class TokenBalance extends SvelteComponent<TokenBalanceProps, TokenBalanceEvents, TokenBalanceSlots> {
18
+ }
19
+ export {};