@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,15 +1,10 @@
1
1
  <script>import { createEventDispatcher } from "svelte";
2
+ import { PenSolid } from "flowbite-svelte-icons";
2
3
  export let displayValue;
3
- let focussed = false;
4
4
  let textContent;
5
5
  let editableSpan;
6
6
  let dispatch = createEventDispatcher();
7
- const inputFocussed = () => {
8
- focussed = true;
9
- dispatch("focus");
10
- };
11
7
  const inputBlurred = () => {
12
- focussed = false;
13
8
  displayValue = textContent;
14
9
  dispatch("blur", { value: textContent });
15
10
  };
@@ -20,27 +15,21 @@ const handleKeyDown = (event) => {
20
15
  };
21
16
  </script>
22
17
 
23
- <!-- svelte-ignore a11y-click-events-have-key-events -->
24
18
  <!-- svelte-ignore a11y-no-static-element-interactions -->
25
19
  <div
26
20
  data-testid="editableSpanWrapper"
27
- on:click={inputFocussed}
28
- class="flex gap-x-1 border-b-2 border-dotted text-sm text-gray-400 dark:text-gray-400"
21
+ class="flex items-center gap-x-1 border-b-2 border-dotted text-sm text-gray-400 dark:text-gray-400"
29
22
  >
23
+ <PenSolid class="h-3 w-3 cursor-pointer" />
30
24
  <span>Block:</span>
31
25
  <div class="relative">
32
26
  <span
33
27
  data-testid="editableSpan"
34
- class="absolute"
35
- class:opacity-0={!focussed}
36
28
  bind:this={editableSpan}
37
29
  bind:textContent
38
30
  contenteditable="true"
39
31
  on:keydown={handleKeyDown}
40
32
  on:blur={inputBlurred}>{displayValue}</span
41
33
  >
42
- <span data-testid="displayElement" class="pointer-events-none" class:opacity-0={focussed}
43
- >{displayValue}</span
44
- >
45
34
  </div>
46
35
  </div>
@@ -4,7 +4,6 @@ declare const __propDef: {
4
4
  displayValue: string;
5
5
  };
6
6
  events: {
7
- focus: CustomEvent<any>;
8
7
  blur: CustomEvent<any>;
9
8
  } & {
10
9
  [evt: string]: CustomEvent<any>;
@@ -7,7 +7,7 @@
7
7
  })(HashType || {});
8
8
  </script>
9
9
 
10
- <script>import { Tooltip } from "flowbite-svelte";
10
+ <script>import Tooltip from "./Tooltip.svelte";
11
11
  import {
12
12
  WalletOutline,
13
13
  FingerprintOutline,
@@ -60,7 +60,7 @@ function copy(e) {
60
60
  {#if showCopiedMessage}
61
61
  <div
62
62
  out:fade
63
- class="fixed rounded bg-green-500 px-2 py-1 text-xs text-white shadow"
63
+ class="fixed rounded bg-green-500 px-2 py-1 text-xs text-white"
64
64
  style="top: {cursorY + 10}px; left: {cursorX + 10}px"
65
65
  >
66
66
  Copied to clipboard
@@ -68,7 +68,7 @@ function copy(e) {
68
68
  {/if}
69
69
 
70
70
  {#if shorten}
71
- <Tooltip triggeredBy={`#${id}`} class="z-20 whitespace-normal">
71
+ <Tooltip triggeredBy={`#${id}`}>
72
72
  <div class="flex items-center justify-start space-x-2">
73
73
  {#if type === HashType.Wallet}
74
74
  <WalletOutline size="sm" />
@@ -2,19 +2,20 @@
2
2
  import { Heading, Text, BlockQuote } from '@rainlanguage/ui-components';
3
3
  import Markdown from 'svelte-markdown';
4
4
  import { onMount } from 'svelte';
5
+ import { LICENSE_URL } from '../consts';
5
6
 
6
7
  let source = '';
7
8
 
8
9
  onMount(async () => {
9
10
  try {
10
- const response = await fetch(
11
- 'https://raw.githubusercontent.com/rainlanguage/decentralicense/refs/heads/master/README.md'
12
- );
11
+ const response = await fetch(LICENSE_URL);
13
12
  if (response.ok) {
14
13
  source = await response.text();
14
+ } else {
15
+ source = `Failed to fetch license: HTTP ${response.status}`;
15
16
  }
16
17
  } catch {
17
- source = '';
18
+ source = 'Failed to fetch license.';
18
19
  }
19
20
  });
20
21
  </script>
@@ -1,41 +1,51 @@
1
- <script generics="T">import { isEmpty } from "lodash";
2
- import { Alert, Tooltip } from "flowbite-svelte";
3
- import DropdownActiveSubgraphs from "./dropdown/DropdownActiveSubgraphs.svelte";
4
- import DropdownOrderStatus from "./dropdown/DropdownOrderStatus.svelte";
1
+ <script>import { useRaindexClient } from "../hooks/useRaindexClient";
2
+ import DropdownActiveNetworks from "./dropdown/DropdownActiveNetworks.svelte";
3
+ import { page } from "$app/stores";
4
+ import { isEmpty } from "lodash";
5
+ import { Alert } from "flowbite-svelte";
6
+ import Tooltip from "./Tooltip.svelte";
7
+ import CheckboxActiveOrders from "./checkbox/CheckboxActiveOrders.svelte";
5
8
  import DropdownOrderListAccounts from "./dropdown/DropdownOrderListAccounts.svelte";
9
+ import DropdownTokensFilter from "./dropdown/DropdownTokensFilter.svelte";
10
+ import DropdownOrderbooksFilter from "./dropdown/DropdownOrderbooksFilter.svelte";
6
11
  import InputOrderHash from "./input/InputOrderHash.svelte";
7
12
  import CheckboxZeroBalanceVault from "./CheckboxZeroBalanceVault.svelte";
13
+ import CheckboxInactiveOrdersVault from "./CheckboxInactiveOrdersVault.svelte";
8
14
  import CheckboxMyItemsOnly from "./CheckboxMyItemsOnly.svelte";
9
- export let settings;
10
- export let accounts;
15
+ import { useAccount } from "../providers/wallet/useAccount";
11
16
  export let hideZeroBalanceVaults;
17
+ export let hideInactiveOrdersVaults;
12
18
  export let activeAccountsItems;
13
19
  export let showMyItemsOnly;
14
- export let activeSubgraphs;
15
- export let activeOrderStatus;
20
+ export let selectedChainIds;
21
+ export let showInactiveOrders;
16
22
  export let orderHash;
17
- export let isVaultsPage;
18
- export let isOrdersPage;
19
- export let signerAddress;
23
+ export let activeTokens;
24
+ export let selectedTokens;
25
+ export let tokensQuery;
26
+ export let activeOrderbookAddresses;
27
+ export let selectedOrderbookAddresses;
28
+ $: isVaultsPage = $page.url.pathname === "/vaults";
29
+ $: isOrdersPage = $page.url.pathname === "/orders";
30
+ const { account } = useAccount();
31
+ const raindexClient = useRaindexClient();
32
+ $: networks = raindexClient.getAllNetworks();
33
+ $: accounts = raindexClient.getAllAccounts();
20
34
  </script>
21
35
 
22
36
  <div
23
37
  class="grid w-full items-center gap-4 md:flex md:justify-end lg:min-w-[600px]"
24
38
  style="grid-template-columns: repeat(2, minmax(0, 1fr));"
25
39
  >
26
- {#if isEmpty($settings?.networks)}
40
+ {#if networks.error || isEmpty(networks.value)}
27
41
  <Alert color="gray" data-testid="no-networks-alert" class="w-full">
28
42
  No networks added to <a class="underline" href="/settings">settings</a>
29
43
  </Alert>
30
44
  {:else}
31
- {#if $accounts && !Object.values($accounts).length}
45
+ {#if !accounts.error && accounts.value.size === 0}
32
46
  <div class="mt-4 w-full lg:w-auto" data-testid="my-items-only">
33
- <CheckboxMyItemsOnly
34
- context={isVaultsPage ? 'vaults' : 'orders'}
35
- {showMyItemsOnly}
36
- {signerAddress}
37
- />
38
- {#if !$signerAddress}
47
+ <CheckboxMyItemsOnly context={isVaultsPage ? 'vaults' : 'orders'} {showMyItemsOnly} />
48
+ {#if !$account}
39
49
  <Tooltip>Connect a wallet to filter by {isVaultsPage ? 'vault' : 'order'} owner</Tooltip>
40
50
  {/if}
41
51
  </div>
@@ -44,15 +54,27 @@ export let signerAddress;
44
54
  <div class="mt-4 w-full lg:w-auto">
45
55
  <CheckboxZeroBalanceVault {hideZeroBalanceVaults} />
46
56
  </div>
57
+ <div class="mt-4 w-full lg:w-auto">
58
+ <CheckboxInactiveOrdersVault {hideInactiveOrdersVaults} />
59
+ </div>
47
60
  {/if}
48
61
 
49
62
  {#if isOrdersPage}
50
63
  <InputOrderHash {orderHash} />
51
- <DropdownOrderStatus {activeOrderStatus} />
64
+ <div class="mt-4">
65
+ <CheckboxActiveOrders {showInactiveOrders} />
66
+ </div>
52
67
  {/if}
53
- {#if $accounts && Object.values($accounts).length > 0}
54
- <DropdownOrderListAccounts {accounts} {activeAccountsItems} />
68
+ {#if !accounts.error && accounts.value.size > 0}
69
+ <DropdownOrderListAccounts {activeAccountsItems} />
55
70
  {/if}
56
- <DropdownActiveSubgraphs settings={$settings} {activeSubgraphs} />
71
+ <DropdownTokensFilter {tokensQuery} {activeTokens} {selectedTokens} label="Tokens" />
72
+ <DropdownOrderbooksFilter
73
+ {activeOrderbookAddresses}
74
+ {selectedOrderbookAddresses}
75
+ selectedChainIds={$selectedChainIds}
76
+ label="Orderbooks"
77
+ />
78
+ <DropdownActiveNetworks {selectedChainIds} />
57
79
  {/if}
58
80
  </div>
@@ -1,28 +1,33 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { Readable, Writable } from 'svelte/store';
3
- import type { ConfigSource } from '@rainlanguage/orderbook/js_api';
4
- declare class __sveltets_Render<T> {
5
- props(): {
6
- settings: Writable<ConfigSource | undefined>;
7
- accounts: Readable<Record<string, string>> | undefined;
8
- hideZeroBalanceVaults: Writable<boolean>;
9
- activeAccountsItems: Writable<Record<string, string>> | undefined;
10
- showMyItemsOnly: Writable<boolean>;
11
- activeSubgraphs: Writable<Record<string, string>>;
12
- activeOrderStatus: Writable<boolean | undefined>;
13
- orderHash: Writable<string>;
14
- isVaultsPage: boolean;
15
- isOrdersPage: boolean;
16
- signerAddress: Writable<string | null> | undefined;
2
+ import type { QueryObserverResult } from '@tanstack/svelte-query';
3
+ import type { Readable } from 'svelte/store';
4
+ import type { Address, RaindexVaultToken } from '@rainlanguage/orderbook';
5
+ import type { AppStoresInterface } from '../types/appStores';
6
+ declare const __propDef: {
7
+ props: {
8
+ hideZeroBalanceVaults: AppStoresInterface["hideZeroBalanceVaults"];
9
+ hideInactiveOrdersVaults: AppStoresInterface["hideInactiveOrdersVaults"];
10
+ activeAccountsItems: AppStoresInterface["activeAccountsItems"];
11
+ showMyItemsOnly: AppStoresInterface["showMyItemsOnly"];
12
+ selectedChainIds: AppStoresInterface["selectedChainIds"];
13
+ showInactiveOrders: AppStoresInterface["showInactiveOrders"];
14
+ orderHash: AppStoresInterface["orderHash"];
15
+ activeTokens: AppStoresInterface["activeTokens"];
16
+ selectedTokens: Address[];
17
+ tokensQuery: Readable<QueryObserverResult<RaindexVaultToken[], Error>>;
18
+ activeOrderbookAddresses: AppStoresInterface["activeOrderbookAddresses"];
19
+ selectedOrderbookAddresses: Address[];
17
20
  };
18
- events(): {} & {
21
+ events: {
19
22
  [evt: string]: CustomEvent<any>;
20
23
  };
21
- slots(): {};
22
- }
23
- export type ListViewOrderbookFiltersProps<T> = ReturnType<__sveltets_Render<T>['props']>;
24
- export type ListViewOrderbookFiltersEvents<T> = ReturnType<__sveltets_Render<T>['events']>;
25
- export type ListViewOrderbookFiltersSlots<T> = ReturnType<__sveltets_Render<T>['slots']>;
26
- export default class ListViewOrderbookFilters<T> extends SvelteComponent<ListViewOrderbookFiltersProps<T>, ListViewOrderbookFiltersEvents<T>, ListViewOrderbookFiltersSlots<T>> {
24
+ slots: {};
25
+ exports?: {} | undefined;
26
+ bindings?: string | undefined;
27
+ };
28
+ export type ListViewOrderbookFiltersProps = typeof __propDef.props;
29
+ export type ListViewOrderbookFiltersEvents = typeof __propDef.events;
30
+ export type ListViewOrderbookFiltersSlots = typeof __propDef.slots;
31
+ export default class ListViewOrderbookFilters extends SvelteComponent<ListViewOrderbookFiltersProps, ListViewOrderbookFiltersEvents, ListViewOrderbookFiltersSlots> {
27
32
  }
28
33
  export {};
@@ -0,0 +1,27 @@
1
+ <script>const STATUS_LABELS = {
2
+ active: "Active",
3
+ syncing: "Syncing",
4
+ failure: "Failure"
5
+ };
6
+ const DOT_CLASSES = {
7
+ active: "bg-emerald-400",
8
+ syncing: "bg-sky-400",
9
+ failure: "bg-red-500"
10
+ };
11
+ const TEXT_CLASSES = {
12
+ active: "text-emerald-400",
13
+ syncing: "text-sky-400",
14
+ failure: "text-red-400"
15
+ };
16
+ export let status = "active";
17
+ </script>
18
+
19
+ <span
20
+ class="inline-flex items-center gap-2 rounded-full border border-gray-200 bg-gray-100 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-gray-600 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-300"
21
+ data-testid="local-db-status"
22
+ >
23
+ <span class={`h-2 w-2 rounded-full ${DOT_CLASSES[status]}`} aria-hidden="true" />
24
+ <span class={TEXT_CLASSES[status]}>
25
+ {STATUS_LABELS[status]}
26
+ </span>
27
+ </span>
@@ -0,0 +1,19 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { LocalDbStatus } from '@rainlanguage/orderbook';
3
+ declare const __propDef: {
4
+ props: {
5
+ status?: LocalDbStatus;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ exports?: {} | undefined;
12
+ bindings?: string | undefined;
13
+ };
14
+ export type LocalDbStatusBadgeProps = typeof __propDef.props;
15
+ export type LocalDbStatusBadgeEvents = typeof __propDef.events;
16
+ export type LocalDbStatusBadgeSlots = typeof __propDef.slots;
17
+ export default class LocalDbStatusBadge extends SvelteComponent<LocalDbStatusBadgeProps, LocalDbStatusBadgeEvents, LocalDbStatusBadgeSlots> {
18
+ }
19
+ export {};
@@ -0,0 +1,40 @@
1
+ <script>import LocalDbStatusBadge from "./LocalDbStatusBadge.svelte";
2
+ import LocalDbStatusModal from "./LocalDbStatusModal.svelte";
3
+ import { ChevronRightOutline } from "flowbite-svelte-icons";
4
+ export let networkStatuses = /* @__PURE__ */ new Map();
5
+ export let orderbookStatuses = /* @__PURE__ */ new Map();
6
+ let modalOpen = false;
7
+ $: networkList = Array.from(networkStatuses.values());
8
+ $: hasNetworks = networkList.length > 0;
9
+ $: hasFailure = networkList.some((s) => s.status === "failure");
10
+ $: displayStatus = hasFailure ? "failure" : "active";
11
+ function openModal() {
12
+ modalOpen = true;
13
+ }
14
+ </script>
15
+
16
+ <div
17
+ class="rounded-lg border border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-900"
18
+ data-testid="local-db-status-card"
19
+ >
20
+ <button
21
+ type="button"
22
+ class="flex w-full items-center justify-between px-3 py-3 text-left transition hover:bg-gray-50 dark:hover:bg-gray-800"
23
+ on:click={openModal}
24
+ data-testid="local-db-status-header"
25
+ >
26
+ <div class="flex items-center gap-2">
27
+ <span class="text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400"
28
+ >LocalDB</span
29
+ >
30
+ </div>
31
+ <div class="flex items-center gap-2">
32
+ <LocalDbStatusBadge status={displayStatus} />
33
+ {#if hasNetworks}
34
+ <ChevronRightOutline class="h-3 w-3 shrink-0" />
35
+ {/if}
36
+ </div>
37
+ </button>
38
+ </div>
39
+
40
+ <LocalDbStatusModal bind:open={modalOpen} {networkStatuses} {orderbookStatuses} />
@@ -0,0 +1,20 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { NetworkSyncStatus, OrderbookSyncStatus } from '@rainlanguage/orderbook';
3
+ declare const __propDef: {
4
+ props: {
5
+ networkStatuses?: Map<number, NetworkSyncStatus>;
6
+ orderbookStatuses?: Map<string, OrderbookSyncStatus>;
7
+ };
8
+ events: {
9
+ [evt: string]: CustomEvent<any>;
10
+ };
11
+ slots: {};
12
+ exports?: {} | undefined;
13
+ bindings?: string | undefined;
14
+ };
15
+ export type LocalDbStatusCardProps = typeof __propDef.props;
16
+ export type LocalDbStatusCardEvents = typeof __propDef.events;
17
+ export type LocalDbStatusCardSlots = typeof __propDef.slots;
18
+ export default class LocalDbStatusCard extends SvelteComponent<LocalDbStatusCardProps, LocalDbStatusCardEvents, LocalDbStatusCardSlots> {
19
+ }
20
+ export {};
@@ -0,0 +1,103 @@
1
+ <script>import { Modal } from "flowbite-svelte";
2
+ import LocalDbStatusBadge from "./LocalDbStatusBadge.svelte";
3
+ import { getNetworkName } from "../utils/getNetworkName";
4
+ export let open = false;
5
+ export let networkStatuses = /* @__PURE__ */ new Map();
6
+ export let orderbookStatuses = /* @__PURE__ */ new Map();
7
+ $: networkList = Array.from(networkStatuses.values());
8
+ $: orderbookList = Array.from(orderbookStatuses.values());
9
+ $: networkGroups = buildNetworkGroups(networkList, orderbookList);
10
+ function buildNetworkGroups(networks, orderbooks) {
11
+ const groups = [];
12
+ for (const network of networks) {
13
+ const networkOrderbooks = orderbooks.filter((ob) => ob.obId.chainId === network.chainId);
14
+ groups.push({
15
+ chainId: network.chainId,
16
+ networkName: getNetworkName(network.chainId) ?? `Chain ${network.chainId}`,
17
+ status: network,
18
+ orderbooks: networkOrderbooks
19
+ });
20
+ }
21
+ return groups;
22
+ }
23
+ </script>
24
+
25
+ <Modal
26
+ bind:open
27
+ size="lg"
28
+ class="dark:border dark:border-gray-700 dark:bg-gray-900"
29
+ 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"
30
+ data-testid="local-db-status-modal"
31
+ >
32
+ <div class="flex flex-col gap-4" slot="header">
33
+ <h3 class="text-lg font-semibold text-gray-900 dark:text-white">Database Sync Status</h3>
34
+ </div>
35
+
36
+ <div class="max-h-[60vh] overflow-y-auto">
37
+ {#if networkList.length === 0}
38
+ <p class="text-sm text-gray-500 dark:text-gray-400">No networks are being synced.</p>
39
+ {:else}
40
+ <div class="space-y-4">
41
+ {#each networkGroups as group (group.chainId)}
42
+ <div
43
+ class="rounded-lg border border-gray-200 dark:border-gray-700"
44
+ data-testid="network-group-{group.chainId}"
45
+ >
46
+ <div
47
+ class="flex items-center justify-between border-b border-gray-200 bg-gray-50 px-4 py-3 dark:border-gray-700 dark:bg-gray-800"
48
+ >
49
+ <div class="flex items-center gap-2">
50
+ <span class="font-medium text-gray-900 dark:text-white">{group.networkName}</span>
51
+ {#if group.status.schedulerState === 'notLeader'}
52
+ <span
53
+ class="rounded bg-amber-100 px-1.5 py-0.5 text-[10px] font-medium uppercase text-amber-700 dark:bg-amber-900/30 dark:text-amber-400"
54
+ >
55
+ Observing
56
+ </span>
57
+ {/if}
58
+ </div>
59
+ <LocalDbStatusBadge status={group.status.status} />
60
+ </div>
61
+
62
+ {#if group.orderbooks.length > 0}
63
+ <ul class="divide-y divide-gray-100 dark:divide-gray-800">
64
+ {#each group.orderbooks as obStatus (obStatus.obId.orderbookAddress)}
65
+ <li class="px-4 py-3">
66
+ <div class="flex items-start justify-between gap-4">
67
+ <div class="min-w-0 flex-1">
68
+ <span
69
+ class="font-mono text-sm text-gray-700 dark:text-gray-300"
70
+ title={obStatus.obId.orderbookAddress}
71
+ >
72
+ {obStatus.obId.orderbookAddress}
73
+ </span>
74
+ {#if obStatus.status === 'syncing' && obStatus.phaseMessage && obStatus.schedulerState !== 'notLeader'}
75
+ <div class="mt-2 text-sm text-sky-600 dark:text-sky-400">
76
+ {obStatus.phaseMessage}
77
+ </div>
78
+ {/if}
79
+ {#if obStatus.status === 'failure' && obStatus.error}
80
+ <div class="mt-2 text-sm text-red-600 dark:text-red-400">
81
+ {obStatus.error}
82
+ </div>
83
+ {/if}
84
+ </div>
85
+ </div>
86
+ </li>
87
+ {/each}
88
+ </ul>
89
+ {/if}
90
+
91
+ {#if group.status.status === 'failure' && group.status.error}
92
+ <div class="border-t border-gray-200 px-4 py-3 dark:border-gray-700">
93
+ <div class="text-sm text-red-600 dark:text-red-400">
94
+ {group.status.error}
95
+ </div>
96
+ </div>
97
+ {/if}
98
+ </div>
99
+ {/each}
100
+ </div>
101
+ {/if}
102
+ </div>
103
+ </Modal>
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { NetworkSyncStatus, OrderbookSyncStatus } from '@rainlanguage/orderbook';
3
+ declare const __propDef: {
4
+ props: {
5
+ open?: boolean;
6
+ networkStatuses?: Map<number, NetworkSyncStatus>;
7
+ orderbookStatuses?: Map<string, OrderbookSyncStatus>;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ exports?: {} | undefined;
14
+ bindings?: string | undefined;
15
+ };
16
+ export type LocalDbStatusModalProps = typeof __propDef.props;
17
+ export type LocalDbStatusModalEvents = typeof __propDef.events;
18
+ export type LocalDbStatusModalSlots = typeof __propDef.slots;
19
+ export default class LocalDbStatusModal extends SvelteComponent<LocalDbStatusModalProps, LocalDbStatusModalEvents, LocalDbStatusModalSlots> {
20
+ }
21
+ export {};
@@ -1,24 +1,24 @@
1
1
  <script>import { Button } from "flowbite-svelte";
2
2
  import Hash, { HashType } from "./Hash.svelte";
3
+ import {
4
+ constructHashLink,
5
+ isOrderOrVaultActive,
6
+ extractHash
7
+ } from "../utils/constructHashLink";
3
8
  export let orderOrVault;
4
9
  export let type;
5
- export let network;
6
- export let updateActiveNetworkAndOrderbook;
7
- let hash;
8
- $: isOrder = "orderHash" in (orderOrVault || {});
9
- $: slug = isOrder ? orderOrVault.orderHash : orderOrVault?.id;
10
- $: hash = isOrder ? orderOrVault.orderHash : orderOrVault?.id || "";
11
- $: isActive = isOrder ? orderOrVault.active : false;
10
+ export let chainId;
11
+ export let orderbookAddress;
12
+ $: hash = extractHash(orderOrVault);
13
+ $: isActive = isOrderOrVaultActive(orderOrVault);
14
+ $: linkPath = constructHashLink(orderOrVault, type, chainId, orderbookAddress);
12
15
  </script>
13
16
 
14
- <a href={`/${type}/${network}-${slug}`}>
17
+ <a data-testid="order-or-vault-hash" href={linkPath}>
15
18
  <Button
16
19
  class="mr-1 mt-1 px-2 py-1 text-sm"
17
20
  color={isActive ? 'green' : 'yellow'}
18
21
  data-testid="vault-order-input"
19
- data-id={slug}
20
- on:click={() => {
21
- updateActiveNetworkAndOrderbook(network);
22
- }}><Hash type={HashType.Identifier} value={hash} copyOnClick={false} /></Button
22
+ data-id={hash}><Hash type={HashType.Identifier} value={hash} copyOnClick={false} /></Button
23
23
  >
24
24
  </a>
@@ -1,11 +1,11 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { SgOrderAsIO, SgOrder, SgVault } from '@rainlanguage/orderbook/js_api';
2
+ import type { Address, RaindexOrder, RaindexOrderAsIO, RaindexVault } from '@rainlanguage/orderbook';
3
3
  declare const __propDef: {
4
4
  props: {
5
- orderOrVault: SgOrder | SgVault | SgOrderAsIO;
5
+ orderOrVault: RaindexVault | RaindexOrder | RaindexOrderAsIO;
6
6
  type: "orders" | "vaults";
7
- network: string;
8
- updateActiveNetworkAndOrderbook: (subgraphName: string) => void;
7
+ chainId: number;
8
+ orderbookAddress: Address;
9
9
  };
10
10
  events: {
11
11
  [evt: string]: CustomEvent<any>;
@@ -5,7 +5,7 @@ export let pathname;
5
5
  $: breadcrumbs = generateBreadcrumbs(pathname);
6
6
  </script>
7
7
 
8
- <div class="mb-4 flex w-full items-center justify-between">
8
+ <div class="mb-4 flex w-full items-center justify-between" data-testid="page-header">
9
9
  <Breadcrumb
10
10
  olClass="inline-flex items-center rtl:space-x-reverse"
11
11
  aria-label="Default breadcrumb example"