@rainlanguage/ui-components 0.0.1-alpha.21 → 0.0.1-alpha.210

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 (260) hide show
  1. package/dist/__fixtures__/settings.yaml +125 -0
  2. package/dist/__mocks__/CodeMirrorRainlang.svelte +4 -0
  3. package/dist/__mocks__/CodeMirrorRainlang.svelte.d.ts +18 -0
  4. package/dist/__mocks__/MockComponent.svelte +4 -0
  5. package/dist/__mocks__/MockComponent.svelte.d.ts +3 -1
  6. package/dist/__mocks__/stores.d.ts +47 -33
  7. package/dist/__mocks__/stores.js +61 -38
  8. package/dist/components/ButtonLoading.svelte +1 -1
  9. package/dist/components/ButtonVaultLink.svelte +11 -11
  10. package/dist/components/ButtonVaultLink.svelte.d.ts +4 -3
  11. package/dist/components/CheckboxInactiveOrdersVault.svelte +20 -0
  12. package/dist/components/CheckboxInactiveOrdersVault.svelte.d.ts +19 -0
  13. package/dist/components/CheckboxMyItemsOnly.svelte +3 -2
  14. package/dist/components/CheckboxMyItemsOnly.svelte.d.ts +2 -3
  15. package/dist/components/CheckboxZeroBalanceVault.svelte.d.ts +2 -2
  16. package/dist/components/CodeMirrorDotrain.svelte +4 -0
  17. package/dist/components/CodeMirrorDotrain.svelte.d.ts +1 -0
  18. package/dist/components/CodeMirrorRainlang.svelte +3 -12
  19. package/dist/components/CodeMirrorRainlang.svelte.d.ts +2 -2
  20. package/dist/components/EditableSpan.svelte +3 -14
  21. package/dist/components/EditableSpan.svelte.d.ts +0 -1
  22. package/dist/components/Hash.svelte +3 -3
  23. package/dist/components/License.svelte +5 -4
  24. package/dist/components/ListViewOrderbookFilters.svelte +45 -23
  25. package/dist/components/ListViewOrderbookFilters.svelte.d.ts +27 -22
  26. package/dist/components/LocalDbStatusBadge.svelte +27 -0
  27. package/dist/components/LocalDbStatusBadge.svelte.d.ts +19 -0
  28. package/dist/components/LocalDbStatusCard.svelte +40 -0
  29. package/dist/components/LocalDbStatusCard.svelte.d.ts +20 -0
  30. package/dist/components/LocalDbStatusModal.svelte +103 -0
  31. package/dist/components/LocalDbStatusModal.svelte.d.ts +21 -0
  32. package/dist/components/OrderOrVaultHash.svelte +12 -12
  33. package/dist/components/OrderOrVaultHash.svelte.d.ts +4 -4
  34. package/dist/components/PageHeader.svelte +1 -1
  35. package/dist/components/TanstackAppTable.svelte +179 -28
  36. package/dist/components/TanstackAppTable.svelte.d.ts +14 -8
  37. package/dist/components/ToastDetail.svelte +42 -0
  38. package/dist/components/ToastDetail.svelte.d.ts +20 -0
  39. package/dist/components/Tooltip.svelte +8 -0
  40. package/dist/components/Tooltip.svelte.d.ts +21 -0
  41. package/dist/components/VaultBalanceChangeTypeFilter.svelte +23 -0
  42. package/dist/components/VaultBalanceChangeTypeFilter.svelte.d.ts +19 -0
  43. package/dist/components/VaultCard.svelte +18 -0
  44. package/dist/components/VaultCard.svelte.d.ts +19 -0
  45. package/dist/components/charts/LightweightChart.svelte +1 -1
  46. package/dist/components/charts/LightweightChart.svelte.d.ts +5 -5
  47. package/dist/components/charts/OrderTradesChart.svelte +300 -28
  48. package/dist/components/charts/OrderTradesChart.svelte.d.ts +4 -4
  49. package/dist/components/charts/TanstackLightweightChartLine.svelte +5 -9
  50. package/dist/components/charts/VaultBalanceChart.svelte +8 -26
  51. package/dist/components/charts/VaultBalanceChart.svelte.d.ts +1 -7
  52. package/dist/components/charts/transformAndSortData.d.ts +24 -0
  53. package/dist/components/charts/transformAndSortData.js +111 -0
  54. package/dist/components/checkbox/CheckboxActiveOrders.svelte +11 -0
  55. package/dist/components/checkbox/CheckboxActiveOrders.svelte.d.ts +19 -0
  56. package/dist/components/deployment/ButtonSelectOption.svelte +2 -0
  57. package/dist/components/deployment/ButtonSelectOption.svelte.d.ts +1 -0
  58. package/dist/components/deployment/ComposedRainlangModal.svelte +2 -1
  59. package/dist/components/deployment/ComposedRainlangModal.svelte.d.ts +1 -4
  60. package/dist/components/deployment/DeploymentSectionHeader.svelte +7 -4
  61. package/dist/components/deployment/DeploymentSteps.svelte +209 -216
  62. package/dist/components/deployment/DeploymentSteps.svelte.d.ts +6 -12
  63. package/dist/components/deployment/DeploymentTile.svelte +2 -2
  64. package/dist/components/deployment/DeploymentTile.svelte.d.ts +1 -1
  65. package/dist/components/deployment/DeploymentsSection.svelte +15 -22
  66. package/dist/components/deployment/DeploymentsSection.svelte.d.ts +3 -2
  67. package/dist/components/deployment/DepositInput.svelte +8 -10
  68. package/dist/components/deployment/DepositInput.svelte.d.ts +1 -2
  69. package/dist/components/deployment/DisclaimerModal.svelte +6 -7
  70. package/dist/components/deployment/FieldDefinitionInput.svelte +7 -11
  71. package/dist/components/deployment/FieldDefinitionInput.svelte.d.ts +1 -2
  72. package/dist/components/deployment/InvalidOrdersSection.svelte +17 -0
  73. package/dist/components/deployment/InvalidOrdersSection.svelte.d.ts +19 -0
  74. package/dist/components/deployment/{StrategyPage.svelte → OrderPage.svelte} +15 -24
  75. package/dist/components/deployment/OrderPage.svelte.d.ts +21 -0
  76. package/dist/components/deployment/SelectToken.svelte +125 -48
  77. package/dist/components/deployment/SelectToken.svelte.d.ts +4 -3
  78. package/dist/components/deployment/TokenBalance.svelte +19 -0
  79. package/dist/components/deployment/TokenBalance.svelte.d.ts +19 -0
  80. package/dist/components/deployment/TokenIOInput.svelte +25 -15
  81. package/dist/components/deployment/TokenIOInput.svelte.d.ts +3 -3
  82. package/dist/components/deployment/TokenSelectionModal.svelte +148 -0
  83. package/dist/components/deployment/TokenSelectionModal.svelte.d.ts +20 -0
  84. package/dist/components/deployment/{ValidStrategiesSection.svelte → ValidOrdersSection.svelte} +7 -7
  85. package/dist/components/deployment/ValidOrdersSection.svelte.d.ts +19 -0
  86. package/dist/components/deployment/VaultIdInformation.svelte +17 -0
  87. package/dist/components/deployment/VaultIdInformation.svelte.d.ts +21 -0
  88. package/dist/components/detail/OrderDetail.svelte +184 -80
  89. package/dist/components/detail/OrderDetail.svelte.d.ts +21 -15
  90. package/dist/components/detail/TanstackOrderQuote.svelte +92 -46
  91. package/dist/components/detail/TanstackOrderQuote.svelte.d.ts +14 -16
  92. package/dist/components/detail/VaultDetail.svelte +78 -77
  93. package/dist/components/detail/VaultDetail.svelte.d.ts +12 -18
  94. package/dist/components/dropdown/DropdownActiveNetworks.svelte +44 -0
  95. package/dist/components/dropdown/DropdownActiveNetworks.svelte.d.ts +19 -0
  96. package/dist/components/dropdown/DropdownCheckbox.svelte +4 -4
  97. package/dist/components/dropdown/DropdownOrderListAccounts.svelte +5 -2
  98. package/dist/components/dropdown/DropdownOrderListAccounts.svelte.d.ts +2 -3
  99. package/dist/components/dropdown/DropdownOrderbooksFilter.svelte +172 -0
  100. package/dist/components/dropdown/DropdownOrderbooksFilter.svelte.d.ts +25 -0
  101. package/dist/components/dropdown/DropdownTokensFilter.svelte +152 -0
  102. package/dist/components/dropdown/DropdownTokensFilter.svelte.d.ts +28 -0
  103. package/dist/components/icon/Refresh.svelte +2 -1
  104. package/dist/components/icon/Refresh.svelte.d.ts +1 -0
  105. package/dist/components/input/InputOrderHash.svelte +1 -1
  106. package/dist/components/input/InputOrderHash.svelte.d.ts +3 -3
  107. package/dist/components/input/InputRegistryUrl.svelte +36 -14
  108. package/dist/components/input/InputToken.svelte +2 -2
  109. package/dist/components/input/InputTokenAmount.svelte +16 -21
  110. package/dist/components/input/InputTokenAmount.svelte.d.ts +3 -3
  111. package/dist/components/tables/OrderAPY.svelte +6 -33
  112. package/dist/components/tables/OrderAPY.svelte.d.ts +1 -4
  113. package/dist/components/tables/OrderTradesListTable.svelte +84 -81
  114. package/dist/components/tables/OrderTradesListTable.svelte.d.ts +4 -4
  115. package/dist/components/tables/OrderVaultsVolTable.svelte +17 -22
  116. package/dist/components/tables/OrderVaultsVolTable.svelte.d.ts +2 -2
  117. package/dist/components/tables/OrdersListTable.svelte +200 -108
  118. package/dist/components/tables/OrdersListTable.svelte.d.ts +17 -21
  119. package/dist/components/tables/VaultBalanceChangesTable.svelte +83 -43
  120. package/dist/components/tables/VaultBalanceChangesTable.svelte.d.ts +13 -11
  121. package/dist/components/tables/VaultsListTable.svelte +268 -145
  122. package/dist/components/tables/VaultsListTable.svelte.d.ts +24 -32
  123. package/dist/components/transactions/FixedBottomTransaction.svelte +63 -0
  124. package/dist/components/transactions/FixedBottomTransaction.svelte.d.ts +16 -0
  125. package/dist/components/transactions/TransactionDetail.svelte +31 -0
  126. package/dist/components/transactions/TransactionDetail.svelte.d.ts +20 -0
  127. package/dist/components/transactions/TransactionList.svelte +17 -0
  128. package/dist/components/transactions/TransactionList.svelte.d.ts +16 -0
  129. package/dist/components/transactions/getStatusEmoji.d.ts +2 -0
  130. package/dist/components/transactions/getStatusEmoji.js +20 -0
  131. package/dist/components/wallet/WalletConnect.svelte +5 -4
  132. package/dist/components/wallet/WalletConnect.svelte.d.ts +0 -1
  133. package/dist/consts.d.ts +1 -0
  134. package/dist/consts.js +1 -0
  135. package/dist/errors/DeploymentStepsError.d.ts +8 -2
  136. package/dist/errors/DeploymentStepsError.js +7 -1
  137. package/dist/hooks/useGui.d.ts +1 -1
  138. package/dist/hooks/useGui.js +1 -1
  139. package/dist/hooks/useLocalDb.d.ts +3 -0
  140. package/dist/hooks/useLocalDb.js +10 -0
  141. package/dist/hooks/useRaindexClient.d.ts +3 -0
  142. package/dist/hooks/useRaindexClient.js +11 -0
  143. package/dist/index.d.ts +42 -19
  144. package/dist/index.js +41 -16
  145. package/dist/models/Transaction.d.ts +75 -0
  146. package/dist/models/Transaction.js +100 -0
  147. package/dist/providers/GuiProvider.svelte +1 -1
  148. package/dist/providers/GuiProvider.svelte.d.ts +1 -1
  149. package/dist/providers/LocalDbProvider.svelte +8 -0
  150. package/dist/providers/LocalDbProvider.svelte.d.ts +21 -0
  151. package/dist/providers/RaindexClientProvider.svelte +8 -0
  152. package/dist/providers/RaindexClientProvider.svelte.d.ts +21 -0
  153. package/dist/providers/dotrainRegistry/DotrainRegistryProvider.svelte +8 -0
  154. package/dist/providers/dotrainRegistry/DotrainRegistryProvider.svelte.d.ts +24 -0
  155. package/dist/providers/dotrainRegistry/context.d.ts +9 -0
  156. package/dist/providers/dotrainRegistry/context.js +40 -0
  157. package/dist/providers/dotrainRegistry/useDotrainRegistry.d.ts +5 -0
  158. package/dist/providers/dotrainRegistry/useDotrainRegistry.js +35 -0
  159. package/dist/providers/registry/RegistryManager.d.ts +65 -0
  160. package/dist/providers/registry/RegistryManager.js +133 -0
  161. package/dist/providers/registry/RegistryProvider.svelte +6 -0
  162. package/dist/providers/registry/RegistryProvider.svelte.d.ts +21 -0
  163. package/dist/providers/registry/context.d.ts +10 -0
  164. package/dist/providers/registry/context.js +46 -0
  165. package/dist/providers/registry/useRegistry.d.ts +7 -0
  166. package/dist/providers/registry/useRegistry.js +29 -0
  167. package/dist/providers/toasts/ToastProvider.svelte +17 -0
  168. package/dist/providers/toasts/ToastProvider.svelte.d.ts +18 -0
  169. package/dist/providers/toasts/context.d.ts +14 -0
  170. package/dist/providers/toasts/context.js +22 -0
  171. package/dist/providers/toasts/useToasts.d.ts +16 -0
  172. package/dist/providers/toasts/useToasts.js +63 -0
  173. package/dist/providers/transactions/TransactionManager.d.ts +235 -0
  174. package/dist/providers/transactions/TransactionManager.js +509 -0
  175. package/dist/providers/transactions/TransactionProvider.svelte +11 -0
  176. package/dist/providers/transactions/TransactionProvider.svelte.d.ts +24 -0
  177. package/dist/providers/transactions/context.d.ts +19 -0
  178. package/dist/providers/transactions/context.js +28 -0
  179. package/dist/providers/transactions/useTransactions.d.ts +13 -0
  180. package/dist/providers/transactions/useTransactions.js +18 -0
  181. package/dist/providers/wallet/WalletProvider.svelte +7 -0
  182. package/dist/providers/wallet/WalletProvider.svelte.d.ts +21 -0
  183. package/dist/providers/wallet/context.d.ts +10 -0
  184. package/dist/providers/wallet/context.js +47 -0
  185. package/dist/providers/wallet/useAccount.d.ts +8 -0
  186. package/dist/providers/wallet/useAccount.js +148 -0
  187. package/dist/queries/keys.d.ts +1 -0
  188. package/dist/queries/keys.js +1 -0
  189. package/dist/queries/queryClient.d.ts +1 -1
  190. package/dist/queries/queryClient.js +11 -6
  191. package/dist/services/awaitTransactionIndexing.d.ts +107 -0
  192. package/dist/services/awaitTransactionIndexing.js +58 -0
  193. package/dist/services/getExplorerLink.d.ts +1 -1
  194. package/dist/services/getExplorerLink.js +2 -4
  195. package/dist/services/handleShareChoices.d.ts +2 -2
  196. package/dist/services/handleShareChoices.js +7 -2
  197. package/dist/services/historicalOrderCharts.d.ts +2 -2
  198. package/dist/services/historicalOrderCharts.js +267 -333
  199. package/dist/services/index.d.ts +2 -1
  200. package/dist/services/index.js +2 -1
  201. package/dist/services/loadRegistryUrl.d.ts +2 -0
  202. package/dist/services/loadRegistryUrl.js +22 -0
  203. package/dist/services/pairTradesChartData.d.ts +47 -0
  204. package/dist/services/pairTradesChartData.js +190 -0
  205. package/dist/services/registry.d.ts +5 -5
  206. package/dist/services/registry.js +8 -208
  207. package/dist/services/time.d.ts +12 -0
  208. package/dist/services/time.js +88 -6
  209. package/dist/storesGeneric/cachedWritableStore.d.ts +57 -0
  210. package/dist/storesGeneric/cachedWritableStore.js +93 -0
  211. package/dist/types/account.d.ts +3 -0
  212. package/dist/types/appStores.d.ts +9 -14
  213. package/dist/types/modal.d.ts +26 -14
  214. package/dist/types/{strategy.d.ts → order.d.ts} +3 -3
  215. package/dist/types/order.js +1 -0
  216. package/dist/types/toast.d.ts +11 -0
  217. package/dist/types/toast.js +1 -0
  218. package/dist/types/tokenBalance.d.ts +6 -0
  219. package/dist/types/tokenBalance.js +1 -0
  220. package/dist/types/transaction.d.ts +66 -21
  221. package/dist/types/transaction.js +31 -1
  222. package/dist/utils/configHelpers.d.ts +4 -0
  223. package/dist/utils/configHelpers.js +21 -0
  224. package/dist/utils/constructHashLink.d.ts +24 -0
  225. package/dist/utils/constructHashLink.js +115 -0
  226. package/dist/utils/getNetworkName.d.ts +1 -0
  227. package/dist/utils/getNetworkName.js +13 -0
  228. package/dist/utils/number.d.ts +0 -7
  229. package/dist/utils/number.js +0 -27
  230. package/dist/utils/tokens.d.ts +2 -0
  231. package/dist/utils/tokens.js +3 -0
  232. package/dist/utils/vaultBalanceChangeLabels.d.ts +4 -0
  233. package/dist/utils/vaultBalanceChangeLabels.js +18 -0
  234. package/package.json +39 -34
  235. package/dist/__fixtures__/orderDetail.d.ts +0 -99
  236. package/dist/__fixtures__/orderDetail.js +0 -204
  237. package/dist/__fixtures__/settings-12-11-24.json +0 -160
  238. package/dist/__mocks__/mockTransactionStore.d.ts +0 -22
  239. package/dist/__mocks__/mockTransactionStore.js +0 -56
  240. package/dist/__mocks__/settings.d.ts +0 -3
  241. package/dist/__mocks__/settings.js +0 -37
  242. package/dist/components/deployment/InvalidStrategiesSection.svelte +0 -19
  243. package/dist/components/deployment/InvalidStrategiesSection.svelte.d.ts +0 -19
  244. package/dist/components/deployment/StrategyPage.svelte.d.ts +0 -19
  245. package/dist/components/deployment/ValidStrategiesSection.svelte.d.ts +0 -19
  246. package/dist/components/deployment/getDeploymentTransactionArgs.d.ts +0 -17
  247. package/dist/components/deployment/getDeploymentTransactionArgs.js +0 -28
  248. package/dist/components/detail/DepositOrWithdrawButtons.svelte +0 -44
  249. package/dist/components/detail/DepositOrWithdrawButtons.svelte.d.ts +0 -26
  250. package/dist/components/dropdown/DropdownActiveSubgraphs.svelte +0 -38
  251. package/dist/components/dropdown/DropdownActiveSubgraphs.svelte.d.ts +0 -21
  252. package/dist/components/dropdown/DropdownOrderStatus.svelte +0 -31
  253. package/dist/components/dropdown/DropdownOrderStatus.svelte.d.ts +0 -19
  254. package/dist/stores/transactionStore.d.ts +0 -98
  255. package/dist/stores/transactionStore.js +0 -303
  256. package/dist/utils/time.d.ts +0 -12
  257. package/dist/utils/time.js +0 -27
  258. package/dist/utils/vault.d.ts +0 -2
  259. package/dist/utils/vault.js +0 -29
  260. /package/dist/types/{strategy.js → account.js} +0 -0
@@ -1,9 +1,8 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import { DotrainOrderGui, type GuiDepositCfg } from '@rainlanguage/orderbook/js_api';
2
+ import { type GuiDepositCfg } from '@rainlanguage/orderbook';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  deposit: GuiDepositCfg;
6
- gui: DotrainOrderGui;
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,12 +1,12 @@
1
1
  <script>import { Input } from "flowbite-svelte";
2
2
  import {
3
- DotrainOrderGui
4
- } from "@rainlanguage/orderbook/js_api";
3
+ } from "@rainlanguage/orderbook";
5
4
  import ButtonSelectOption from "./ButtonSelectOption.svelte";
6
5
  import DeploymentSectionHeader from "./DeploymentSectionHeader.svelte";
7
6
  import { onMount } from "svelte";
7
+ import { useGui } from "../../hooks/useGui";
8
8
  export let fieldDefinition;
9
- export let gui;
9
+ const gui = useGui();
10
10
  let currentValue;
11
11
  let inputValue = currentValue?.value ? currentValue?.value : fieldDefinition.default || null;
12
12
  onMount(() => {
@@ -23,10 +23,7 @@ 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
- });
26
+ gui.setFieldValue(fieldDefinition.binding, inputValue);
30
27
  const result = gui.getFieldValue(fieldDefinition.binding);
31
28
  if (result.error) {
32
29
  throw new Error(result.error.msg);
@@ -35,10 +32,7 @@ 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
- });
35
+ gui.setFieldValue(fieldDefinition.binding, inputValue);
42
36
  const result = gui.getFieldValue(fieldDefinition.binding);
43
37
  if (result.error) {
44
38
  throw new Error(result.error.msg);
@@ -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 GuiFieldDefinitionCfg } from '@rainlanguage/orderbook';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  fieldDefinition: GuiFieldDefinitionCfg;
6
- gui: DotrainOrderGui;
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 registry</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/orderbook';
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,13 +2,20 @@
2
2
  import { CheckCircleSolid, CloseCircleSolid } from "flowbite-svelte-icons";
3
3
  import { Spinner } from "flowbite-svelte";
4
4
  import { onMount } from "svelte";
5
+ import { useGui } from "../../hooks/useGui";
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 gui = useGui();
12
19
  onMount(async () => {
13
20
  try {
14
21
  let result = await gui.getTokenInfo(token.key);
@@ -16,12 +23,50 @@ onMount(async () => {
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 gui.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
+ gui.unsetSelectToken(token.key);
68
+ onSelectTokenSelect(token.key);
69
+ }
25
70
  async function getInfoForSelectedToken() {
26
71
  error = "";
27
72
  try {
@@ -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 { GuiSelectTokensCfg } from '@rainlanguage/orderbook';
3
+ import type { TokenBalance } from '../../types/tokenBalance';
3
4
  declare const __propDef: {
4
5
  props: {
5
6
  token: GuiSelectTokensCfg;
6
- gui: DotrainOrderGui;
7
- onSelectTokenSelect: () => void;
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 {};
@@ -1,26 +1,27 @@
1
1
  <script>import { Input } from "flowbite-svelte";
2
- import {
3
- } from "@rainlanguage/orderbook/js_api";
4
- import DeploymentSectionHeader from "./DeploymentSectionHeader.svelte";
2
+ import {} from "@rainlanguage/orderbook";
5
3
  import { onMount } from "svelte";
6
- export let i;
4
+ import { useGui } from "../../hooks/useGui";
5
+ import VaultIdInformation from "./VaultIdInformation.svelte";
6
+ const gui = useGui();
7
7
  export let label;
8
8
  export let vault;
9
- export let gui;
9
+ export let tokenBalances = /* @__PURE__ */ new Map();
10
10
  let tokenInfo = null;
11
11
  let inputValue = "";
12
12
  let error = "";
13
13
  onMount(() => {
14
+ if (!vault.token?.key) return;
14
15
  const result = gui.getVaultIds();
15
16
  if (result.error) {
16
17
  error = result.error.msg;
17
18
  return;
18
19
  }
19
20
  const vaultIds = result.value;
20
- if (label === "Input") {
21
- inputValue = vaultIds.get("input")?.[i];
22
- } else if (label === "Output") {
23
- inputValue = vaultIds.get("output")?.[i];
21
+ const vaultMap = vaultIds.get(label.toLowerCase());
22
+ if (vaultMap) {
23
+ const vaultId = vaultMap.get(vault.token.key);
24
+ inputValue = vaultId || "";
24
25
  }
25
26
  });
26
27
  const handleGetTokenInfo = async () => {
@@ -38,10 +39,13 @@ const handleGetTokenInfo = async () => {
38
39
  }
39
40
  };
40
41
  const handleInput = async () => {
41
- const isInput = label === "Input";
42
+ if (!vault.token) {
43
+ error = "Vault token is not set.";
44
+ return;
45
+ }
42
46
  error = "";
43
47
  try {
44
- gui?.setVaultId(isInput, i, inputValue);
48
+ gui.setVaultId(label.toLowerCase(), vault.token.key, inputValue);
45
49
  } catch (e) {
46
50
  const errorMessage = e.message ? e.message : "Error setting vault ID.";
47
51
  error = errorMessage;
@@ -53,12 +57,18 @@ $: if (vault.token?.key) {
53
57
  </script>
54
58
 
55
59
  <div class="flex w-full flex-col gap-6">
56
- <DeploymentSectionHeader
57
- title={`${label} ${i + 1} ${tokenInfo?.symbol ? `(${tokenInfo.symbol})` : ''}`}
58
- description={`${tokenInfo?.symbol} vault ID`}
59
- />
60
+ <div class="flex w-full flex-col gap-2">
61
+ <div class="flex items-center gap-2">
62
+ <VaultIdInformation
63
+ title={`${label} ${tokenInfo?.symbol ? `(${tokenInfo.symbol})` : ''}`}
64
+ description={`${tokenInfo?.symbol || 'Token'} vault ID`}
65
+ tokenBalance={tokenBalances.get(vault.token?.key || '')}
66
+ />
67
+ </div>
68
+ </div>
60
69
  <div class="flex flex-col gap-2">
61
70
  <Input
71
+ data-testid="vault-id-input"
62
72
  size="lg"
63
73
  type="text"
64
74
  placeholder="Enter vault ID"
@@ -1,11 +1,11 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import { type OrderIOCfg, type DotrainOrderGui } from '@rainlanguage/orderbook/js_api';
2
+ import { type OrderIOCfg } from '@rainlanguage/orderbook';
3
+ import type { TokenBalance } from '../../types/tokenBalance';
3
4
  declare const __propDef: {
4
5
  props: {
5
- i: number;
6
6
  label: "Input" | "Output";
7
7
  vault: OrderIOCfg;
8
- gui: DotrainOrderGui;
8
+ tokenBalances?: Map<string, TokenBalance>;
9
9
  };
10
10
  events: {
11
11
  [evt: string]: CustomEvent<any>;