├── .changeset ├── README.md └── config.json ├── .editorconfig ├── .env.example ├── .eslintignore ├── .eslintrc.json ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ └── config.yml ├── actions │ ├── setup-all │ │ └── action.yml │ ├── setup-git │ │ └── action.yml │ ├── setup-go │ │ └── action.yml │ └── setup-js │ │ └── action.yml └── workflows │ ├── e2e-merge-reports.yml │ ├── e2e-shard-tests.yml │ ├── e2e.yml │ ├── pr.yml │ ├── project-add.yml │ ├── release-beta.yml │ ├── release-go.yml │ ├── release-main.yml │ └── release-manual.yml ├── .gitignore ├── .golangci.yml ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .vscode ├── extensions.json ├── settings.json └── spellright.dict ├── README.md ├── apps ├── assets │ ├── .eslintrc.json │ ├── Dockerfile │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── src │ │ ├── main.ts │ │ └── static.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.spec.json │ └── webpack.config.js ├── crons │ ├── .eslintrc.json │ ├── Dockerfile │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── src │ │ └── main.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.spec.json │ └── webpack.config.js ├── explorer-e2e │ ├── .eslintrc.json │ ├── .gitignore │ ├── playwright.config.ts │ ├── project.json │ ├── src │ │ ├── fixtures │ │ │ ├── ExplorerApp.ts │ │ │ ├── cluster.ts │ │ │ ├── constants.ts │ │ │ ├── navigate.ts │ │ │ └── walletd.ts │ │ ├── helpers │ │ │ ├── exploredStabilization.ts │ │ │ └── findTestContract.ts │ │ └── specs │ │ │ ├── address.spec.ts │ │ │ ├── block.spec.ts │ │ │ ├── contract.spec.ts │ │ │ ├── home.spec.ts │ │ │ ├── host.spec.ts │ │ │ └── tx.spec.ts │ └── tsconfig.json ├── explorer │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── Dockerfile │ ├── Dockerfile.zen │ ├── app │ │ ├── address │ │ │ └── [id] │ │ │ │ ├── error.tsx │ │ │ │ ├── loading.tsx │ │ │ │ ├── not-found.tsx │ │ │ │ ├── opengraph-image.tsx │ │ │ │ └── page.tsx │ │ ├── api │ │ │ └── revalidate │ │ │ │ ├── path │ │ │ │ └── route.ts │ │ │ │ └── tag │ │ │ │ └── route.ts │ │ ├── apple-icon.png │ │ ├── block │ │ │ └── [id] │ │ │ │ ├── error.tsx │ │ │ │ ├── loading.tsx │ │ │ │ ├── not-found.tsx │ │ │ │ ├── opengraph-image.tsx │ │ │ │ └── page.tsx │ │ ├── contract │ │ │ └── [id] │ │ │ │ ├── error.tsx │ │ │ │ ├── loading.tsx │ │ │ │ ├── not-found.tsx │ │ │ │ ├── opengraph-image.tsx │ │ │ │ └── page.tsx │ │ ├── error.tsx │ │ ├── fallback.ts │ │ ├── faucet │ │ │ ├── error.tsx │ │ │ ├── loading.tsx │ │ │ ├── not-found.tsx │ │ │ ├── opengraph-image.tsx │ │ │ └── page.tsx │ │ ├── favicon.ico │ │ ├── host-revenue-calculator │ │ │ ├── error.tsx │ │ │ ├── not-found.tsx │ │ │ ├── opengraph-image.tsx │ │ │ └── page.tsx │ │ ├── host │ │ │ └── [id] │ │ │ │ ├── error.tsx │ │ │ │ ├── loading.tsx │ │ │ │ ├── not-found.tsx │ │ │ │ ├── opengraph-image.tsx │ │ │ │ └── page.tsx │ │ ├── icon.png │ │ ├── layout.tsx │ │ ├── loading.tsx │ │ ├── manifest.ts │ │ ├── not-found.tsx │ │ ├── opengraph-image.tsx │ │ ├── page.tsx │ │ └── tx │ │ │ └── [id] │ │ │ ├── error.tsx │ │ │ ├── loading.tsx │ │ │ ├── not-found.tsx │ │ │ ├── opengraph-image.tsx │ │ │ └── page.tsx │ ├── assets │ │ ├── leaves-background.png │ │ └── leaves-preview.png │ ├── components │ │ ├── Address │ │ │ └── index.tsx │ │ ├── AddressSkeleton │ │ │ └── index.tsx │ │ ├── Block │ │ │ └── index.tsx │ │ ├── BlockSkeleton │ │ │ └── index.tsx │ │ ├── ContentLayout.tsx │ │ ├── Contract │ │ │ ├── ContractHeader.tsx │ │ │ └── index.tsx │ │ ├── ContractSkeleton │ │ │ └── index.tsx │ │ ├── ContractView │ │ │ └── index.tsx │ │ ├── Entity │ │ │ ├── BlockList.tsx │ │ │ ├── EntityAvatar.tsx │ │ │ ├── EntityList.tsx │ │ │ ├── EntityListItem.tsx │ │ │ ├── EntityListItemLayout.tsx │ │ │ └── EntityListSkeleton.tsx │ │ ├── EntityHeading.tsx │ │ ├── ExplorerDatum.tsx │ │ ├── Faucet │ │ │ ├── FaucetFundForm.tsx │ │ │ ├── FaucetStatus.tsx │ │ │ └── index.tsx │ │ ├── FaucetSkeleton │ │ │ └── index.tsx │ │ ├── HardforkCountdown │ │ │ └── index.tsx │ │ ├── Home │ │ │ ├── HostListItem.tsx │ │ │ └── index.tsx │ │ ├── HomeSkeleton │ │ │ └── index.tsx │ │ ├── Host │ │ │ ├── HostHeader.tsx │ │ │ ├── HostInfo.tsx │ │ │ ├── HostPricing.tsx │ │ │ ├── HostSettings.tsx │ │ │ └── index.tsx │ │ ├── HostSkeleton │ │ │ ├── HostHeaderSkeleton.tsx │ │ │ └── index.tsx │ │ ├── Layout │ │ │ ├── Footer.tsx │ │ │ ├── NavDropdownMenu.tsx │ │ │ ├── Navbar.tsx │ │ │ ├── Search.tsx │ │ │ └── index.tsx │ │ ├── LoadingCurrency.tsx │ │ ├── LoadingTimestamp.tsx │ │ ├── OGImage │ │ │ ├── Background.tsx │ │ │ ├── Header.tsx │ │ │ ├── Preview.tsx │ │ │ └── index.tsx │ │ ├── OGImageEntity │ │ │ ├── Header.tsx │ │ │ ├── Preview.tsx │ │ │ └── index.tsx │ │ ├── StateError │ │ │ └── index.tsx │ │ ├── SyncWarning │ │ │ └── index.tsx │ │ ├── Transaction │ │ │ ├── OutputListItem.tsx │ │ │ ├── TransactionHeader.tsx │ │ │ └── index.tsx │ │ └── TransactionSkeleton │ │ │ └── index.tsx │ ├── config │ │ ├── explored.ts │ │ ├── index.ts │ │ ├── routes.ts │ │ ├── style.css │ │ └── testnet-zen.ts │ ├── hooks │ │ ├── useExplored.ts │ │ ├── useExploredAddress.ts │ │ ├── useFaucetFund.ts │ │ └── useFaucetStatus.ts │ ├── index.d.ts │ ├── jest.config.ts │ ├── lib │ │ ├── avatar.ts │ │ ├── blocks.ts │ │ ├── contracts.ts │ │ ├── currency.ts │ │ ├── explored.ts │ │ ├── hostType.ts │ │ ├── hosts.ts │ │ ├── identicon.d.ts │ │ ├── networkVersion.ts │ │ ├── pageProps.ts │ │ ├── sync.ts │ │ ├── time.ts │ │ ├── tx.ts │ │ └── utils.ts │ ├── middleware.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── postcss.config.js │ ├── project.json │ ├── public │ │ └── .gitkeep │ ├── specs │ │ └── index.spec.tsx │ ├── tailwind.config.js │ ├── tsconfig.json │ └── tsconfig.spec.json ├── hostd-e2e │ ├── .eslintrc.json │ ├── .gitignore │ ├── playwright.config.ts │ ├── project.json │ ├── src │ │ ├── fixtures │ │ │ ├── alerts.ts │ │ │ ├── beforeTest.ts │ │ │ ├── configResetAllSettings.ts │ │ │ ├── contracts.ts │ │ │ ├── login.ts │ │ │ ├── navigate.ts │ │ │ └── volumes.ts │ │ └── specs │ │ │ ├── alerts.spec.ts │ │ │ ├── config.spec.ts │ │ │ ├── contracts.spec.ts │ │ │ ├── login.spec.ts │ │ │ ├── volumes.spec.ts │ │ │ └── wallet.spec.ts │ └── tsconfig.json ├── hostd │ ├── .env.build.export │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── Dockerfile │ ├── assets │ │ ├── jungle-preview.png │ │ └── jungle.png │ ├── components │ │ ├── Alerts │ │ │ ├── AlertContextMenu.tsx │ │ │ ├── AlertsActionsMenu.tsx │ │ │ ├── AlertsCmd │ │ │ │ └── index.tsx │ │ │ ├── AlertsFilterMenu.tsx │ │ │ ├── AlertsViewDropdownMenu.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoneMatching.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ └── index.tsx │ │ ├── CmdKDialog │ │ │ └── index.tsx │ │ ├── CmdRoot │ │ │ ├── AppCmdGroup.tsx │ │ │ ├── CmdEmpty.tsx │ │ │ ├── ConfigCmdGroup.tsx │ │ │ ├── Item.tsx │ │ │ ├── NodeCmdGroup.tsx │ │ │ ├── WalletCmdGroup.tsx │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── Config │ │ │ ├── ConfigActions.tsx │ │ │ ├── ConfigContextMenu.tsx │ │ │ ├── ConfigNav.tsx │ │ │ ├── ConfigViewDropdownMenu.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateConnError.tsx │ │ │ ├── ViewModeToggle.tsx │ │ │ └── index.tsx │ │ ├── Contracts │ │ │ ├── ContractContextMenu.tsx │ │ │ ├── ContractsActionsMenu.tsx │ │ │ ├── ContractsBulkMenu │ │ │ │ ├── ContractsBulkIntegrityCheck.tsx │ │ │ │ └── index.tsx │ │ │ ├── ContractsCmd │ │ │ │ ├── ContractsFilterCmd │ │ │ │ │ ├── ContractFilterCmdGroups │ │ │ │ │ │ ├── ContractId.tsx │ │ │ │ │ │ ├── Status.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ContractFilterNav │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── ContractsFilterMenu │ │ │ │ └── index.tsx │ │ │ ├── ContractsFiltersBar.tsx │ │ │ ├── ContractsViewDropdownMenu.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoneMatching.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ └── index.tsx │ │ ├── DirectorySelectMenu │ │ │ ├── DirectorySelectCmd │ │ │ │ ├── DirectoryCreate.tsx │ │ │ │ ├── DirectoryParentItem.tsx │ │ │ │ ├── DirectorySelectEmpty.tsx │ │ │ │ ├── DirectorySelectError.tsx │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── DockedControls.tsx │ │ ├── Home │ │ │ ├── HomeBandwidth.tsx │ │ │ ├── HomeCollateral.tsx │ │ │ ├── HomeContracts.tsx │ │ │ ├── HomeOperations.tsx │ │ │ ├── HomePricing.tsx │ │ │ ├── HomeRevenue.tsx │ │ │ ├── HomeStorage.tsx │ │ │ ├── Layout.tsx │ │ │ └── index.tsx │ │ ├── HostdAuthedLayout.tsx │ │ ├── HostdPublicLayout.tsx │ │ ├── HostdSidenav.tsx │ │ ├── HostdTestnetWarningBanner.tsx │ │ ├── Login │ │ │ ├── Layout.tsx │ │ │ └── index.tsx │ │ ├── Node │ │ │ ├── Layout.tsx │ │ │ └── index.tsx │ │ ├── OnboardingBar.tsx │ │ ├── Profile │ │ │ └── index.tsx │ │ ├── Redirect │ │ │ ├── Layout.tsx │ │ │ └── index.tsx │ │ ├── Volumes │ │ │ ├── Layout.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ ├── VolumeContextMenu.tsx │ │ │ ├── VolumesCmd │ │ │ │ └── index.tsx │ │ │ ├── VolumesFiltersBar.tsx │ │ │ ├── VolumesViewDropdownMenu.tsx │ │ │ └── index.tsx │ │ └── Wallet │ │ │ ├── EmptyState.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoneMatching.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ ├── WalletFilterBar.tsx │ │ │ └── index.tsx │ ├── config │ │ ├── buildMode.ts │ │ ├── buildModeExport.ts │ │ ├── charts.ts │ │ ├── providers.tsx │ │ ├── routes.ts │ │ ├── style.css │ │ └── swr.ts │ ├── contexts │ │ ├── alerts │ │ │ ├── columns.tsx │ │ │ ├── data.tsx │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── config │ │ │ ├── fields.tsx │ │ │ ├── index.tsx │ │ │ ├── resources.ts │ │ │ ├── transform.spec.ts │ │ │ ├── transform.ts │ │ │ ├── types.ts │ │ │ ├── useAutoCalculatedFields.tsx │ │ │ ├── useForm.tsx │ │ │ ├── useOnValid.tsx │ │ │ └── useResources.tsx │ │ ├── contracts │ │ │ ├── columns.tsx │ │ │ ├── dataset.ts │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── dialog.tsx │ │ ├── metrics │ │ │ ├── index.tsx │ │ │ ├── types.tsx │ │ │ ├── useNowAtInterval.tsx │ │ │ └── utils.tsx │ │ ├── transactions │ │ │ ├── columns.tsx │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ └── volumes │ │ │ ├── columns.tsx │ │ │ ├── dataset.ts │ │ │ ├── index.tsx │ │ │ └── types.ts │ ├── dialogs │ │ ├── ContractsFilterContractIdDialog.tsx │ │ ├── HostdSendSiacoinDialog.tsx │ │ ├── HostdTransactionDetailsDialog.tsx │ │ ├── VolumeCreateDialog.tsx │ │ ├── VolumeDeleteDialog.tsx │ │ ├── VolumeResizeDialog.tsx │ │ └── VolumeSizeDiff.tsx │ ├── hooks │ │ ├── useHostOSPathSeparator.ts │ │ ├── useSiascanUrl.ts │ │ └── useSyncStatus.ts │ ├── index.d.ts │ ├── jest.config.ts │ ├── lib │ │ ├── humanUnits.ts │ │ ├── system.spec.ts │ │ └── system.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── pages │ │ ├── 404.tsx │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ ├── alerts │ │ │ └── index.tsx │ │ ├── config │ │ │ └── index.tsx │ │ ├── contracts │ │ │ └── index.tsx │ │ ├── index.tsx │ │ ├── login.tsx │ │ ├── node │ │ │ └── index.tsx │ │ ├── volumes │ │ │ └── index.tsx │ │ └── wallet │ │ │ └── index.tsx │ ├── postcss.config.js │ ├── project.json │ ├── public │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── browserconfig.xml │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── manifest.json │ │ ├── mstile-144x144.png │ │ ├── mstile-150x150.png │ │ ├── mstile-310x150.png │ │ ├── mstile-310x310.png │ │ ├── mstile-70x70.png │ │ ├── safari-pinned-tab.svg │ │ └── site.webmanifest │ ├── specs │ │ └── index.spec.tsx │ ├── tailwind.config.js │ ├── tsconfig.json │ └── tsconfig.spec.json ├── renterd-e2e │ ├── .eslintrc.json │ ├── .gitignore │ ├── playwright.config.ts │ ├── project.json │ ├── src │ │ ├── fixtures │ │ │ ├── beforeTest.ts │ │ │ ├── buckets.ts │ │ │ ├── config.ts │ │ │ ├── configResetSettings.ts │ │ │ ├── contracts.ts │ │ │ ├── files.ts │ │ │ ├── hosts.ts │ │ │ ├── keys.ts │ │ │ ├── login.ts │ │ │ ├── navigate.ts │ │ │ ├── sample-files │ │ │ │ └── sample.txt │ │ │ ├── sample.txt │ │ │ └── uploads.ts │ │ └── specs │ │ │ ├── alerts.spec.ts │ │ │ ├── buckets.spec.ts │ │ │ ├── config.spec.ts │ │ │ ├── configTips.spec.ts │ │ │ ├── contracts.spec.ts │ │ │ ├── externalData.spec.ts │ │ │ ├── files.spec.ts │ │ │ ├── filesMove.spec.ts │ │ │ ├── hosts.spec.ts │ │ │ ├── keys.spec.ts │ │ │ ├── login.spec.ts │ │ │ ├── pagination.spec.ts │ │ │ ├── recommendations.spec.ts │ │ │ ├── report.spec.ts │ │ │ ├── search.spec.ts │ │ │ ├── uploads.spec.ts │ │ │ └── wallet.spec.ts │ └── tsconfig.json ├── renterd │ ├── .env.build.export │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── Dockerfile │ ├── assets │ │ ├── earth-dark-contrast.png │ │ ├── earth-dark.jpeg │ │ ├── earth-day.jpeg │ │ ├── earth-night.jpeg │ │ ├── earth-topology.png │ │ ├── jungle-preview.png │ │ ├── jungle.png │ │ ├── map-2.jpg │ │ └── night-sky.png │ ├── components │ │ ├── AccountContextMenu.tsx │ │ ├── Alerts │ │ │ ├── AlertContextMenu.tsx │ │ │ ├── AlertsActionsMenu.tsx │ │ │ ├── AlertsCmd │ │ │ │ └── index.tsx │ │ │ ├── AlertsFilterMenu.tsx │ │ │ ├── AlertsViewDropdownMenu.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoneMatching.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ └── index.tsx │ │ ├── CmdKDialog │ │ │ └── index.tsx │ │ ├── CmdRoot │ │ │ ├── AppCmdGroup.tsx │ │ │ ├── CmdEmpty.tsx │ │ │ ├── ConfigCmdGroup.tsx │ │ │ ├── Item.tsx │ │ │ ├── NodeCmdGroup.tsx │ │ │ ├── WalletCmdGroup.tsx │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── Config │ │ │ ├── ConfigActions.tsx │ │ │ ├── ConfigContextMenu.tsx │ │ │ ├── ConfigNav.tsx │ │ │ ├── ConfigViewDropdownMenu.tsx │ │ │ ├── HangingNav.tsx │ │ │ ├── HangingNavItem.tsx │ │ │ ├── Layout.tsx │ │ │ ├── PinnedCurrencyWarning.tsx │ │ │ ├── RebalancePrices.tsx │ │ │ ├── Recommendations.tsx │ │ │ ├── ShouldPinSwitch.tsx │ │ │ ├── SpendingEstimate.tsx │ │ │ ├── StateConnError.tsx │ │ │ ├── ViewModeToggle.tsx │ │ │ └── index.tsx │ │ ├── ConfigEnabledSwitch.tsx │ │ ├── Contracts │ │ │ ├── ContractContextMenu.tsx │ │ │ ├── ContractContextMenuFromId.tsx │ │ │ ├── ContractMetrics.tsx │ │ │ ├── ContractsActionsMenu.tsx │ │ │ ├── ContractsBulkMenu │ │ │ │ ├── ContractsAddAllowlist.tsx │ │ │ │ ├── ContractsBulkDelete.tsx │ │ │ │ ├── ContractsRemoveAllowlist.tsx │ │ │ │ ├── ContractsRescanHosts.tsx │ │ │ │ └── index.tsx │ │ │ ├── ContractsCmd │ │ │ │ ├── ContractsFilterCmd │ │ │ │ │ ├── ContractFilterCmdGroups │ │ │ │ │ │ ├── Expiry.tsx │ │ │ │ │ │ ├── Formation.tsx │ │ │ │ │ │ ├── PublicKey.tsx │ │ │ │ │ │ ├── Renew.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ContractFilterNav │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── ContractsFilterBar.tsx │ │ │ ├── ContractsFilterMenu │ │ │ │ └── index.tsx │ │ │ ├── ContractsFilterPublicKeyDialog.tsx │ │ │ ├── ContractsViewDropdownMenu.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoData.tsx │ │ │ ├── StateNoneMatching.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ ├── index.tsx │ │ │ └── useContractConfirmDelete.tsx │ │ ├── DockedControls.tsx │ │ ├── EnabledBar.tsx │ │ ├── Files │ │ │ ├── BucketContextMenu.tsx │ │ │ ├── Columns │ │ │ │ └── FilesHealthColumn │ │ │ │ │ ├── FilesHealthColumnContents.tsx │ │ │ │ │ └── index.tsx │ │ │ ├── DirectoryContextMenu.tsx │ │ │ ├── FileContextMenu │ │ │ │ ├── CopyMetadataMenuItem.tsx │ │ │ │ └── index.tsx │ │ │ ├── FilesCmd │ │ │ │ ├── FilesSearchCmd │ │ │ │ │ ├── FileSearchEmpty.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FilesExplorerModeButton.tsx │ │ │ ├── FilesExplorerModeContextMenu.tsx │ │ │ ├── FilesFilterDirectoryMenu │ │ │ │ └── index.tsx │ │ │ ├── FilesSearchBucketMenu │ │ │ │ └── index.tsx │ │ │ ├── FilesStatsMenuShared │ │ │ │ ├── FilesStatsMenuCount.tsx │ │ │ │ ├── FilesStatsMenuHealth.tsx │ │ │ │ ├── FilesStatsMenuSize.tsx │ │ │ │ ├── FilesStatsMenuWarnings.tsx │ │ │ │ └── index.tsx │ │ │ ├── FilesViewDropdownMenu.tsx │ │ │ ├── Layout.tsx │ │ │ ├── bulkActions │ │ │ │ └── FilesBulkDelete.tsx │ │ │ ├── checks │ │ │ │ ├── useAutopilotNotConfigured.tsx │ │ │ │ └── useNotEnoughContracts.tsx │ │ │ ├── index.tsx │ │ │ ├── useCanUpload.tsx │ │ │ ├── useDirectoryDelete.tsx │ │ │ └── useFileDelete.tsx │ │ ├── FilesDirectory │ │ │ ├── EmptyState │ │ │ │ ├── StateError.tsx │ │ │ │ ├── StateNoneMatching.tsx │ │ │ │ ├── StateNoneYetBuckets.tsx │ │ │ │ ├── StateNoneYetFiles.tsx │ │ │ │ └── index.tsx │ │ │ ├── FilesDirectoryActionsMenu.tsx │ │ │ ├── FilesDirectoryBreadcrumbMenu.tsx │ │ │ ├── FilesDirectoryBulkMenu │ │ │ │ ├── FilesBulkMove.tsx │ │ │ │ └── index.tsx │ │ │ ├── FilesDirectoryStatsMenu │ │ │ │ └── index.tsx │ │ │ ├── FilesExplorer.tsx │ │ │ └── index.tsx │ │ ├── FilesFlat │ │ │ ├── EmptyState │ │ │ │ ├── StateError.tsx │ │ │ │ ├── StateNoneMatching.tsx │ │ │ │ ├── StateNoneYet.tsx │ │ │ │ └── index.tsx │ │ │ ├── FilesExplorer.tsx │ │ │ ├── FilesFlatActionsMenu.tsx │ │ │ ├── FilesFlatBreadcrumbMenu.tsx │ │ │ ├── FilesFlatBulkMenu │ │ │ │ └── index.tsx │ │ │ ├── FilesFlatStatsMenu │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── Hosts │ │ │ ├── HostContextMenu.tsx │ │ │ ├── HostContextMenuFromKey.tsx │ │ │ ├── HostMap │ │ │ │ ├── Globe.tsx │ │ │ │ ├── GlobeDyn.tsx │ │ │ │ ├── GlobeImp.tsx │ │ │ │ ├── HostItem.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── useRoutes.tsx │ │ │ │ └── utils.ts │ │ │ ├── HostsActionsMenu.tsx │ │ │ ├── HostsAllowBlockDialog │ │ │ │ ├── AllowlistForm.tsx │ │ │ │ ├── BlocklistForm.tsx │ │ │ │ └── index.tsx │ │ │ ├── HostsBulkMenu │ │ │ │ ├── HostsAddAllowlist.tsx │ │ │ │ ├── HostsAddBlocklist.tsx │ │ │ │ ├── HostsRemoveAllowlist.tsx │ │ │ │ ├── HostsRemoveBlocklist.tsx │ │ │ │ ├── HostsRescan.tsx │ │ │ │ ├── HostsResetLostSectorCount.tsx │ │ │ │ └── index.tsx │ │ │ ├── HostsCmd │ │ │ │ ├── HostsFilterCmd │ │ │ │ │ ├── HostsFilterCmdGroups │ │ │ │ │ │ ├── Address.tsx │ │ │ │ │ │ ├── AllowBlock.tsx │ │ │ │ │ │ ├── Contracts.tsx │ │ │ │ │ │ ├── PublicKey.tsx │ │ │ │ │ │ ├── Usable.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── HostsFilterNav │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── HostsFilterAddressDialog.tsx │ │ │ ├── HostsFilterBar.tsx │ │ │ ├── HostsFilterMenu │ │ │ │ └── index.tsx │ │ │ ├── HostsFilterPublicKeyDialog.tsx │ │ │ ├── HostsViewDropdownMenu.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateEmpty.tsx │ │ │ └── index.tsx │ │ ├── Keys │ │ │ ├── KeyContextMenu.tsx │ │ │ ├── KeysActionsMenu.tsx │ │ │ ├── KeysBulkMenu │ │ │ │ ├── KeysBulkDelete.tsx │ │ │ │ └── index.tsx │ │ │ ├── KeysCmd │ │ │ │ └── index.tsx │ │ │ ├── KeysCreateDialog.tsx │ │ │ ├── KeysStatsMenu │ │ │ │ └── index.tsx │ │ │ ├── KeysViewDropdownMenu.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoneMatching.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ └── index.tsx │ │ ├── Login │ │ │ ├── Layout.tsx │ │ │ └── index.tsx │ │ ├── Node │ │ │ ├── Layout.tsx │ │ │ └── index.tsx │ │ ├── OnboardingBar.tsx │ │ ├── Profile │ │ │ └── index.tsx │ │ ├── Redirect │ │ │ ├── Layout.tsx │ │ │ └── index.tsx │ │ ├── RenterdAuthedLayout.tsx │ │ ├── RenterdPublicLayout.tsx │ │ ├── RenterdSidenav.tsx │ │ ├── RenterdTestnetWarningBanner.tsx │ │ ├── TransferProgress.tsx │ │ ├── TransfersBar.tsx │ │ ├── TransfersBarItem.tsx │ │ ├── Uploads │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ ├── UploadContextMenu.tsx │ │ │ ├── UploadsActionsMenu.tsx │ │ │ ├── UploadsBreadcrumbMenu.tsx │ │ │ ├── UploadsStatsMenu.tsx │ │ │ ├── UploadsTable.tsx │ │ │ ├── UploadsViewDropdownMenu.tsx │ │ │ └── index.tsx │ │ ├── Wallet │ │ │ ├── EmptyState.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoneMatching.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ ├── WalletFilterBar.tsx │ │ │ └── index.tsx │ │ └── bulkActions │ │ │ ├── BulkAddAllowlist.tsx │ │ │ ├── BulkAddBlocklist.tsx │ │ │ ├── BulkRemoveAllowlist.tsx │ │ │ ├── BulkRemoveBlocklist.tsx │ │ │ └── BulkRescanHosts.tsx │ ├── config │ │ ├── buildMode.ts │ │ ├── buildModeExport.ts │ │ ├── providers.tsx │ │ ├── routes.ts │ │ ├── style.css │ │ └── swr.ts │ ├── contexts │ │ ├── alerts │ │ │ ├── ChurnEventsField.tsx │ │ │ ├── columns.tsx │ │ │ ├── data.tsx │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── app │ │ │ ├── index.tsx │ │ │ └── useBusSdk.tsx │ │ ├── config │ │ │ ├── fieldTips │ │ │ │ ├── MaxContractPrice.tsx │ │ │ │ ├── MaxDownloadPrice.tsx │ │ │ │ ├── MaxRPCPrice.tsx │ │ │ │ ├── MaxStoragePrice.tsx │ │ │ │ ├── MaxUploadPrice.tsx │ │ │ │ └── Tip.tsx │ │ │ ├── fields.tsx │ │ │ ├── index.tsx │ │ │ ├── spending.spec.ts │ │ │ ├── spending.ts │ │ │ ├── spendingConfig.ts │ │ │ ├── transform.spec.ts │ │ │ ├── transformDown.ts │ │ │ ├── transformUp.ts │ │ │ ├── types.ts │ │ │ ├── useAutopilotEvaluations.tsx │ │ │ ├── useAverages.tsx │ │ │ ├── useEnabledPricingValuesInSiacoin.tsx │ │ │ ├── useForm.tsx │ │ │ ├── useFormExchangeRate.tsx │ │ │ ├── useOnValid.tsx │ │ │ ├── useRedundancyMultiplier.tsx │ │ │ ├── useResources.tsx │ │ │ └── useSpendingEstimate.tsx │ │ ├── contracts │ │ │ ├── columns.tsx │ │ │ ├── dataset.tsx │ │ │ ├── index.tsx │ │ │ ├── types.ts │ │ │ ├── useContractMetrics.tsx │ │ │ ├── useFilteredStats.tsx │ │ │ ├── usePrunableContractSizes.tsx │ │ │ └── utils.ts │ │ ├── dialog.tsx │ │ ├── filesDirectory │ │ │ ├── columns.tsx │ │ │ ├── dataset.tsx │ │ │ ├── index.tsx │ │ │ └── move.tsx │ │ ├── filesFlat │ │ │ ├── columns.tsx │ │ │ ├── dataset.tsx │ │ │ └── index.tsx │ │ ├── filesManager │ │ │ ├── dataset.tsx │ │ │ ├── downloads.tsx │ │ │ ├── index.spec.tsx │ │ │ ├── index.tsx │ │ │ ├── types.ts │ │ │ └── useFilesTableState.tsx │ │ ├── hosts │ │ │ ├── columns.tsx │ │ │ ├── dataset.ts │ │ │ ├── index.tsx │ │ │ ├── status.ts │ │ │ └── types.tsx │ │ ├── keys │ │ │ ├── columns.tsx │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── transactions │ │ │ ├── columns.tsx │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── uploads │ │ │ ├── columns.tsx │ │ │ ├── index.tsx │ │ │ ├── types.ts │ │ │ ├── useLocalUploads.tsx │ │ │ └── useRemoteUploads.tsx │ │ └── uploadsManager │ │ │ ├── index.tsx │ │ │ ├── types.ts │ │ │ └── useWarnActiveUploadsOnClose.tsx │ ├── dialogs │ │ ├── DebugDialog.tsx │ │ ├── FileRenameDialog.tsx │ │ ├── FilesBucketCreateDialog.tsx │ │ ├── FilesBucketDeleteDialog.tsx │ │ ├── FilesBucketPolicyDialog.tsx │ │ ├── FilesCreateDirectoryDialog.tsx │ │ ├── FilesSearchBucketDialog │ │ │ └── index.tsx │ │ ├── RenterdSendSiacoinDialog.tsx │ │ └── RenterdTransactionDetailsDialog.tsx │ ├── hooks │ │ ├── useAllowlistUpdate.tsx │ │ ├── useBlocklistUpdate.tsx │ │ ├── useSiascanUrl.tsx │ │ └── useSyncStatus.ts │ ├── index.d.ts │ ├── jest.config.ts │ ├── jest.polyfills.js │ ├── lib │ │ ├── fileHealth.tsx │ │ ├── health.spec.ts │ │ ├── health.ts │ │ ├── multipartUpload.spec.ts │ │ ├── multipartUpload.ts │ │ ├── paths.spec.ts │ │ ├── paths.ts │ │ ├── rename.spec.ts │ │ └── rename.ts │ ├── mock │ │ └── mock.tsx │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── pages │ │ ├── 404.tsx │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ ├── alerts │ │ │ └── index.tsx │ │ ├── buckets │ │ │ ├── [bucket] │ │ │ │ ├── files │ │ │ │ │ └── [[...path]].tsx │ │ │ │ └── uploads │ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── config │ │ │ └── index.tsx │ │ ├── contracts │ │ │ └── index.tsx │ │ ├── hosts │ │ │ └── index.tsx │ │ ├── index.tsx │ │ ├── keys │ │ │ └── index.tsx │ │ ├── login.tsx │ │ ├── node │ │ │ └── index.tsx │ │ └── wallet │ │ │ └── index.tsx │ ├── postcss.config.js │ ├── project.json │ ├── public │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── browserconfig.xml │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── manifest.json │ │ ├── mstile-144x144.png │ │ ├── mstile-150x150.png │ │ ├── mstile-310x150.png │ │ ├── mstile-310x310.png │ │ ├── mstile-70x70.png │ │ ├── safari-pinned-tab.svg │ │ └── site.webmanifest │ ├── tailwind.config.js │ ├── tsconfig.json │ └── tsconfig.spec.json ├── walletd-e2e │ ├── .eslintrc.json │ ├── .gitignore │ ├── playwright.config.ts │ ├── project.json │ ├── src │ │ ├── fixtures │ │ │ ├── beforeTest.ts │ │ │ ├── events.ts │ │ │ ├── ledger.ts │ │ │ ├── ledgerComposeSiacoin.ts │ │ │ ├── ledgerComposeSiafund.ts │ │ │ ├── login.ts │ │ │ ├── navigate.ts │ │ │ ├── seedSendSiacoin.ts │ │ │ ├── seedSendSiafund.ts │ │ │ ├── sendSiacoinDialog.ts │ │ │ ├── sendSiafundDialog.ts │ │ │ └── wallet.ts │ │ └── specs │ │ │ ├── ledgerSendSiacoin.spec.ts │ │ │ ├── ledgerSendSiafund.spec.ts │ │ │ ├── login.spec.ts │ │ │ ├── seedGenerateAddresses.spec.ts │ │ │ ├── seedSendSiacoin.spec.ts │ │ │ ├── seedSendSiafund.spec.ts │ │ │ └── wallet.spec.ts │ └── tsconfig.json ├── walletd │ ├── .env.build.export │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── Dockerfile │ ├── assets │ │ ├── jungle-preview.png │ │ └── jungle.png │ ├── components │ │ ├── DockedControls.tsx │ │ ├── Login │ │ │ ├── Layout.tsx │ │ │ └── index.tsx │ │ ├── Node │ │ │ ├── Layout.tsx │ │ │ └── index.tsx │ │ ├── Profile │ │ │ └── index.tsx │ │ ├── Redirect │ │ │ ├── Layout.tsx │ │ │ └── index.tsx │ │ ├── RescanStatus.tsx │ │ ├── Wallet │ │ │ ├── AddressesButton.tsx │ │ │ ├── EventsFilterBar.tsx │ │ │ ├── EventsViewDropdownMenu.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoneMatching.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ ├── WalletActionsMenu.tsx │ │ │ ├── WalletBalanceWithSf.tsx │ │ │ ├── WalletNavMenu.tsx │ │ │ └── index.tsx │ │ ├── WalletAddSelectType.tsx │ │ ├── WalletAddresses │ │ │ ├── AddressContextMenu.tsx │ │ │ ├── AddressesActionsMenu.tsx │ │ │ ├── AddressesFilterBar.tsx │ │ │ ├── AddressesViewDropdownMenu.tsx │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoneMatching.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ └── index.tsx │ │ ├── WalletContextMenu.tsx │ │ ├── WalletdAuthedLayout.tsx │ │ ├── WalletdPublicLayout.tsx │ │ ├── WalletdSidenav.tsx │ │ ├── WalletdTestnetWarningBanner.tsx │ │ ├── WalletsContextMenu.tsx │ │ └── WalletsList │ │ │ ├── Layout.tsx │ │ │ ├── StateError.tsx │ │ │ ├── StateNoneMatching.tsx │ │ │ ├── StateNoneYet.tsx │ │ │ ├── WalletsActionsMenu.tsx │ │ │ ├── WalletsFiltersBar.tsx │ │ │ ├── WalletsViewDropdownMenu.tsx │ │ │ └── index.tsx │ ├── config │ │ ├── buildMode.ts │ │ ├── buildModeExport.ts │ │ ├── providers.tsx │ │ ├── routes.ts │ │ ├── style.css │ │ ├── swr.ts │ │ └── walletTypes.tsx │ ├── contexts │ │ ├── addresses │ │ │ ├── columns.tsx │ │ │ ├── dataset.tsx │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── app │ │ │ └── index.tsx │ │ ├── dialog.tsx │ │ ├── events │ │ │ ├── columns.tsx │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── ledger │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ └── wallets │ │ │ ├── columns.tsx │ │ │ ├── index.tsx │ │ │ ├── types.ts │ │ │ └── useWalletSeedCache.ts │ ├── dialogs │ │ ├── AddressRemoveDialog.tsx │ │ ├── AddressUpdateDialog │ │ │ └── index.tsx │ │ ├── CalloutWarning.tsx │ │ ├── DeviceConnectForm │ │ │ ├── LedgerLayout.tsx │ │ │ └── index.tsx │ │ ├── FieldMnemonic.tsx │ │ ├── FieldRescan.tsx │ │ ├── SeedLayout.tsx │ │ ├── WalletAddLedgerDialog │ │ │ └── index.tsx │ │ ├── WalletAddNewDialog │ │ │ └── index.tsx │ │ ├── WalletAddRecoverDialog │ │ │ └── index.tsx │ │ ├── WalletAddTypeDialog.tsx │ │ ├── WalletAddWatchDialog │ │ │ └── index.tsx │ │ ├── WalletAddressesAddDialog.tsx │ │ ├── WalletAddressesGenerateLedgerDialog │ │ │ ├── LedgerAddress │ │ │ │ ├── AddressLayout.tsx │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── WalletAddressesGenerateSeedDialog │ │ │ └── index.tsx │ │ ├── WalletRemoveDialog.tsx │ │ ├── WalletSendLedgerDialog │ │ │ ├── LedgerSignTxn │ │ │ │ ├── TransactionLayout.tsx │ │ │ │ └── index.tsx │ │ │ ├── WalletSendLedgerDialogV1 │ │ │ │ ├── index.tsx │ │ │ │ ├── useFundAndSignV1.tsx │ │ │ │ ├── useSendFormV1.tsx │ │ │ │ └── useSignV1.tsx │ │ │ ├── WalletSendLedgerDialogV2 │ │ │ │ ├── index.tsx │ │ │ │ ├── useFundAndSignV2.tsx │ │ │ │ ├── useSendFormV2.tsx │ │ │ │ └── useSignV2.tsx │ │ │ └── index.tsx │ │ ├── WalletSendSeedDialog │ │ │ ├── WalletSendSeedDialogV1 │ │ │ │ ├── index.tsx │ │ │ │ ├── useSendFormV1.tsx │ │ │ │ └── useSignAndBroadcastV1.tsx │ │ │ ├── WalletSendSeedDialogV2 │ │ │ │ ├── index.tsx │ │ │ │ ├── useSendFormV2.tsx │ │ │ │ └── useSignAndBroadcastV2.tsx │ │ │ └── index.tsx │ │ ├── WalletUnlockDialog.tsx │ │ ├── WalletUpdateDialog │ │ │ └── index.tsx │ │ ├── WalletdSettingsDialog.tsx │ │ ├── WalletsRescanDialog.tsx │ │ ├── _sharedWalletSend │ │ │ ├── TransactionVersionIndicator.tsx │ │ │ └── hardforkV2.ts │ │ ├── _sharedWalletSendV1 │ │ │ ├── SendDoneV1.tsx │ │ │ ├── SendFlowDialogV1.tsx │ │ │ ├── SendReceiptV1.tsx │ │ │ ├── typesV1.tsx │ │ │ ├── useBroadcastV1.tsx │ │ │ ├── useCancelV1.tsx │ │ │ ├── useComposeFormV1.tsx │ │ │ └── useFundV1.tsx │ │ └── _sharedWalletSendV2 │ │ │ ├── SendDoneV2.tsx │ │ │ ├── SendFlowDialogV2.tsx │ │ │ ├── SendReceiptV2.tsx │ │ │ ├── typesV2.tsx │ │ │ ├── useBroadcastV2.tsx │ │ │ ├── useCancelV2.tsx │ │ │ ├── useComposeFormV2.tsx │ │ │ └── useConstructV2.tsx │ ├── hooks │ │ ├── useSiascanUrl.ts │ │ ├── useSyncStatus.ts │ │ ├── useWalletAddresses.tsx │ │ └── useWalletCachedSeed.tsx │ ├── index.d.ts │ ├── jest.config.ts │ ├── jest.polyfills.js │ ├── lib │ │ ├── __snapshots__ │ │ │ ├── signLedgerV1.spec.ts.snap │ │ │ ├── signSeedV1.spec.ts.snap │ │ │ └── signSeedV2.spec.ts.snap │ │ ├── fieldMnemonic.tsx │ │ ├── mocks │ │ │ ├── mockConsensusNetwork.ts │ │ │ ├── mockConsensusTipState.ts │ │ │ └── mockSeedWallet.ts │ │ ├── signLedgerV1.spec.ts │ │ ├── signLedgerV1.ts │ │ ├── signLedgerV2.ts │ │ ├── signSeedV1.spec.ts │ │ ├── signSeedV1.ts │ │ ├── signSeedV2.spec.ts │ │ ├── signSeedV2.ts │ │ ├── signV1.ts │ │ ├── signV2.ts │ │ ├── testMocks.ts │ │ └── time.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── pages │ │ ├── 404.tsx │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ ├── index.tsx │ │ ├── login.tsx │ │ ├── node │ │ │ └── index.tsx │ │ └── wallets │ │ │ └── [id] │ │ │ ├── addresses.tsx │ │ │ └── index.tsx │ ├── postcss.config.js │ ├── project.json │ ├── public │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── browserconfig.xml │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── manifest.json │ │ ├── mstile-144x144.png │ │ ├── mstile-150x150.png │ │ ├── mstile-310x150.png │ │ ├── mstile-310x310.png │ │ ├── mstile-70x70.png │ │ ├── safari-pinned-tab.svg │ │ ├── site.webmanifest │ │ └── walletd.wasm │ ├── specs │ │ └── index.spec.tsx │ ├── tailwind.config.js │ ├── tsconfig.json │ └── tsconfig.spec.json └── website │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── Dockerfile │ ├── README.md │ ├── assets │ ├── earth-dark-contrast.png │ ├── earth-topology.png │ └── night-sky.png │ ├── components │ ├── CalloutCoreSoftware.tsx │ ├── CalloutHostd.tsx │ ├── CalloutProject.tsx │ ├── CalloutRenterd.tsx │ ├── CalloutTutorial.tsx │ ├── CalloutWalletd.tsx │ ├── Carousel.tsx │ ├── CarouselHostd.tsx │ ├── CarouselRenterd.tsx │ ├── CarouselWalletd.tsx │ ├── DownloadCard.tsx │ ├── DownloadDaemonSelect.tsx │ ├── DownloadDesktopSelect.tsx │ ├── DownloadLinks.tsx │ ├── DownloadSection.tsx │ ├── GitHubActivity.tsx │ ├── HostMap │ │ ├── Globe.tsx │ │ ├── GlobeGl.tsx │ │ ├── HostItem.tsx │ │ ├── index.tsx │ │ └── utils.ts │ ├── Italic.tsx │ ├── Layout │ │ ├── Background.tsx │ │ ├── Footer.tsx │ │ ├── Navbar │ │ │ ├── GrantsNav.tsx │ │ │ ├── HostNav.tsx │ │ │ ├── NavItem.tsx │ │ │ ├── NavMenu.tsx │ │ │ ├── NavbarLink.tsx │ │ │ ├── RentNav.tsx │ │ │ ├── WalletNav.tsx │ │ │ └── index.tsx │ │ ├── SiteMenu.tsx │ │ └── index.tsx │ ├── Map │ │ ├── Globe.tsx │ │ ├── GlobeDyn.tsx │ │ ├── GlobeImp.tsx │ │ ├── HostItem.tsx │ │ ├── index.tsx │ │ ├── useRoutes.tsx │ │ └── utils.ts │ ├── MicaComplianceTable.tsx │ ├── PageHead.tsx │ ├── SectionGradient.tsx │ ├── SectionProjects.tsx │ ├── SectionSolid.tsx │ ├── SectionTransparent.tsx │ ├── SectionTutorials.tsx │ ├── SitePageHead.tsx │ ├── SoftwareSection.tsx │ ├── SoftwareSectionCurrentGen.tsx │ ├── SoftwareSignAccordion.tsx │ ├── Statsbar.tsx │ ├── TableOfContents.tsx │ └── Terminal.tsx │ ├── config │ ├── app.ts │ ├── mdx.tsx │ ├── routes.ts │ ├── siascan.ts │ ├── siteMap.ts │ └── style.css │ ├── content │ ├── articles.ts │ ├── assets.ts │ ├── downloads.spec.ts │ ├── downloads.ts │ ├── feed.ts │ ├── geoHosts.ts │ ├── grantCommittee.ts │ ├── mica.ts │ ├── projects.ts │ ├── prs.ts │ ├── releases.ts │ ├── reports.ts │ ├── stats.ts │ └── team.ts │ ├── hooks │ ├── useScrollTop.tsx │ └── useTermsOfService.tsx │ ├── index.d.ts │ ├── jest.config.ts │ ├── lib │ ├── cache.ts │ ├── types.ts │ └── utils.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── pages │ ├── _app.tsx │ ├── _document.tsx │ ├── about-sia-foundation │ │ └── index.tsx │ ├── activity │ │ └── index.tsx │ ├── api │ │ ├── downloads │ │ │ └── latest │ │ │ │ └── [name].ts │ │ ├── news.ts │ │ └── stats.ts │ ├── community-ecosystem │ │ └── index.tsx │ ├── grants │ │ └── index.tsx │ ├── host │ │ └── index.tsx │ ├── hosting-best-practices │ │ └── index.tsx │ ├── index.tsx │ ├── learn │ │ └── index.tsx │ ├── letter │ │ └── index.tsx │ ├── map.tsx │ ├── markdown │ │ └── index.tsx │ ├── mica-indicators │ │ ├── index.tsx │ │ └── methodology.tsx │ ├── news │ │ └── index.tsx │ ├── privacy-policy │ │ └── index.tsx │ ├── rent │ │ └── index.tsx │ ├── roadmap │ │ └── index.tsx │ ├── software │ │ ├── hostd.tsx │ │ ├── renterd.tsx │ │ └── walletd.tsx │ ├── terms-of-service │ │ └── index.tsx │ └── wallet │ │ └── index.tsx │ ├── postcss.config.js │ ├── project.json │ ├── proxy.conf.json │ ├── public │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── built-with-sia.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── logo-green.png │ ├── logo-simple.svg │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── safari-pinned-tab.svg │ ├── sia.pdf │ ├── site.webmanifest │ ├── texture.mp4 │ ├── texture.webm │ └── wordmark.svg │ ├── specs │ └── index.spec.tsx │ ├── tailwind.config.js │ ├── tsconfig.json │ └── tsconfig.spec.json ├── babel.config.json ├── commitlint.config.js ├── hostd ├── assets │ ├── 404.html │ ├── _next │ │ └── static │ │ │ ├── XQcrPK2TFopAp_Tukrirz │ │ │ ├── _buildManifest.js │ │ │ └── _ssgManifest.js │ │ │ ├── chunks │ │ │ ├── 546-18db83d1de02bcce.js │ │ │ ├── framework-ab7ddb551c23d05a.js │ │ │ ├── main-9a8933a9641dc604.js │ │ │ ├── pages │ │ │ │ ├── 404-63d78dbaee115439.js │ │ │ │ ├── _app-e4d5962aebe38a03.js │ │ │ │ ├── _error-fedd2c6ebd3d27b9.js │ │ │ │ ├── alerts-fdf9abebe4d79eb2.js │ │ │ │ ├── config-e6c8891d8675da0c.js │ │ │ │ ├── contracts-89adf3e79c024f31.js │ │ │ │ ├── index-3c95b65f69accfca.js │ │ │ │ ├── login-0c7919135674cb9a.js │ │ │ │ ├── node-25dd79234a9da0ae.js │ │ │ │ ├── volumes-bad39f3f2606c828.js │ │ │ │ └── wallet-7c6d8f30628a4d1b.js │ │ │ ├── polyfills-42372ed130431b0a.js │ │ │ └── webpack-dbca7c9a1026ae6e.js │ │ │ ├── css │ │ │ └── 979046ddc93ac9b6.css │ │ │ └── media │ │ │ ├── 0080c7cc0358560d-s.p.ttf │ │ │ ├── 1f006d314a98579d-s.p.ttf │ │ │ ├── 2a9c8cd1557dff1f-s.p.ttf │ │ │ ├── 2eb2520448311ef1-s.p.ttf │ │ │ ├── 3b9fc75b5e4edbe8-s.p.ttf │ │ │ ├── 5e23ff29335edf6f-s.p.ttf │ │ │ ├── 75bdf6088f33f6b5-s.p.ttf │ │ │ ├── 7c138e5a79adee83-s.p.ttf │ │ │ ├── 821657fca713650c-s.p.ttf │ │ │ ├── 8fed4885c1998d22-s.p.ttf │ │ │ ├── 91e452a6ea0c2132-s.p.ttf │ │ │ ├── 92fb447c05bf9b9f-s.p.ttf │ │ │ ├── 95d3796716a13c75-s.p.ttf │ │ │ ├── 9617e7fa3dc6e5c9-s.p.ttf │ │ │ ├── 9a27e3caec76e96d-s.p.ttf │ │ │ ├── 9d81b3b04eda94e0-s.p.ttf │ │ │ ├── 9e96e104b3eba4d3-s.p.ttf │ │ │ ├── a0ff83e86182150e-s.p.ttf │ │ │ ├── b01b725c4365f934-s.p.ttf │ │ │ ├── b57725b8c3470143-s.p.ttf │ │ │ ├── background-pattern.b997b25c.jpg │ │ │ ├── c29124625443164b-s.p.ttf │ │ │ ├── c7dc84d05cfe8080-s.p.ttf │ │ │ ├── cd124faa19a7ef9a-s.p.ttf │ │ │ ├── eaf5386fcb6f48b8-s.p.ttf │ │ │ ├── efb590a61a6e0af3-s.p.ttf │ │ │ ├── f3f50cbb62517d96-s.p.ttf │ │ │ ├── fdd3a36928f25e30-s.p.ttf │ │ │ ├── ff2e3c2bdfe56465-s.p.ttf │ │ │ └── logo.0e2362ab.png │ ├── alerts.html │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── config.html │ ├── contracts.html │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── index.html │ ├── login.html │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── node.html │ ├── safari-pinned-tab.svg │ ├── site.webmanifest │ ├── volumes.html │ └── wallet.html ├── go.mod ├── go.sum ├── hostd.go └── hostd_test.go ├── internal ├── cluster │ ├── README.md │ ├── cmd │ │ └── clusterd │ │ │ ├── contract.go │ │ │ ├── main.go │ │ │ └── wallet.go │ ├── go.mod │ └── go.sum └── nextjs │ ├── go.mod │ ├── nextjs.go │ └── nextjs_test.go ├── jest.config.ts ├── jest.preset.js ├── libs ├── clusterd │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── data-sources │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── index.ts │ │ └── lib │ │ │ ├── assets.ts │ │ │ ├── benchmarks.ts │ │ │ ├── error.ts │ │ │ ├── feedRssGenerate.ts │ │ │ ├── feedRssSync.ts │ │ │ ├── github.ts │ │ │ ├── notion │ │ │ ├── articles.ts │ │ │ ├── assets.ts │ │ │ ├── assetsSync.ts │ │ │ ├── feed.ts │ │ │ ├── feedsSync.ts │ │ │ ├── grantCommittee.ts │ │ │ ├── markdown.ts │ │ │ ├── notion.ts │ │ │ ├── projects.ts │ │ │ ├── retry.ts │ │ │ └── team.ts │ │ │ └── types.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── design-system │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── jest.polyfills.js │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── app │ │ │ ├── AppAuthedLayout │ │ │ │ ├── Sidenav.tsx │ │ │ │ ├── SidenavItem.tsx │ │ │ │ ├── SidenavItemWallet.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── useAutoLock.ts │ │ │ │ └── useConnAndPassLock.ts │ │ │ ├── AppBackdrop.tsx │ │ │ ├── AppDockedControl.tsx │ │ │ ├── AppLogin.tsx │ │ │ ├── AppNavbar.tsx │ │ │ ├── AppPageHead.tsx │ │ │ ├── AppPublicLayout │ │ │ │ └── index.tsx │ │ │ ├── AppRootLayout │ │ │ │ └── index.tsx │ │ │ ├── ConfirmDialog.tsx │ │ │ ├── ContractTimeline │ │ │ │ ├── Labels.tsx │ │ │ │ ├── Point.tsx │ │ │ │ ├── Segment.tsx │ │ │ │ └── index.tsx │ │ │ ├── CurrencyDisplaySelector.tsx │ │ │ ├── CurrencyFiatSelector.tsx │ │ │ ├── DaemonProfile │ │ │ │ ├── Header.tsx │ │ │ │ ├── SyncStatus.tsx │ │ │ │ └── index.tsx │ │ │ ├── DataLabel.tsx │ │ │ ├── DataPanel.tsx │ │ │ ├── DatumCardConfigurable.tsx │ │ │ ├── DatumScrollArea.tsx │ │ │ ├── MenuSectionLabelToggleAll.tsx │ │ │ ├── PanelMenuSection.tsx │ │ │ ├── PanelMenuSetting.tsx │ │ │ ├── PeerList.tsx │ │ │ ├── ProgressSteps.tsx │ │ │ ├── SettingsDialog.tsx │ │ │ ├── SyncerConnectPeerDialog.tsx │ │ │ ├── TestnetWarningBanner.tsx │ │ │ ├── TransactionDetailsDialog.tsx │ │ │ ├── WalletAddAddressDialog.tsx │ │ │ ├── WalletAddressCode.tsx │ │ │ ├── WalletBalance.tsx │ │ │ ├── WalletBalanceEvolution.tsx │ │ │ ├── WalletBalanceSideNav.tsx │ │ │ ├── WalletBalanceTip.tsx │ │ │ ├── WalletLayoutActions.tsx │ │ │ ├── WalletSendSiacoinDialog │ │ │ │ ├── Complete.tsx │ │ │ │ ├── Confirm.tsx │ │ │ │ ├── Generate.tsx │ │ │ │ ├── Receipt.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── types.ts │ │ │ ├── WalletSingleAddressDetailsDialog.tsx │ │ │ └── WalletSyncWarning.tsx │ │ ├── assets │ │ │ ├── background-image.gif │ │ │ ├── background-pattern.jpg │ │ │ ├── logo.png │ │ │ ├── wave.svg │ │ │ └── wordmark.svg │ │ ├── components │ │ │ ├── ChartBrush │ │ │ │ └── index.tsx │ │ │ ├── ChartTimeValue │ │ │ │ ├── AreaChart.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── utils.ts │ │ │ ├── ChartXY │ │ │ │ ├── ChartXYConfig.tsx │ │ │ │ ├── ChartXYGraph.tsx │ │ │ │ ├── customTheme.ts │ │ │ │ ├── getChartComponents.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── types.ts │ │ │ │ └── useChartXY.tsx │ │ │ ├── ClientSideOnly.tsx │ │ │ ├── DatumCard.tsx │ │ │ ├── DatumSkeleton.tsx │ │ │ ├── Dropzone.tsx │ │ │ ├── EmptyState │ │ │ │ ├── StateError.tsx │ │ │ │ ├── StateNoData.tsx │ │ │ │ ├── StateNoneMatching.tsx │ │ │ │ ├── StateNoneOnPage.tsx │ │ │ │ ├── StateNoneYet.tsx │ │ │ │ └── index.tsx │ │ │ ├── Form.tsx │ │ │ ├── FormFormik.tsx │ │ │ ├── ListWithSeparators.tsx │ │ │ ├── LoadingDots.tsx │ │ │ ├── PaginatorKnownTotal.tsx │ │ │ ├── PaginatorMarker.tsx │ │ │ ├── PaginatorUnknownTotal.tsx │ │ │ ├── SectionHeading.tsx │ │ │ ├── Table │ │ │ │ ├── TableRow.tsx │ │ │ │ └── index.tsx │ │ │ ├── ThemeRadio.tsx │ │ │ ├── UserDropdownMenu.tsx │ │ │ ├── ValueCopyable.tsx │ │ │ ├── ValueFiat.tsx │ │ │ ├── ValueMenu.tsx │ │ │ ├── ValueNum.tsx │ │ │ ├── ValueSc.tsx │ │ │ ├── ValueScFiat.tsx │ │ │ ├── ValueSf.tsx │ │ │ └── Wordmark.tsx │ │ ├── core │ │ │ ├── Accordion.tsx │ │ │ ├── Alert.tsx │ │ │ ├── Avatar.tsx │ │ │ ├── Badge.tsx │ │ │ ├── BaseNumberField.tsx │ │ │ ├── Button.tsx │ │ │ ├── Checkbox.tsx │ │ │ ├── Code.tsx │ │ │ ├── Codeblock.tsx │ │ │ ├── Container.tsx │ │ │ ├── ControlGroup.tsx │ │ │ ├── Dialog.tsx │ │ │ ├── DropdownMenu.tsx │ │ │ ├── ExpandableText.tsx │ │ │ ├── Heading.tsx │ │ │ ├── HoverCard.tsx │ │ │ ├── Image.tsx │ │ │ ├── InfoTip.tsx │ │ │ ├── Label.tsx │ │ │ ├── Link.tsx │ │ │ ├── List.tsx │ │ │ ├── Logo.tsx │ │ │ ├── Menu.tsx │ │ │ ├── NavMenu.tsx │ │ │ ├── NumberField.spec.tsx │ │ │ ├── NumberField.tsx │ │ │ ├── Panel.tsx │ │ │ ├── Paragraph.tsx │ │ │ ├── PoolCombo.tsx │ │ │ ├── PoolSelected.tsx │ │ │ ├── Popover.tsx │ │ │ ├── ProgressBar.tsx │ │ │ ├── Radio.tsx │ │ │ ├── RadioCard.tsx │ │ │ ├── ScrollArea.tsx │ │ │ ├── Section.tsx │ │ │ ├── Select.tsx │ │ │ ├── SelectCard.tsx │ │ │ ├── Separator.tsx │ │ │ ├── SiacoinField.spec.tsx │ │ │ ├── SiacoinField.tsx │ │ │ ├── Skeleton.tsx │ │ │ ├── Status.tsx │ │ │ ├── Switch.tsx │ │ │ ├── Tabs.tsx │ │ │ ├── Text.tsx │ │ │ ├── TextArea.tsx │ │ │ ├── TextField.tsx │ │ │ └── Tooltip.tsx │ │ ├── data │ │ │ └── webLinks.ts │ │ ├── form │ │ │ ├── ConfigurationControl.tsx │ │ │ ├── ConfigurationFiat.tsx │ │ │ ├── ConfigurationNumber.tsx │ │ │ ├── ConfigurationPanel.tsx │ │ │ ├── ConfigurationPanelSetting.tsx │ │ │ ├── ConfigurationSelect.tsx │ │ │ ├── ConfigurationSiacoin.tsx │ │ │ ├── ConfigurationSwitch.tsx │ │ │ ├── ConfigurationText.tsx │ │ │ ├── FieldFiat.tsx │ │ │ ├── FieldNumber.tsx │ │ │ ├── FieldSelect.tsx │ │ │ ├── FieldSiacoin.tsx │ │ │ ├── FieldSwitch.tsx │ │ │ ├── FieldText.tsx │ │ │ ├── FieldTextArea.tsx │ │ │ ├── TipNumber.tsx │ │ │ ├── TipText.tsx │ │ │ ├── configurationFields.ts │ │ │ ├── useDialogFormHelpers.ts │ │ │ ├── useFormChangeCount.tsx │ │ │ ├── useFormInit.tsx │ │ │ ├── useFormServerSynced.tsx │ │ │ └── useFormSetField.ts │ │ ├── hooks │ │ │ ├── tooltip.ts │ │ │ ├── useClientFilteredDataset.ts │ │ │ ├── useClientFilters.ts │ │ │ ├── useConnectivity.ts │ │ │ ├── useDatasetState.tsx │ │ │ ├── useExternalConsensusNetwork.tsx │ │ │ ├── useExternalExchangeRate.tsx │ │ │ ├── useExternalHostMetrics.tsx │ │ │ ├── useExternalHostsList.tsx │ │ │ ├── useFormChanged.tsx │ │ │ ├── useIsExternalDomain.tsx │ │ │ ├── useOS.ts │ │ │ ├── useOpen.tsx │ │ │ ├── usePaginationMarker.ts │ │ │ ├── usePaginationOffset.ts │ │ │ ├── useResetPagination.ts │ │ │ ├── useServerFilters.ts │ │ │ ├── useSiacoinFiat.tsx │ │ │ ├── useSorting.ts │ │ │ └── useTableState.ts │ │ ├── index.ts │ │ ├── lib │ │ │ ├── chartData.ts │ │ │ ├── chartStats.ts │ │ │ ├── clipboard.tsx │ │ │ ├── colors.ts │ │ │ ├── contracts.ts │ │ │ ├── countryEmoji.ts │ │ │ ├── getOs.ts │ │ │ ├── handleBatchOperation.ts │ │ │ ├── image.ts │ │ │ ├── links.ts │ │ │ ├── mnemonics.ts │ │ │ ├── nodeToImage.tsx │ │ │ ├── numbers.ts │ │ │ ├── object.ts │ │ │ ├── toast.tsx │ │ │ └── utils.ts │ │ ├── multi │ │ │ ├── MultiSelectionMenu.tsx │ │ │ ├── useMultiSelect.spec.tsx │ │ │ └── useMultiSelect.tsx │ │ ├── public │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-512x512.png │ │ │ ├── apple-touch-icon.png │ │ │ ├── banners │ │ │ │ ├── sia-banner-api-docs.png │ │ │ │ ├── sia-banner-core.png │ │ │ │ ├── sia-banner-daemons.png │ │ │ │ ├── sia-banner-explorer.png │ │ │ │ ├── sia-banner-hostd.png │ │ │ │ ├── sia-banner-leaves.png │ │ │ │ ├── sia-banner-mountains.png │ │ │ │ ├── sia-banner-mux.png │ │ │ │ ├── sia-banner-renterd.png │ │ │ │ ├── sia-banner-siad.png │ │ │ │ └── sia-banner-web.png │ │ │ ├── browserconfig.xml │ │ │ ├── built-with-sia.png │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── favicon.ico │ │ │ ├── logo-green.png │ │ │ ├── logo-simple.svg │ │ │ ├── mstile-144x144.png │ │ │ ├── mstile-150x150.png │ │ │ ├── mstile-310x150.png │ │ │ ├── mstile-310x310.png │ │ │ ├── mstile-70x70.png │ │ │ ├── safari-pinned-tab.svg │ │ │ ├── texture.mp4 │ │ │ ├── texture.webm │ │ │ └── wordmark.svg │ │ ├── site │ │ │ ├── BackgroundImagePattern.tsx │ │ │ ├── Callout.tsx │ │ │ ├── ContentGallery.tsx │ │ │ ├── ContentItem.tsx │ │ │ ├── ContentProject.tsx │ │ │ ├── Links.tsx │ │ │ ├── LocalBackdrop.tsx │ │ │ ├── NextAppCsr.tsx │ │ │ ├── NextAppSsrAppRouter.tsx │ │ │ ├── PatternedPanel.tsx │ │ │ ├── SiteHeading.tsx │ │ │ ├── SiteMap.tsx │ │ │ ├── TransparentGradient.tsx │ │ │ └── WebDomain.tsx │ │ ├── style │ │ │ ├── plugins │ │ │ │ └── animation-delay.js │ │ │ ├── style.css │ │ │ ├── theme-colors.js │ │ │ └── theme.js │ │ └── types.ts │ ├── tailwind.config.js │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── e2e │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── fixtures │ │ │ ├── clearToasts.ts │ │ │ ├── click.ts │ │ │ ├── cmdk.ts │ │ │ ├── configViewMode.ts │ │ │ ├── expect.ts │ │ │ ├── mouse.ts │ │ │ ├── preferences.ts │ │ │ ├── selectInput.ts │ │ │ ├── siascan.ts │ │ │ ├── skip.ts │ │ │ ├── step.ts │ │ │ ├── switchValue.ts │ │ │ ├── table.ts │ │ │ ├── textInput.ts │ │ │ └── textarea.ts │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── explored-js │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── api.ts │ │ ├── example.ts │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── explored-react │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── hooks.ts │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── explored-types │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── api.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── fonts │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── fonts │ │ │ ├── IBM_Plex_Mono │ │ │ │ ├── IBMPlexMono-Bold.ttf │ │ │ │ ├── IBMPlexMono-BoldItalic.ttf │ │ │ │ ├── IBMPlexMono-ExtraLight.ttf │ │ │ │ ├── IBMPlexMono-ExtraLightItalic.ttf │ │ │ │ ├── IBMPlexMono-Italic.ttf │ │ │ │ ├── IBMPlexMono-Light.ttf │ │ │ │ ├── IBMPlexMono-LightItalic.ttf │ │ │ │ ├── IBMPlexMono-Medium.ttf │ │ │ │ ├── IBMPlexMono-MediumItalic.ttf │ │ │ │ ├── IBMPlexMono-Regular.ttf │ │ │ │ ├── IBMPlexMono-SemiBold.ttf │ │ │ │ ├── IBMPlexMono-SemiBoldItalic.ttf │ │ │ │ ├── IBMPlexMono-Thin.ttf │ │ │ │ ├── IBMPlexMono-ThinItalic.ttf │ │ │ │ └── OFL.txt │ │ │ └── IBM_Plex_Sans │ │ │ │ ├── IBMPlexSans-Bold.ttf │ │ │ │ ├── IBMPlexSans-BoldItalic.ttf │ │ │ │ ├── IBMPlexSans-ExtraLight.ttf │ │ │ │ ├── IBMPlexSans-ExtraLightItalic.ttf │ │ │ │ ├── IBMPlexSans-Italic.ttf │ │ │ │ ├── IBMPlexSans-Light.ttf │ │ │ │ ├── IBMPlexSans-LightItalic.ttf │ │ │ │ ├── IBMPlexSans-Medium.ttf │ │ │ │ ├── IBMPlexSans-MediumItalic.ttf │ │ │ │ ├── IBMPlexSans-Regular.ttf │ │ │ │ ├── IBMPlexSans-SemiBold.ttf │ │ │ │ ├── IBMPlexSans-SemiBoldItalic.ttf │ │ │ │ ├── IBMPlexSans-Thin.ttf │ │ │ │ ├── IBMPlexSans-ThinItalic.ttf │ │ │ │ └── OFL.txt │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── hostd-js │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── api.ts │ │ ├── example.ts │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── hostd-react │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── api.ts │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── hostd-types │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── api.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── next │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── react-core │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── jest.polyfills.js │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── appSettings │ │ │ ├── index.tsx │ │ │ ├── useExternalData │ │ │ │ ├── currency.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── types.ts │ │ │ │ └── useDaemonExplorerMetadata.ts │ │ │ ├── useGpuFeatures.tsx │ │ │ ├── useIsAuthenticatedRoute.ts │ │ │ └── useRequestSettings │ │ │ │ ├── index.tsx │ │ │ │ ├── types.ts │ │ │ │ └── useIsAuthenticatedRoute.ts │ │ ├── arrayResponse.tsx │ │ ├── coreProvider.tsx │ │ ├── handleResponse.ts │ │ ├── index.spec.tsx │ │ ├── index.ts │ │ ├── mutate.ts │ │ ├── request.ts │ │ ├── throttle.test.ts │ │ ├── throttle.ts │ │ ├── types.ts │ │ ├── useDelete.ts │ │ ├── useGet.ts │ │ ├── useGetDownload.ts │ │ ├── usePatch.ts │ │ ├── usePost.ts │ │ ├── usePut.ts │ │ ├── useThrottledStateMap.ts │ │ ├── useTryUntil.ts │ │ ├── userPrefersReducedMotion.ts │ │ ├── utils.ts │ │ └── workflows.tsx │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── react-icons │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── BarsProgressIcon.tsx │ │ ├── BellIcon.tsx │ │ ├── BucketIcon.tsx │ │ ├── BugIcon.tsx │ │ ├── DatabaseIcon.tsx │ │ ├── DiceIcon.tsx │ │ ├── FaucetIcon.tsx │ │ ├── FileContractIcon.tsx │ │ ├── FolderIcon.tsx │ │ ├── GearIcon.tsx │ │ ├── HardDriveIcon.tsx │ │ ├── HidIcon.tsx │ │ ├── HouseIcon.tsx │ │ ├── KeyIcon.tsx │ │ ├── LockIcon.tsx │ │ ├── LogoMenuIcon.tsx │ │ ├── MenuIcon.tsx │ │ ├── PlaneIcon.tsx │ │ ├── RedditIcon.tsx │ │ ├── SeedIcon.tsx │ │ ├── SimpleLogoIcon.tsx │ │ ├── TestToolIcon.tsx │ │ ├── UsbIcon.tsx │ │ ├── VerifyIcon.tsx │ │ ├── WalletIcon.tsx │ │ ├── Waves.tsx │ │ ├── WrenchIcon.tsx │ │ ├── carbon.ts │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── renterd-js │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── autopilot.ts │ │ ├── bus.ts │ │ ├── example.ts │ │ ├── index.spec.ts │ │ ├── index.ts │ │ └── worker.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── renterd-react │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── autopilot.ts │ │ ├── bus.ts │ │ ├── index.ts │ │ └── worker.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── renterd-types │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── autopilot.ts │ │ ├── bus.ts │ │ ├── index.ts │ │ ├── types.ts │ │ └── worker.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── request │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── sdk │ ├── .babelrc │ ├── .eslintrc.json │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── jest.polyfills.js │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── global.d.ts │ │ ├── index.ts │ │ ├── init.ts │ │ ├── initTest.ts │ │ ├── legacy │ │ │ ├── encoder.ts │ │ │ ├── encoding.spec.ts │ │ │ ├── encoding.ts │ │ │ ├── example.ts │ │ │ ├── rpc.spec.ts │ │ │ ├── rpc.ts │ │ │ ├── transport.ts │ │ │ └── types.ts │ │ ├── resources │ │ │ └── .gitkeep │ │ ├── rhp.spec.ts │ │ ├── sdk.ts │ │ ├── transport.ts │ │ ├── types.ts │ │ ├── utils │ │ │ ├── wasm_exec.d.ts │ │ │ └── wasm_exec.js │ │ ├── wallet.mock.ts │ │ ├── wallet.spec.ts │ │ ├── wasm.ts │ │ └── wasmTest.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── sia-central-mock │ ├── CHANGELOG.md │ └── package.json ├── sia-central-react │ ├── CHANGELOG.md │ └── package.json ├── types │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── core.ts │ │ ├── events.ts │ │ ├── index.ts │ │ ├── utils.ts │ │ └── v2.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── units │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── address.spec.ts │ │ ├── address.ts │ │ ├── blockHeight.ts │ │ ├── blockTime.ts │ │ ├── bytes.spec.ts │ │ ├── bytes.ts │ │ ├── currency.spec.ts │ │ ├── currency.ts │ │ ├── entityTypes.ts │ │ ├── events.ts │ │ ├── humanUnits.spec.ts │ │ ├── humanUnits.ts │ │ ├── index.ts │ │ ├── pluralize.spec.ts │ │ ├── pluralize.ts │ │ ├── sectors.ts │ │ ├── storage.spec.ts │ │ ├── storage.ts │ │ ├── time.ts │ │ ├── transactionTypes.ts │ │ ├── transactionValue.spec.ts │ │ ├── transactionValue.ts │ │ ├── valuePer.spec.ts │ │ └── valuePer.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── walletd-js │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── example.ts │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── walletd-mock │ ├── CHANGELOG.md │ └── package.json ├── walletd-react │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ │ ├── api.ts │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json └── walletd-types │ ├── .babelrc │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── project.json │ ├── rollup.config.js │ ├── src │ ├── api.ts │ ├── index.ts │ └── types.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── nx.json ├── package-lock.json ├── package.json ├── renterd ├── assets │ ├── 404.html │ ├── _next │ │ └── static │ │ │ ├── 4dW3WNuoelfLuprd1fj-X │ │ │ ├── _buildManifest.js │ │ │ └── _ssgManifest.js │ │ │ ├── chunks │ │ │ ├── 020d8314.3e21c8e15aa9f29d.js │ │ │ ├── 0e2c2e51.fa9e90e0fe00297f.js │ │ │ ├── 191-1b78a744d4bfc423.js │ │ │ ├── 246-a772b25ef38d4bfd.js │ │ │ ├── 32737f40.662212ae65040679.js │ │ │ ├── 63.4a73a0620f2204fe.js │ │ │ ├── 764.e6407ca3cbbf05f5.js │ │ │ ├── framework-ab7ddb551c23d05a.js │ │ │ ├── main-9a8933a9641dc604.js │ │ │ ├── pages │ │ │ │ ├── 404-e1ad23c3eb0a9691.js │ │ │ │ ├── _app-85710a8a4206769a.js │ │ │ │ ├── _error-fedd2c6ebd3d27b9.js │ │ │ │ ├── alerts-b54331fbf2e8733d.js │ │ │ │ ├── buckets-9a28bfff20cf1323.js │ │ │ │ ├── buckets │ │ │ │ │ └── [bucket] │ │ │ │ │ │ ├── files │ │ │ │ │ │ └── [[...path]]-c38a42e0fbc1e1ee.js │ │ │ │ │ │ └── uploads-a1b694a319cb4a22.js │ │ │ │ ├── config-64915d1a1c06d7d9.js │ │ │ │ ├── contracts-809eb9d0983768ee.js │ │ │ │ ├── hosts-3366c27bceaae7c6.js │ │ │ │ ├── index-0f0699931661176d.js │ │ │ │ ├── keys-7b60237bb66b7355.js │ │ │ │ ├── login-f3ca8713ebdc19f0.js │ │ │ │ ├── node-98ad2318c97afa8e.js │ │ │ │ └── wallet-94f7dd409c338834.js │ │ │ ├── polyfills-42372ed130431b0a.js │ │ │ └── webpack-bb707a4fbbe7127e.js │ │ │ ├── css │ │ │ └── 1302c4a18b251cc0.css │ │ │ └── media │ │ │ ├── 0080c7cc0358560d-s.p.ttf │ │ │ ├── 1f006d314a98579d-s.p.ttf │ │ │ ├── 2a9c8cd1557dff1f-s.p.ttf │ │ │ ├── 2eb2520448311ef1-s.p.ttf │ │ │ ├── 3b9fc75b5e4edbe8-s.p.ttf │ │ │ ├── 5e23ff29335edf6f-s.p.ttf │ │ │ ├── 75bdf6088f33f6b5-s.p.ttf │ │ │ ├── 7c138e5a79adee83-s.p.ttf │ │ │ ├── 821657fca713650c-s.p.ttf │ │ │ ├── 8fed4885c1998d22-s.p.ttf │ │ │ ├── 91e452a6ea0c2132-s.p.ttf │ │ │ ├── 92fb447c05bf9b9f-s.p.ttf │ │ │ ├── 95d3796716a13c75-s.p.ttf │ │ │ ├── 9617e7fa3dc6e5c9-s.p.ttf │ │ │ ├── 9a27e3caec76e96d-s.p.ttf │ │ │ ├── 9d81b3b04eda94e0-s.p.ttf │ │ │ ├── 9e96e104b3eba4d3-s.p.ttf │ │ │ ├── a0ff83e86182150e-s.p.ttf │ │ │ ├── b01b725c4365f934-s.p.ttf │ │ │ ├── b57725b8c3470143-s.p.ttf │ │ │ ├── background-pattern.b997b25c.jpg │ │ │ ├── c29124625443164b-s.p.ttf │ │ │ ├── c7dc84d05cfe8080-s.p.ttf │ │ │ ├── cd124faa19a7ef9a-s.p.ttf │ │ │ ├── eaf5386fcb6f48b8-s.p.ttf │ │ │ ├── earth-dark-contrast.bf7081fc.png │ │ │ ├── earth-topology.e385a70e.png │ │ │ ├── efb590a61a6e0af3-s.p.ttf │ │ │ ├── f3f50cbb62517d96-s.p.ttf │ │ │ ├── fdd3a36928f25e30-s.p.ttf │ │ │ ├── ff2e3c2bdfe56465-s.p.ttf │ │ │ └── logo.0e2362ab.png │ ├── alerts.html │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── buckets.html │ ├── buckets │ │ └── [bucket] │ │ │ ├── files │ │ │ └── [[...path]].html │ │ │ └── uploads.html │ ├── config.html │ ├── contracts.html │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── hosts.html │ ├── index.html │ ├── keys.html │ ├── login.html │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── node.html │ ├── safari-pinned-tab.svg │ ├── site.webmanifest │ └── wallet.html ├── go.mod ├── go.sum ├── renterd.go └── renterd_test.go ├── scripts ├── delete-nested-dists.sh ├── release-go.sh ├── replace-src-with-dists-for-publishing.sh └── update-cluster.sh ├── sdk ├── api.go ├── encode.go ├── go.mod ├── go.sum ├── main.go ├── marshal.go ├── rhp.go ├── utils.go └── wallet.go ├── server └── Caddyfile-dev ├── tools └── tsconfig.tools.json ├── tsconfig.base.json └── walletd ├── assets ├── 404.html ├── _next │ └── static │ │ ├── UsgB_UcTVzHGNOYUfzCOq │ │ ├── _buildManifest.js │ │ └── _ssgManifest.js │ │ ├── chunks │ │ ├── framework-ab7ddb551c23d05a.js │ │ ├── main-9a8933a9641dc604.js │ │ ├── pages │ │ │ ├── 404-91e01fd95eeeaea0.js │ │ │ ├── _app-1560a96c995d8ca8.js │ │ │ ├── _error-fedd2c6ebd3d27b9.js │ │ │ ├── index-ba109dbc2c8a8d64.js │ │ │ ├── login-424e82fef7155e0b.js │ │ │ ├── node-8c6da9d911ebf557.js │ │ │ └── wallets │ │ │ │ ├── [id]-07c677073329aa4d.js │ │ │ │ └── [id] │ │ │ │ └── addresses-d073de630c903c88.js │ │ ├── polyfills-42372ed130431b0a.js │ │ └── webpack-dbca7c9a1026ae6e.js │ │ ├── css │ │ └── 3210ee266ab6ea1d.css │ │ └── media │ │ ├── 0080c7cc0358560d-s.p.ttf │ │ ├── 1f006d314a98579d-s.p.ttf │ │ ├── 2a9c8cd1557dff1f-s.p.ttf │ │ ├── 2eb2520448311ef1-s.p.ttf │ │ ├── 3b9fc75b5e4edbe8-s.p.ttf │ │ ├── 5e23ff29335edf6f-s.p.ttf │ │ ├── 75bdf6088f33f6b5-s.p.ttf │ │ ├── 7c138e5a79adee83-s.p.ttf │ │ ├── 821657fca713650c-s.p.ttf │ │ ├── 8fed4885c1998d22-s.p.ttf │ │ ├── 91e452a6ea0c2132-s.p.ttf │ │ ├── 92fb447c05bf9b9f-s.p.ttf │ │ ├── 95d3796716a13c75-s.p.ttf │ │ ├── 9617e7fa3dc6e5c9-s.p.ttf │ │ ├── 9a27e3caec76e96d-s.p.ttf │ │ ├── 9d81b3b04eda94e0-s.p.ttf │ │ ├── 9e96e104b3eba4d3-s.p.ttf │ │ ├── a0ff83e86182150e-s.p.ttf │ │ ├── b01b725c4365f934-s.p.ttf │ │ ├── b57725b8c3470143-s.p.ttf │ │ ├── background-pattern.b997b25c.jpg │ │ ├── c29124625443164b-s.p.ttf │ │ ├── c7dc84d05cfe8080-s.p.ttf │ │ ├── cd124faa19a7ef9a-s.p.ttf │ │ ├── eaf5386fcb6f48b8-s.p.ttf │ │ ├── efb590a61a6e0af3-s.p.ttf │ │ ├── f3f50cbb62517d96-s.p.ttf │ │ ├── fdd3a36928f25e30-s.p.ttf │ │ ├── ff2e3c2bdfe56465-s.p.ttf │ │ └── logo.0e2362ab.png ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── browserconfig.xml ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── index.html ├── login.html ├── manifest.json ├── mstile-144x144.png ├── mstile-150x150.png ├── mstile-310x150.png ├── mstile-310x310.png ├── mstile-70x70.png ├── node.html ├── safari-pinned-tab.svg ├── site.webmanifest ├── walletd.wasm └── wallets │ ├── [id].html │ └── [id] │ └── addresses.html ├── go.mod ├── go.sum ├── walletd.go └── walletd_test.go /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.2.0/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [], 11 | "privatePackages": { "version": true, "tag": true } 12 | } 13 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | GITHUB_TOKEN=secret_token 2 | NOTION_TOKEN=secret_token 3 | ASSETS=/User/bob/web/assets 4 | 5 | # Make Go use UTC for time formatting 6 | TZ=UTC 7 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .next 3 | .next-* 4 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.go text eol=lf 2 | -------------------------------------------------------------------------------- /.github/actions/setup-git/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup Git 2 | 3 | description: Setup Git 4 | 5 | runs: 6 | using: composite 7 | steps: 8 | - name: git user config 9 | shell: bash 10 | run: | 11 | git config user.name "${GITHUB_ACTOR}" 12 | git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" 13 | - name: Configure git # required for golangci-lint on Windows 14 | shell: bash 15 | run: git config --global core.autocrlf false 16 | -------------------------------------------------------------------------------- /.github/actions/setup-go/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup Go 2 | 3 | description: Setup Go environment and dependencies 4 | 5 | inputs: 6 | go_version: 7 | description: Go version 8 | required: false 9 | default: '1.23.0' 10 | 11 | runs: 12 | using: composite 13 | steps: 14 | - uses: actions/setup-go@v4 15 | with: 16 | go-version: ${{ inputs.go_version }} 17 | -------------------------------------------------------------------------------- /.github/workflows/project-add.yml: -------------------------------------------------------------------------------- 1 | name: Add issues and PRs to Sia project 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | pull_request: 8 | types: 9 | - opened 10 | 11 | jobs: 12 | add-to-project: 13 | uses: SiaFoundation/workflows/.github/workflows/project-add.yml@master 14 | secrets: inherit 15 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | //registry.npmjs.org/:_authToken=${NPM_TOKEN} 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Add files here to ignore them from prettier formatting 2 | 3 | /dist 4 | /coverage 5 | /.nx/cache 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true 4 | } 5 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "esbenp.prettier-vscode", 4 | "firsttris.vscode-jest-runner", 5 | "dbaeumer.vscode-eslint" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "esbenp.prettier-vscode", 3 | "editor.formatOnSave": true, 4 | "tailwindCSS.experimental.classRegex": [ 5 | ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] 6 | ], 7 | "[go]": { 8 | "editor.defaultFormatter": "golang.go" 9 | }, 10 | "gopls": { 11 | "build.env": { 12 | "GOOS": "js", 13 | "GOARCH": "wasm" 14 | } 15 | }, 16 | "typescript.tsdk": "node_modules/typescript/lib" 17 | } 18 | -------------------------------------------------------------------------------- /.vscode/spellright.dict: -------------------------------------------------------------------------------- 1 | siad 2 | sia 3 | renterd 4 | hostd 5 | walletd 6 | js 7 | clusterd 8 | -------------------------------------------------------------------------------- /apps/assets/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | }, 9 | { 10 | "files": ["*.ts", "*.tsx"], 11 | "rules": {} 12 | }, 13 | { 14 | "files": ["*.js", "*.jsx"], 15 | "rules": {} 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /apps/assets/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:20-alpine as runner 2 | 3 | WORKDIR /app 4 | 5 | ENV PORT 3000 6 | ENV NODE_ENV production 7 | 8 | RUN addgroup --system --gid 1001 nodejs 9 | RUN adduser --system --uid 1001 nodejs 10 | 11 | COPY --chown=nodejs:nodejs ./dist/apps/assets ./ 12 | 13 | USER nodejs 14 | EXPOSE 3000 15 | 16 | CMD node main.js 17 | -------------------------------------------------------------------------------- /apps/assets/README.md: -------------------------------------------------------------------------------- 1 | # Assets 2 | 3 | The `sia.tech` asset server for content such as releases, reports, assets, and images. 4 | -------------------------------------------------------------------------------- /apps/assets/jest.config.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | export default { 3 | displayName: 'assets', 4 | 5 | globals: {}, 6 | testEnvironment: 'node', 7 | transform: { 8 | '^.+\\.[tj]s$': [ 9 | 'ts-jest', 10 | { 11 | tsconfig: '/tsconfig.spec.json', 12 | }, 13 | ], 14 | }, 15 | moduleFileExtensions: ['ts', 'js', 'html'], 16 | coverageDirectory: '../../coverage/apps/assets', 17 | preset: '../../jest.preset.js', 18 | } 19 | -------------------------------------------------------------------------------- /apps/assets/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "assets", 3 | "description": "Powers api.sia.tech and all downloadable assets on sia.tech such as the Sia software releases.", 4 | "version": "0.0.0", 5 | "private": true, 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /apps/assets/src/main.ts: -------------------------------------------------------------------------------- 1 | import dotenv from 'dotenv' 2 | import express from 'express' 3 | import { setupStatic } from './static' 4 | 5 | dotenv.config() 6 | 7 | const app = express() 8 | setupStatic(app) 9 | 10 | console.log(`Assets running in ${process.env.NODE_ENV}`) 11 | 12 | const port = process.env.PORT || 3002 13 | const server = app.listen(port, () => { 14 | console.log(`Listening at http://localhost:${port}`) 15 | }) 16 | 17 | server.on('error', console.error) 18 | -------------------------------------------------------------------------------- /apps/assets/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "commonjs", 5 | "outDir": "../../dist/out-tsc", 6 | "types": [ 7 | "node", 8 | "express", 9 | "@nx/react/typings/cssmodule.d.ts", 10 | "@nx/react/typings/image.d.ts" 11 | ], 12 | "esModuleInterop": true 13 | }, 14 | "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], 15 | "include": ["src/**/*.ts"] 16 | } 17 | -------------------------------------------------------------------------------- /apps/assets/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.app.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /apps/assets/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": [ 7 | "jest", 8 | "node", 9 | "@nx/react/typings/cssmodule.d.ts", 10 | "@nx/react/typings/image.d.ts" 11 | ] 12 | }, 13 | "include": [ 14 | "jest.config.ts", 15 | "src/**/*.test.ts", 16 | "src/**/*.spec.ts", 17 | "src/**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /apps/assets/webpack.config.js: -------------------------------------------------------------------------------- 1 | const { composePlugins, withNx } = require('@nx/webpack') 2 | 3 | // Nx plugins for webpack. 4 | module.exports = composePlugins(withNx(), (config) => { 5 | // Update the webpack config as needed here. 6 | // e.g. config.plugins.push(new MyPlugin()) 7 | // For more information on webpack config and Nx see: 8 | // https://nx.dev/packages/webpack/documents/webpack-config-setup 9 | return config 10 | }) 11 | -------------------------------------------------------------------------------- /apps/crons/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | }, 9 | { 10 | "files": ["*.ts", "*.tsx"], 11 | "rules": {} 12 | }, 13 | { 14 | "files": ["*.js", "*.jsx"], 15 | "rules": {} 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /apps/crons/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:20-alpine as runner 2 | 3 | WORKDIR /app 4 | 5 | ENV NODE_ENV production 6 | # requires NOTION_TOKEN 7 | 8 | RUN addgroup --system --gid 1001 nodejs 9 | RUN adduser --system --uid 1001 nodejs 10 | 11 | COPY --chown=nodejs:nodejs ./dist/apps/crons ./ 12 | 13 | USER nodejs 14 | 15 | CMD node main.js 16 | -------------------------------------------------------------------------------- /apps/crons/README.md: -------------------------------------------------------------------------------- 1 | # Crons 2 | 3 | Background tasks for api.sia.tech and sia.tech. 4 | -------------------------------------------------------------------------------- /apps/crons/jest.config.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | export default { 3 | displayName: 'crons', 4 | 5 | globals: {}, 6 | testEnvironment: 'node', 7 | transform: { 8 | '^.+\\.[tj]s$': [ 9 | 'ts-jest', 10 | { 11 | tsconfig: '/tsconfig.spec.json', 12 | }, 13 | ], 14 | }, 15 | moduleFileExtensions: ['ts', 'js', 'html'], 16 | coverageDirectory: '../../coverage/apps/crons', 17 | preset: '../../jest.preset.js', 18 | } 19 | -------------------------------------------------------------------------------- /apps/crons/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "crons", 3 | "description": "Background tasks for api.sia.tech and sia.tech.", 4 | "version": "0.0.0", 5 | "private": true, 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /apps/crons/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "commonjs", 5 | "outDir": "../../dist/out-tsc", 6 | "types": [ 7 | "node", 8 | "express", 9 | "@nx/react/typings/cssmodule.d.ts", 10 | "@nx/react/typings/image.d.ts" 11 | ], 12 | "esModuleInterop": true 13 | }, 14 | "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], 15 | "include": ["src/**/*.ts"] 16 | } 17 | -------------------------------------------------------------------------------- /apps/crons/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.app.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /apps/crons/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": [ 7 | "jest", 8 | "node", 9 | "@nx/react/typings/cssmodule.d.ts", 10 | "@nx/react/typings/image.d.ts" 11 | ] 12 | }, 13 | "include": [ 14 | "jest.config.ts", 15 | "src/**/*.test.ts", 16 | "src/**/*.spec.ts", 17 | "src/**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /apps/crons/webpack.config.js: -------------------------------------------------------------------------------- 1 | const { composePlugins, withNx } = require('@nx/webpack') 2 | 3 | // Nx plugins for webpack. 4 | module.exports = composePlugins(withNx(), (config) => { 5 | // Update the webpack config as needed here. 6 | // e.g. config.plugins.push(new MyPlugin()) 7 | // For more information on webpack config and Nx see: 8 | // https://nx.dev/packages/webpack/documents/webpack-config-setup 9 | return config 10 | }) 11 | -------------------------------------------------------------------------------- /apps/explorer-e2e/.gitignore: -------------------------------------------------------------------------------- 1 | output 2 | -------------------------------------------------------------------------------- /apps/explorer/app/address/[id]/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { StateError } from '../../../components/StateError' 4 | 5 | export default function Page({ error }: { error: Error }) { 6 | console.error(error) 7 | return ( 8 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/explorer/app/address/[id]/loading.tsx: -------------------------------------------------------------------------------- 1 | import { AddressSkeleton } from '../../../components/AddressSkeleton' 2 | 3 | export default function Loading() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/app/address/[id]/not-found.tsx: -------------------------------------------------------------------------------- 1 | import { StateError } from '../../../components/StateError' 2 | 3 | export default function Page() { 4 | return ( 5 | 6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /apps/explorer/app/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/explorer/app/apple-icon.png -------------------------------------------------------------------------------- /apps/explorer/app/block/[id]/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { StateError } from '../../../components/StateError' 4 | 5 | export default function Page({ error }: { error: Error }) { 6 | console.error(error) 7 | return ( 8 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/explorer/app/block/[id]/loading.tsx: -------------------------------------------------------------------------------- 1 | import { BlockSkeleton } from '../../../components/BlockSkeleton' 2 | 3 | export default function Loading() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/app/block/[id]/not-found.tsx: -------------------------------------------------------------------------------- 1 | import { StateError } from '../../../components/StateError' 2 | 3 | export default function Page() { 4 | return ( 5 | 6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /apps/explorer/app/contract/[id]/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { StateError } from '../../../components/StateError' 4 | 5 | export default function Page({ error }: { error: Error }) { 6 | console.error(error) 7 | return ( 8 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/explorer/app/contract/[id]/loading.tsx: -------------------------------------------------------------------------------- 1 | import { ContractSkeleton } from '../../../components/ContractSkeleton' 2 | 3 | export default function Loading() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/app/contract/[id]/not-found.tsx: -------------------------------------------------------------------------------- 1 | import { StateError } from '../../../components/StateError' 2 | 3 | export default function Page() { 4 | return ( 5 | 6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /apps/explorer/app/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { StateError } from '../components/StateError' 4 | 5 | export default function Page({ error }: { error: Error }) { 6 | console.error(error) 7 | return ( 8 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/explorer/app/faucet/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { StateError } from '../../components/StateError' 4 | 5 | export default function Page({ error }: { error: Error }) { 6 | console.error(error) 7 | return ( 8 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/explorer/app/faucet/loading.tsx: -------------------------------------------------------------------------------- 1 | import { FaucetSkeleton } from '../../components/FaucetSkeleton' 2 | 3 | export default function Loading() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/app/faucet/not-found.tsx: -------------------------------------------------------------------------------- 1 | import { StateError } from '../../components/StateError' 2 | 3 | export default function Page() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/app/faucet/opengraph-image.tsx: -------------------------------------------------------------------------------- 1 | import { getOGImage } from '../../components/OGImage' 2 | 3 | export const alt = 'Faucet' 4 | export const size = { 5 | width: 1200, 6 | height: 630, 7 | } 8 | 9 | export const contentType = 'image/png' 10 | 11 | export default async function Image() { 12 | return getOGImage( 13 | { 14 | title: 'Zen faucet', 15 | subtitle: 'Zen testnet siacoin faucet.', 16 | }, 17 | size 18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /apps/explorer/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/explorer/app/favicon.ico -------------------------------------------------------------------------------- /apps/explorer/app/host-revenue-calculator/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { StateError } from '../../components/StateError' 4 | 5 | export default function Page({ error }: { error: Error }) { 6 | console.error(error) 7 | return ( 8 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/explorer/app/host-revenue-calculator/not-found.tsx: -------------------------------------------------------------------------------- 1 | import { StateError } from '../../components/StateError' 2 | 3 | export default function Page() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/app/host/[id]/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { StateError } from '../../../components/StateError' 4 | 5 | export default function Page({ error }: { error: Error }) { 6 | console.error(error) 7 | return ( 8 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/explorer/app/host/[id]/loading.tsx: -------------------------------------------------------------------------------- 1 | import { HostSkeleton } from '../../../components/HostSkeleton' 2 | 3 | export default function Loading() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/app/host/[id]/not-found.tsx: -------------------------------------------------------------------------------- 1 | import { StateError } from '../../../components/StateError' 2 | 3 | export default function Page() { 4 | return ( 5 | 6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /apps/explorer/app/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/explorer/app/icon.png -------------------------------------------------------------------------------- /apps/explorer/app/loading.tsx: -------------------------------------------------------------------------------- 1 | import { HomeSkeleton } from '../components/HomeSkeleton' 2 | 3 | export default function Loading() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/app/not-found.tsx: -------------------------------------------------------------------------------- 1 | import { StateError } from '../components/StateError' 2 | 3 | export default function Page() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/app/tx/[id]/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { StateError } from '../../../components/StateError' 4 | 5 | export default function Page({ error }: { error: Error }) { 6 | console.error(error) 7 | return ( 8 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/explorer/app/tx/[id]/loading.tsx: -------------------------------------------------------------------------------- 1 | import { TransactionSkeleton } from '../../../components/TransactionSkeleton' 2 | 3 | export default function Loading() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/app/tx/[id]/not-found.tsx: -------------------------------------------------------------------------------- 1 | import { StateError } from '../../../components/StateError' 2 | 3 | export default function Page() { 4 | return ( 5 | 6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /apps/explorer/assets/leaves-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/explorer/assets/leaves-background.png -------------------------------------------------------------------------------- /apps/explorer/assets/leaves-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/explorer/assets/leaves-preview.png -------------------------------------------------------------------------------- /apps/explorer/components/OGImage/Background.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable @next/next/no-img-element */ 2 | 3 | export function Background() { 4 | return ( 5 |
6 | bg 11 |
12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/explorer/config/explored.ts: -------------------------------------------------------------------------------- 1 | // Allow passing a custom explored address via a cookie for testing purposes. 2 | export const exploredCustomApiCookieName = 'exploredAddress' 3 | export const exploredCustomApiSwrKey = 'exploredAddress' 4 | -------------------------------------------------------------------------------- /apps/explorer/config/index.ts: -------------------------------------------------------------------------------- 1 | import { webLinks } from '@siafoundation/design-system' 2 | 3 | export const network = 'mainnet' 4 | export const networkName = 'Sia Mainnet' 5 | export const siteName = 'siascan.com' 6 | export const appName = 'siascan' 7 | export const appLink = webLinks.explore.mainnet 8 | export const isMainnet = true 9 | 10 | // APIs 11 | export const faucetApi = 'https://api.siascan.com/zen/faucet' 12 | export const exploredApi = 'https://api.siascan.com' 13 | -------------------------------------------------------------------------------- /apps/explorer/config/style.css: -------------------------------------------------------------------------------- 1 | @import '../../../libs/design-system/src/style/style.css'; 2 | -------------------------------------------------------------------------------- /apps/explorer/hooks/useExplored.ts: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { Explored } from '@siafoundation/explored-js' 4 | import { useMemo } from 'react' 5 | import { useExploredAddress } from './useExploredAddress' 6 | 7 | export function useExplored(): ReturnType { 8 | const api = useExploredAddress() 9 | const explored = useMemo(() => Explored({ api }), [api]) 10 | return explored 11 | } 12 | -------------------------------------------------------------------------------- /apps/explorer/hooks/useExploredAddress.ts: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import useSWR from 'swr' 4 | import { exploredCustomApiSwrKey } from '../config/explored' 5 | 6 | export function useExploredAddress(): string { 7 | const response = useSWR(exploredCustomApiSwrKey) 8 | return response.data 9 | } 10 | -------------------------------------------------------------------------------- /apps/explorer/index.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | declare module '*.svg' { 3 | const content: any 4 | export const ReactComponent: any 5 | export default content 6 | } 7 | -------------------------------------------------------------------------------- /apps/explorer/lib/avatar.ts: -------------------------------------------------------------------------------- 1 | import Identicon from 'identicon.js' 2 | 3 | export function hashToAvatar(hash: string, size = 40) { 4 | const options = { 5 | foreground: [0, 0, 0, 255], 6 | background: [255, 255, 255, 255], 7 | margin: 0.1, 8 | size, 9 | format: 'svg', 10 | } 11 | 12 | const data = new Identicon(hash, options).toString() 13 | 14 | return `data:image/svg+xml;base64,${data}` 15 | } 16 | -------------------------------------------------------------------------------- /apps/explorer/lib/identicon.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'identicon.js' { 2 | export default class Identicon { 3 | constructor(hash: string, options?: IdenticonOptions) 4 | 5 | toString(): string 6 | } 7 | 8 | interface IdenticonOptions { 9 | foreground?: number[] 10 | background?: number[] 11 | margin?: number 12 | size?: number 13 | format?: string 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /apps/explorer/lib/networkVersion.ts: -------------------------------------------------------------------------------- 1 | import { getExplored } from './explored' 2 | 3 | export async function getNetworkVersion(): Promise<'v1' | 'v2'> { 4 | const [{ data: chainIndex }, { data: consensusNetwork }] = await Promise.all([ 5 | getExplored().consensusTip(), 6 | getExplored().consensusNetwork(), 7 | ]) 8 | 9 | const allowHeight = consensusNetwork.hardforkV2.allowHeight 10 | return chainIndex.height >= allowHeight ? 'v2' : 'v1' 11 | } 12 | -------------------------------------------------------------------------------- /apps/explorer/lib/pageProps.ts: -------------------------------------------------------------------------------- 1 | export type ExplorerPageProps< 2 | T extends Record = { id: string } 3 | > = { 4 | params: T 5 | } 6 | -------------------------------------------------------------------------------- /apps/explorer/lib/time.ts: -------------------------------------------------------------------------------- 1 | import { blockHeightToTime, humanDate } from '@siafoundation/units' 2 | 3 | export function blockHeightToHumanDate( 4 | currentHeight: number, 5 | timeInMS: number, 6 | dateStyle: 'full' | 'long' | 'medium' | 'short' = 'medium', 7 | timeStyle: 'full' | 'long' | 'medium' | 'short' = 'short' 8 | ) { 9 | return humanDate(blockHeightToTime(currentHeight, timeInMS), { 10 | dateStyle, 11 | timeStyle, 12 | }) 13 | } 14 | -------------------------------------------------------------------------------- /apps/explorer/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. 6 | -------------------------------------------------------------------------------- /apps/explorer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "explorer", 3 | "description": "The `explorer` user interface, a Sia blockchain explorer interface that powers siascan.com.", 4 | "version": "0.32.0", 5 | "private": true, 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /apps/explorer/postcss.config.js: -------------------------------------------------------------------------------- 1 | const { join } = require('path') 2 | 3 | module.exports = { 4 | plugins: { 5 | tailwindcss: { 6 | config: join(__dirname, 'tailwind.config.js'), 7 | }, 8 | autoprefixer: {}, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /apps/explorer/public/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/explorer/public/.gitkeep -------------------------------------------------------------------------------- /apps/explorer/specs/index.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { render } from '@testing-library/react' 3 | 4 | describe('Index', () => { 5 | it('should render successfully', () => { 6 | const { baseElement } = render(
) 7 | expect(baseElement).toBeTruthy() 8 | }) 9 | }) 10 | -------------------------------------------------------------------------------- /apps/explorer/tailwind.config.js: -------------------------------------------------------------------------------- 1 | const { createGlobPatternsForDependencies } = require('@nx/react/tailwind') 2 | const { join } = require('path') 3 | 4 | module.exports = { 5 | content: [ 6 | join( 7 | __dirname, 8 | '{app,pages,components,config,hooks}/**/*!(*.stories|*.spec).{ts,tsx,html}' 9 | ), 10 | ...createGlobPatternsForDependencies(__dirname), 11 | ], 12 | presets: [require('../../libs/design-system/src/style/theme.js')], 13 | } 14 | -------------------------------------------------------------------------------- /apps/hostd-e2e/.gitignore: -------------------------------------------------------------------------------- 1 | output 2 | -------------------------------------------------------------------------------- /apps/hostd/.env.build.export: -------------------------------------------------------------------------------- 1 | # This env files is used when the "build" target is run with the "export" config 2 | # This env variable is used in next.config.js to switch from output "standalone" to "export" 3 | NEXT_OUTPUT_EXPORT=true 4 | -------------------------------------------------------------------------------- /apps/hostd/assets/jungle-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/assets/jungle-preview.png -------------------------------------------------------------------------------- /apps/hostd/assets/jungle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/assets/jungle.png -------------------------------------------------------------------------------- /apps/hostd/components/Alerts/AlertsActionsMenu.tsx: -------------------------------------------------------------------------------- 1 | import { AlertsViewDropdownMenu } from './AlertsViewDropdownMenu' 2 | 3 | export function AlertsActionsMenu() { 4 | return ( 5 |
6 | 7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /apps/hostd/components/CmdRoot/types.ts: -------------------------------------------------------------------------------- 1 | import { CmdEmptyProps } from './CmdEmpty' 2 | 3 | export type Page = { 4 | namespace: string 5 | label: string 6 | prompt?: string 7 | empty?: (props: CmdEmptyProps) => JSX.Element 8 | } 9 | -------------------------------------------------------------------------------- /apps/hostd/components/Config/ConfigNav.tsx: -------------------------------------------------------------------------------- 1 | export function ConfigNav() { 2 | return
3 | } 4 | -------------------------------------------------------------------------------- /apps/hostd/components/Contracts/ContractsActionsMenu.tsx: -------------------------------------------------------------------------------- 1 | import { ContractsViewDropdownMenu } from './ContractsViewDropdownMenu' 2 | 3 | export function ContractsActionsMenu() { 4 | return ( 5 |
6 | 7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /apps/hostd/components/DockedControls.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { OnboardingBar } from './OnboardingBar' 3 | 4 | export function DockedControls({ children }: { children?: React.ReactNode }) { 5 | return ( 6 |
7 | {children} 8 | 9 |
10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /apps/hostd/components/HostdPublicLayout.tsx: -------------------------------------------------------------------------------- 1 | import { AppPublicLayout } from '@siafoundation/design-system' 2 | 3 | type Props = Omit, 'appName'> 4 | 5 | export function HostdPublicLayout(props: Props) { 6 | return 7 | } 8 | 9 | export type HostdPublicPageLayoutProps = Omit 10 | -------------------------------------------------------------------------------- /apps/hostd/components/Login/Layout.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | HostdPublicLayout, 3 | HostdPublicPageLayoutProps, 4 | } from '../HostdPublicLayout' 5 | 6 | export const Layout = HostdPublicLayout 7 | export function useLayoutProps(): HostdPublicPageLayoutProps { 8 | return {} 9 | } 10 | -------------------------------------------------------------------------------- /apps/hostd/components/Login/index.tsx: -------------------------------------------------------------------------------- 1 | import { AppLogin } from '@siafoundation/design-system' 2 | import { connectivityRoute, routes } from '../../config/routes' 3 | 4 | export function Login() { 5 | return 6 | } 7 | -------------------------------------------------------------------------------- /apps/hostd/components/Redirect/index.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react' 2 | import { useRouter } from 'next/router' 3 | 4 | export function Redirect({ route }: { route: string }) { 5 | const router = useRouter() 6 | 7 | useEffect(() => { 8 | router.replace(route) 9 | }, [router, route]) 10 | 11 | return
12 | } 13 | -------------------------------------------------------------------------------- /apps/hostd/config/buildMode.ts: -------------------------------------------------------------------------------- 1 | export const buildModeExport = false 2 | -------------------------------------------------------------------------------- /apps/hostd/config/buildModeExport.ts: -------------------------------------------------------------------------------- 1 | export const buildModeExport = true 2 | -------------------------------------------------------------------------------- /apps/hostd/config/style.css: -------------------------------------------------------------------------------- 1 | @import '../../../libs/design-system/src/style/style.css'; 2 | -------------------------------------------------------------------------------- /apps/hostd/config/swr.ts: -------------------------------------------------------------------------------- 1 | import { secondsInMilliseconds } from '@siafoundation/units' 2 | 3 | export const defaultDatasetRefreshInterval = secondsInMilliseconds(15) 4 | -------------------------------------------------------------------------------- /apps/hostd/hooks/useHostOSPathSeparator.ts: -------------------------------------------------------------------------------- 1 | import { useHostState } from '@siafoundation/hostd-react' 2 | 3 | export function useHostOSPathSeparator() { 4 | const state = useHostState({ 5 | config: { 6 | swr: { 7 | revalidateOnFocus: false, 8 | keepPreviousData: true, 9 | }, 10 | }, 11 | }) 12 | return state.data?.os === 'windows' ? '\\' : '/' 13 | } 14 | -------------------------------------------------------------------------------- /apps/hostd/hooks/useSiascanUrl.ts: -------------------------------------------------------------------------------- 1 | import { webLinks } from '@siafoundation/design-system' 2 | import { useConsensusNetwork } from '@siafoundation/hostd-react' 3 | 4 | export function useSiascanUrl() { 5 | const state = useConsensusNetwork() 6 | return state.data?.name === 'zen' 7 | ? webLinks.explore.testnetZen 8 | : webLinks.explore.mainnet 9 | } 10 | -------------------------------------------------------------------------------- /apps/hostd/index.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | declare module '*.svg' { 3 | const content: any 4 | export const ReactComponent: any 5 | export default content 6 | } 7 | -------------------------------------------------------------------------------- /apps/hostd/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information. 6 | -------------------------------------------------------------------------------- /apps/hostd/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hostd", 3 | "description": "The `hostd` user interface, dedicated to hosting related functionality.", 4 | "version": "0.62.0", 5 | "private": true, 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /apps/hostd/pages/404.tsx: -------------------------------------------------------------------------------- 1 | import { Redirect } from '../components/Redirect' 2 | import { Layout, useLayoutProps } from '../components/Redirect/Layout' 3 | import { routes } from '../config/routes' 4 | 5 | export default function Page() { 6 | return 7 | } 8 | 9 | Page.Layout = Layout 10 | Page.useLayoutProps = useLayoutProps 11 | -------------------------------------------------------------------------------- /apps/hostd/pages/alerts/index.tsx: -------------------------------------------------------------------------------- 1 | import { Alerts } from '../../components/Alerts' 2 | import { Layout, useLayoutProps } from '../../components/Alerts/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/hostd/pages/config/index.tsx: -------------------------------------------------------------------------------- 1 | import { Config } from '../../components/Config' 2 | import { Layout, useLayoutProps } from '../../components/Config/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/hostd/pages/contracts/index.tsx: -------------------------------------------------------------------------------- 1 | import { Contracts } from '../../components/Contracts' 2 | import { Layout, useLayoutProps } from '../../components/Contracts/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/hostd/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import { Home } from '../components/Home' 2 | import { Layout, useLayoutProps } from '../components/Home/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/hostd/pages/login.tsx: -------------------------------------------------------------------------------- 1 | import { Login } from '../components/Login' 2 | import { Layout, useLayoutProps } from '../components/Login/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/hostd/pages/node/index.tsx: -------------------------------------------------------------------------------- 1 | import { Node } from '../../components/Node' 2 | import { Layout, useLayoutProps } from '../../components/Node/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/hostd/pages/volumes/index.tsx: -------------------------------------------------------------------------------- 1 | import { Volumes } from '../../components/Volumes' 2 | import { Layout, useLayoutProps } from '../../components/Volumes/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/hostd/pages/wallet/index.tsx: -------------------------------------------------------------------------------- 1 | import { Wallet } from '../../components/Wallet' 2 | import { Layout, useLayoutProps } from '../../components/Wallet/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/hostd/postcss.config.js: -------------------------------------------------------------------------------- 1 | const { join } = require('path') 2 | 3 | module.exports = { 4 | plugins: { 5 | tailwindcss: { 6 | config: join(__dirname, 'tailwind.config.js'), 7 | }, 8 | autoprefixer: {}, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /apps/hostd/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /apps/hostd/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /apps/hostd/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/apple-touch-icon.png -------------------------------------------------------------------------------- /apps/hostd/public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2b5797 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/hostd/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/favicon-16x16.png -------------------------------------------------------------------------------- /apps/hostd/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/favicon-32x32.png -------------------------------------------------------------------------------- /apps/hostd/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/favicon.ico -------------------------------------------------------------------------------- /apps/hostd/public/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/mstile-144x144.png -------------------------------------------------------------------------------- /apps/hostd/public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/mstile-150x150.png -------------------------------------------------------------------------------- /apps/hostd/public/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/mstile-310x150.png -------------------------------------------------------------------------------- /apps/hostd/public/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/mstile-310x310.png -------------------------------------------------------------------------------- /apps/hostd/public/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/hostd/public/mstile-70x70.png -------------------------------------------------------------------------------- /apps/hostd/public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hostd", 3 | "short_name": "hostd", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /apps/hostd/specs/index.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { render } from '@testing-library/react' 3 | 4 | describe('Index', () => { 5 | it('should render successfully', () => { 6 | const { baseElement } = render(
) 7 | expect(baseElement).toBeTruthy() 8 | }) 9 | }) 10 | -------------------------------------------------------------------------------- /apps/hostd/tailwind.config.js: -------------------------------------------------------------------------------- 1 | const { createGlobPatternsForDependencies } = require('@nx/react/tailwind') 2 | const { join } = require('path') 3 | 4 | module.exports = { 5 | content: [ 6 | join( 7 | __dirname, 8 | '{src,pages,components,dialogs,hooks,contexts}/**/*!(*.stories|*.spec).{ts,tsx,html}' 9 | ), 10 | ...createGlobPatternsForDependencies(__dirname), 11 | ], 12 | presets: [require('../../libs/design-system/src/style/theme.js')], 13 | } 14 | -------------------------------------------------------------------------------- /apps/renterd-e2e/.gitignore: -------------------------------------------------------------------------------- 1 | output 2 | -------------------------------------------------------------------------------- /apps/renterd-e2e/src/fixtures/config.ts: -------------------------------------------------------------------------------- 1 | import { Page } from '@playwright/test' 2 | 3 | export async function rebalancePrices(page: Page) { 4 | const spendingEstimate = page.getByTestId('spendingEstimate') 5 | const rebalanceButton = spendingEstimate.getByLabel('rebalance prices') 6 | await rebalanceButton.click() 7 | } 8 | -------------------------------------------------------------------------------- /apps/renterd-e2e/src/fixtures/sample-files/sample.txt: -------------------------------------------------------------------------------- 1 | hello world -------------------------------------------------------------------------------- /apps/renterd-e2e/src/fixtures/sample.txt: -------------------------------------------------------------------------------- 1 | hello world -------------------------------------------------------------------------------- /apps/renterd/.env.build.export: -------------------------------------------------------------------------------- 1 | # This env files is used when the "build" target is run with the "export" config 2 | # This env variable is used in next.config.js to switch from output "standalone" to "export" 3 | NEXT_OUTPUT_EXPORT=true 4 | -------------------------------------------------------------------------------- /apps/renterd/assets/earth-dark-contrast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/assets/earth-dark-contrast.png -------------------------------------------------------------------------------- /apps/renterd/assets/earth-dark.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/assets/earth-dark.jpeg -------------------------------------------------------------------------------- /apps/renterd/assets/earth-day.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/assets/earth-day.jpeg -------------------------------------------------------------------------------- /apps/renterd/assets/earth-night.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/assets/earth-night.jpeg -------------------------------------------------------------------------------- /apps/renterd/assets/earth-topology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/assets/earth-topology.png -------------------------------------------------------------------------------- /apps/renterd/assets/jungle-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/assets/jungle-preview.png -------------------------------------------------------------------------------- /apps/renterd/assets/jungle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/assets/jungle.png -------------------------------------------------------------------------------- /apps/renterd/assets/map-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/assets/map-2.jpg -------------------------------------------------------------------------------- /apps/renterd/assets/night-sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/assets/night-sky.png -------------------------------------------------------------------------------- /apps/renterd/components/Alerts/AlertsActionsMenu.tsx: -------------------------------------------------------------------------------- 1 | import { AlertsViewDropdownMenu } from './AlertsViewDropdownMenu' 2 | 3 | export function AlertsActionsMenu() { 4 | return ( 5 |
6 | 7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /apps/renterd/components/CmdRoot/types.ts: -------------------------------------------------------------------------------- 1 | import { CmdEmptyProps } from './CmdEmpty' 2 | 3 | export type Page = { 4 | namespace: string 5 | label: string 6 | prompt?: string 7 | tag?: string 8 | empty?: (props: CmdEmptyProps) => JSX.Element 9 | } 10 | -------------------------------------------------------------------------------- /apps/renterd/components/Config/ConfigNav.tsx: -------------------------------------------------------------------------------- 1 | import { ConfigEnabledSwitch } from '../ConfigEnabledSwitch' 2 | 3 | export function ConfigNav() { 4 | return ( 5 |
6 |
7 | 8 |
9 |
10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /apps/renterd/components/Files/checks/useAutopilotNotConfigured.tsx: -------------------------------------------------------------------------------- 1 | import { useAutopilotConfig } from '@siafoundation/renterd-react' 2 | 3 | export function useAutopilotNotEnabled() { 4 | const autopilotConfig = useAutopilotConfig() 5 | return { 6 | active: !autopilotConfig.data?.enabled, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /apps/renterd/components/Files/index.tsx: -------------------------------------------------------------------------------- 1 | import { FilesDirectory } from '../FilesDirectory' 2 | import { FilesFlat } from '../FilesFlat' 3 | import { useFilesManager } from '../../contexts/filesManager' 4 | 5 | export function Files() { 6 | const { isViewingBuckets, activeExplorerMode } = useFilesManager() 7 | 8 | if (activeExplorerMode === 'directory' || isViewingBuckets) { 9 | return 10 | } 11 | 12 | return 13 | } 14 | -------------------------------------------------------------------------------- /apps/renterd/components/FilesDirectory/index.tsx: -------------------------------------------------------------------------------- 1 | import { FilesExplorer } from './FilesExplorer' 2 | 3 | export function FilesDirectory() { 4 | return ( 5 |
6 | 7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /apps/renterd/components/FilesFlat/index.tsx: -------------------------------------------------------------------------------- 1 | import { FilesExplorer } from './FilesExplorer' 2 | 3 | export function FilesFlat() { 4 | return ( 5 |
6 | 7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /apps/renterd/components/Hosts/HostMap/GlobeImp.tsx: -------------------------------------------------------------------------------- 1 | import { MutableRefObject } from 'react' 2 | import GlobeTmpl, { GlobeMethods } from 'react-globe.gl' 3 | 4 | const GlobeImp = ({ 5 | forwardRef, 6 | ...otherProps 7 | }: React.ComponentProps & { 8 | forwardRef: MutableRefObject 9 | }) => 10 | 11 | export default GlobeImp 12 | -------------------------------------------------------------------------------- /apps/renterd/components/Keys/KeysBulkMenu/index.tsx: -------------------------------------------------------------------------------- 1 | import { MultiSelectionMenu } from '@siafoundation/design-system' 2 | import { useKeys } from '../../../contexts/keys' 3 | import { KeysBulkDelete } from './KeysBulkDelete' 4 | 5 | export function KeysBulkMenu() { 6 | const { multiSelect } = useKeys() 7 | 8 | return ( 9 | 10 | 11 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/renterd/components/Login/Layout.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | RenterdPublicLayout, 3 | RenterdPublicPageLayoutProps, 4 | } from '../RenterdPublicLayout' 5 | 6 | export const Layout = RenterdPublicLayout 7 | export function useLayoutProps(): RenterdPublicPageLayoutProps { 8 | return {} 9 | } 10 | -------------------------------------------------------------------------------- /apps/renterd/components/Login/index.tsx: -------------------------------------------------------------------------------- 1 | import { AppLogin } from '@siafoundation/design-system' 2 | import { connectivityRoute, routes } from '../../config/routes' 3 | 4 | export function Login() { 5 | return ( 6 | 7 | ) 8 | } 9 | -------------------------------------------------------------------------------- /apps/renterd/components/Redirect/index.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react' 2 | import { useRouter } from 'next/router' 3 | 4 | export function Redirect({ route }: { route: string }) { 5 | const router = useRouter() 6 | 7 | useEffect(() => { 8 | router.replace(route) 9 | }, [router, route]) 10 | 11 | return
12 | } 13 | -------------------------------------------------------------------------------- /apps/renterd/components/RenterdPublicLayout.tsx: -------------------------------------------------------------------------------- 1 | import { AppPublicLayout } from '@siafoundation/design-system' 2 | 3 | type Props = Omit, 'appName'> 4 | 5 | export function RenterdPublicLayout(props: Props) { 6 | return 7 | } 8 | 9 | export type RenterdPublicPageLayoutProps = Omit 10 | -------------------------------------------------------------------------------- /apps/renterd/components/Uploads/UploadsActionsMenu.tsx: -------------------------------------------------------------------------------- 1 | import { UploadsViewDropdownMenu } from './UploadsViewDropdownMenu' 2 | 3 | export function UploadsActionsMenu() { 4 | return ( 5 |
6 | 7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /apps/renterd/components/Uploads/index.tsx: -------------------------------------------------------------------------------- 1 | import { UploadsTable } from './UploadsTable' 2 | 3 | export function Uploads() { 4 | return ( 5 |
6 | 7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /apps/renterd/config/buildMode.ts: -------------------------------------------------------------------------------- 1 | export const buildModeExport = false 2 | -------------------------------------------------------------------------------- /apps/renterd/config/buildModeExport.ts: -------------------------------------------------------------------------------- 1 | export const buildModeExport = true 2 | -------------------------------------------------------------------------------- /apps/renterd/config/style.css: -------------------------------------------------------------------------------- 1 | @import '../../../libs/design-system/src/style/style.css'; 2 | -------------------------------------------------------------------------------- /apps/renterd/config/swr.ts: -------------------------------------------------------------------------------- 1 | import { secondsInMilliseconds } from '@siafoundation/units' 2 | 3 | export const defaultDatasetRefreshInterval = secondsInMilliseconds(15) 4 | -------------------------------------------------------------------------------- /apps/renterd/contexts/config/spendingConfig.ts: -------------------------------------------------------------------------------- 1 | export const maxPricingFactor = 1.5 2 | export const storageWeight = 4 3 | export const downloadWeight = 5 4 | export const uploadWeight = 1 5 | -------------------------------------------------------------------------------- /apps/renterd/contexts/contracts/utils.ts: -------------------------------------------------------------------------------- 1 | import { minutesInMilliseconds } from '@siafoundation/units' 2 | 3 | export function getTimeClampedToNearest5min(t: number) { 4 | const granularity = minutesInMilliseconds(5) 5 | return Math.round(t / granularity) * granularity 6 | } 7 | -------------------------------------------------------------------------------- /apps/renterd/hooks/useSiascanUrl.tsx: -------------------------------------------------------------------------------- 1 | import { webLinks } from '@siafoundation/design-system' 2 | import { useBusState } from '@siafoundation/renterd-react' 3 | 4 | export function useSiascanUrl() { 5 | const network = useBusState() 6 | return network.data?.network === 'zen' 7 | ? webLinks.explore.testnetZen 8 | : webLinks.explore.mainnet 9 | } 10 | -------------------------------------------------------------------------------- /apps/renterd/index.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | declare module '*.svg' { 3 | const content: any 4 | export const ReactComponent: any 5 | export default content 6 | } 7 | -------------------------------------------------------------------------------- /apps/renterd/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information. 6 | -------------------------------------------------------------------------------- /apps/renterd/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "renterd", 3 | "description": "The `renterd` user interface, dedicated to renter related functionality.", 4 | "version": "0.79.0", 5 | "private": true, 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /apps/renterd/pages/404.tsx: -------------------------------------------------------------------------------- 1 | import { Redirect } from '../components/Redirect' 2 | import { Layout, useLayoutProps } from '../components/Redirect/Layout' 3 | import { routes } from '../config/routes' 4 | 5 | export default function Page() { 6 | return 7 | } 8 | 9 | Page.Layout = Layout 10 | Page.useLayoutProps = useLayoutProps 11 | -------------------------------------------------------------------------------- /apps/renterd/pages/alerts/index.tsx: -------------------------------------------------------------------------------- 1 | import { Alerts } from '../../components/Alerts' 2 | import { Layout, useLayoutProps } from '../../components/Alerts/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/pages/buckets/[bucket]/files/[[...path]].tsx: -------------------------------------------------------------------------------- 1 | import { Files } from '../../../../components/Files' 2 | import { Layout, useLayoutProps } from '../../../../components/Files/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/pages/buckets/[bucket]/uploads/index.tsx: -------------------------------------------------------------------------------- 1 | import { Uploads } from '../../../../components/Uploads' 2 | import { Layout, useLayoutProps } from '../../../../components/Uploads/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/pages/buckets/index.tsx: -------------------------------------------------------------------------------- 1 | import { Files } from '../../components/Files' 2 | import { Layout, useLayoutProps } from '../../components/Files/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/pages/config/index.tsx: -------------------------------------------------------------------------------- 1 | import { Config } from '../../components/Config' 2 | import { Layout, useLayoutProps } from '../../components/Config/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/pages/contracts/index.tsx: -------------------------------------------------------------------------------- 1 | import { Contracts } from '../../components/Contracts' 2 | import { Layout, useLayoutProps } from '../../components/Contracts/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/pages/hosts/index.tsx: -------------------------------------------------------------------------------- 1 | import { Hosts } from '../../components/Hosts' 2 | import { Layout, useLayoutProps } from '../../components/Hosts/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import { Redirect } from '../components/Redirect' 2 | import { Layout, useLayoutProps } from '../components/Redirect/Layout' 3 | import { routes } from '../config/routes' 4 | 5 | export default function Page() { 6 | return 7 | } 8 | 9 | Page.Layout = Layout 10 | Page.useLayoutProps = useLayoutProps 11 | -------------------------------------------------------------------------------- /apps/renterd/pages/keys/index.tsx: -------------------------------------------------------------------------------- 1 | import { Keys } from '../../components/Keys' 2 | import { Layout, useLayoutProps } from '../../components/Keys/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/pages/login.tsx: -------------------------------------------------------------------------------- 1 | import { Login } from '../components/Login' 2 | import { Layout, useLayoutProps } from '../components/Login/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/pages/node/index.tsx: -------------------------------------------------------------------------------- 1 | import { Node } from '../../components/Node' 2 | import { Layout, useLayoutProps } from '../../components/Node/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/pages/wallet/index.tsx: -------------------------------------------------------------------------------- 1 | import { Wallet } from '../../components/Wallet' 2 | import { Layout, useLayoutProps } from '../../components/Wallet/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/renterd/postcss.config.js: -------------------------------------------------------------------------------- 1 | const { join } = require('path') 2 | 3 | module.exports = { 4 | plugins: { 5 | tailwindcss: { 6 | config: join(__dirname, 'tailwind.config.js'), 7 | }, 8 | autoprefixer: {}, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /apps/renterd/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /apps/renterd/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /apps/renterd/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/apple-touch-icon.png -------------------------------------------------------------------------------- /apps/renterd/public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2b5797 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/renterd/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/favicon-16x16.png -------------------------------------------------------------------------------- /apps/renterd/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/favicon-32x32.png -------------------------------------------------------------------------------- /apps/renterd/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/favicon.ico -------------------------------------------------------------------------------- /apps/renterd/public/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/mstile-144x144.png -------------------------------------------------------------------------------- /apps/renterd/public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/mstile-150x150.png -------------------------------------------------------------------------------- /apps/renterd/public/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/mstile-310x150.png -------------------------------------------------------------------------------- /apps/renterd/public/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/mstile-310x310.png -------------------------------------------------------------------------------- /apps/renterd/public/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/renterd/public/mstile-70x70.png -------------------------------------------------------------------------------- /apps/renterd/tailwind.config.js: -------------------------------------------------------------------------------- 1 | const { createGlobPatternsForDependencies } = require('@nx/react/tailwind') 2 | const { join } = require('path') 3 | 4 | module.exports = { 5 | content: [ 6 | join( 7 | __dirname, 8 | '{src,pages,components,hooks,contexts,dialogs}/**/*!(*.stories|*.spec).{ts,tsx,html}' 9 | ), 10 | ...createGlobPatternsForDependencies(__dirname), 11 | ], 12 | presets: [require('../../libs/design-system/src/style/theme.js')], 13 | } 14 | -------------------------------------------------------------------------------- /apps/walletd-e2e/.gitignore: -------------------------------------------------------------------------------- 1 | output 2 | -------------------------------------------------------------------------------- /apps/walletd-e2e/src/fixtures/navigate.ts: -------------------------------------------------------------------------------- 1 | import { Page, expect } from '@playwright/test' 2 | import { openWallet } from './wallet' 3 | import { step } from '@siafoundation/e2e' 4 | 5 | export const navigateToWallet = step( 6 | 'navigate to wallet', 7 | async (page: Page, name: string) => { 8 | await page.getByLabel('Dashboard').click() 9 | await openWallet(page, name) 10 | await expect(page.getByTestId('navbar').getByText(name)).toBeVisible() 11 | } 12 | ) 13 | -------------------------------------------------------------------------------- /apps/walletd/.env.build.export: -------------------------------------------------------------------------------- 1 | # This env files is used when the "build" target is run with the "export" config 2 | # This env variable is used in next.config.js to switch from output "standalone" to "export" 3 | NEXT_OUTPUT_EXPORT=true 4 | -------------------------------------------------------------------------------- /apps/walletd/assets/jungle-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/assets/jungle-preview.png -------------------------------------------------------------------------------- /apps/walletd/assets/jungle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/assets/jungle.png -------------------------------------------------------------------------------- /apps/walletd/components/DockedControls.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export function DockedControls({ children }: { children?: React.ReactNode }) { 4 | return
{children}
5 | } 6 | -------------------------------------------------------------------------------- /apps/walletd/components/Login/Layout.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | WalletdPublicLayout, 3 | WalletdPublicPageLayoutProps, 4 | } from '../WalletdPublicLayout' 5 | 6 | export const Layout = WalletdPublicLayout 7 | export function useLayoutProps(): WalletdPublicPageLayoutProps { 8 | return {} 9 | } 10 | -------------------------------------------------------------------------------- /apps/walletd/components/Login/index.tsx: -------------------------------------------------------------------------------- 1 | import { AppLogin } from '@siafoundation/design-system' 2 | import { connectivityRoute, routes } from '../../config/routes' 3 | 4 | export function Login() { 5 | return ( 6 | 7 | ) 8 | } 9 | -------------------------------------------------------------------------------- /apps/walletd/components/Redirect/index.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react' 2 | import { useRouter } from 'next/router' 3 | 4 | export function Redirect({ route }: { route: string }) { 5 | const router = useRouter() 6 | 7 | useEffect(() => { 8 | router.replace(route) 9 | }, [router, route]) 10 | 11 | return
12 | } 13 | -------------------------------------------------------------------------------- /apps/walletd/components/WalletdPublicLayout.tsx: -------------------------------------------------------------------------------- 1 | import { AppPublicLayout } from '@siafoundation/design-system' 2 | 3 | type Props = Omit, 'appName'> 4 | 5 | export function WalletdPublicLayout(props: Props) { 6 | return 7 | } 8 | 9 | export type WalletdPublicPageLayoutProps = Omit 10 | -------------------------------------------------------------------------------- /apps/walletd/components/WalletdSidenav.tsx: -------------------------------------------------------------------------------- 1 | import { SidenavItem } from '@siafoundation/design-system' 2 | import { HouseIcon } from '@siafoundation/react-icons' 3 | import { routes } from '../config/routes' 4 | 5 | export function WalletdSidenav() { 6 | return ( 7 | <> 8 | 9 | 10 | 11 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/walletd/config/buildMode.ts: -------------------------------------------------------------------------------- 1 | export const buildModeExport = false 2 | -------------------------------------------------------------------------------- /apps/walletd/config/buildModeExport.ts: -------------------------------------------------------------------------------- 1 | export const buildModeExport = true 2 | -------------------------------------------------------------------------------- /apps/walletd/config/routes.ts: -------------------------------------------------------------------------------- 1 | import { syncerPeersRoute } from '@siafoundation/walletd-types' 2 | 3 | export const routes = { 4 | home: '/', 5 | wallet: { 6 | base: '/wallets/', 7 | view: '/wallets/[id]', 8 | addresses: '/wallets/[id]/addresses', 9 | }, 10 | node: { 11 | index: '/node', 12 | txPool: '/node/txpool', 13 | peers: '/node/peers', 14 | }, 15 | login: '/login', 16 | } 17 | 18 | export const connectivityRoute = syncerPeersRoute 19 | -------------------------------------------------------------------------------- /apps/walletd/config/style.css: -------------------------------------------------------------------------------- 1 | @import '../../../libs/design-system/src/style/style.css'; 2 | -------------------------------------------------------------------------------- /apps/walletd/config/swr.ts: -------------------------------------------------------------------------------- 1 | import { secondsInMilliseconds } from '@siafoundation/units' 2 | 3 | export const defaultDatasetRefreshInterval = secondsInMilliseconds(15) 4 | -------------------------------------------------------------------------------- /apps/walletd/hooks/useSiascanUrl.ts: -------------------------------------------------------------------------------- 1 | import { webLinks } from '@siafoundation/design-system' 2 | import { useConsensusNetwork } from '@siafoundation/walletd-react' 3 | 4 | export function useSiascanUrl() { 5 | const network = useConsensusNetwork() 6 | return network.data?.name === 'zen' 7 | ? webLinks.explore.testnetZen 8 | : webLinks.explore.mainnet 9 | } 10 | -------------------------------------------------------------------------------- /apps/walletd/hooks/useWalletCachedSeed.tsx: -------------------------------------------------------------------------------- 1 | import { useWallets } from '../contexts/wallets' 2 | 3 | export function useWalletCachedSeed(walletId: string) { 4 | const { dataset } = useWallets() 5 | const wallet = dataset?.find((w) => w.id === walletId) 6 | const cachedMnemonic = wallet?.state.mnemonic 7 | const isSeedCached = !!cachedMnemonic 8 | return { 9 | cachedMnemonic, 10 | isSeedCached, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apps/walletd/index.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | declare module '*.svg' { 3 | const content: any 4 | export const ReactComponent: any 5 | export default content 6 | } 7 | -------------------------------------------------------------------------------- /apps/walletd/lib/time.ts: -------------------------------------------------------------------------------- 1 | export function humanTimeAndUnits(ms: number) { 2 | if (!ms || ms < 1000) { 3 | return { 4 | amount: 0, 5 | units: 'seconds', 6 | } 7 | } 8 | 9 | ms /= 1000 10 | if (ms < 60) { 11 | return { 12 | amount: Math.floor(ms * 100) / 100, 13 | units: 'seconds', 14 | } 15 | } 16 | 17 | return { 18 | amount: Math.floor((ms / 60) * 100) / 100, 19 | units: 'minutes', 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /apps/walletd/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information. 6 | -------------------------------------------------------------------------------- /apps/walletd/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "walletd", 3 | "description": "The `walletd` user interface, includes a wallet with support for hot, cold, and hardware wallets.", 4 | "version": "0.29.3", 5 | "private": true, 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /apps/walletd/pages/404.tsx: -------------------------------------------------------------------------------- 1 | import { Redirect } from '../components/Redirect' 2 | import { Layout, useLayoutProps } from '../components/Redirect/Layout' 3 | import { routes } from '../config/routes' 4 | 5 | export default function Page() { 6 | return 7 | } 8 | 9 | Page.Layout = Layout 10 | Page.useLayoutProps = useLayoutProps 11 | -------------------------------------------------------------------------------- /apps/walletd/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import { WalletsList } from '../components/WalletsList' 2 | import { Layout, useLayoutProps } from '../components/WalletsList/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/walletd/pages/login.tsx: -------------------------------------------------------------------------------- 1 | import { Login } from '../components/Login' 2 | import { Layout, useLayoutProps } from '../components/Login/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/walletd/pages/node/index.tsx: -------------------------------------------------------------------------------- 1 | import { Node } from '../../components/Node' 2 | import { Layout, useLayoutProps } from '../../components/Node/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/walletd/pages/wallets/[id]/addresses.tsx: -------------------------------------------------------------------------------- 1 | import { WalletAddresses } from '../../../components/WalletAddresses' 2 | import { 3 | Layout, 4 | useLayoutProps, 5 | } from '../../../components/WalletAddresses/Layout' 6 | 7 | export default function Page() { 8 | return 9 | } 10 | 11 | Page.Layout = Layout 12 | Page.useLayoutProps = useLayoutProps 13 | -------------------------------------------------------------------------------- /apps/walletd/pages/wallets/[id]/index.tsx: -------------------------------------------------------------------------------- 1 | import { Wallet } from '../../../components/Wallet' 2 | import { Layout, useLayoutProps } from '../../../components/Wallet/Layout' 3 | 4 | export default function Page() { 5 | return 6 | } 7 | 8 | Page.Layout = Layout 9 | Page.useLayoutProps = useLayoutProps 10 | -------------------------------------------------------------------------------- /apps/walletd/postcss.config.js: -------------------------------------------------------------------------------- 1 | const { join } = require('path') 2 | 3 | module.exports = { 4 | plugins: { 5 | tailwindcss: { 6 | config: join(__dirname, 'tailwind.config.js'), 7 | }, 8 | autoprefixer: {}, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /apps/walletd/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /apps/walletd/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /apps/walletd/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/apple-touch-icon.png -------------------------------------------------------------------------------- /apps/walletd/public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2b5797 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/walletd/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/favicon-16x16.png -------------------------------------------------------------------------------- /apps/walletd/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/favicon-32x32.png -------------------------------------------------------------------------------- /apps/walletd/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/favicon.ico -------------------------------------------------------------------------------- /apps/walletd/public/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/mstile-144x144.png -------------------------------------------------------------------------------- /apps/walletd/public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/mstile-150x150.png -------------------------------------------------------------------------------- /apps/walletd/public/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/mstile-310x150.png -------------------------------------------------------------------------------- /apps/walletd/public/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/mstile-310x310.png -------------------------------------------------------------------------------- /apps/walletd/public/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/mstile-70x70.png -------------------------------------------------------------------------------- /apps/walletd/public/walletd.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/walletd/public/walletd.wasm -------------------------------------------------------------------------------- /apps/walletd/specs/index.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { render } from '@testing-library/react' 3 | 4 | describe('Index', () => { 5 | it('should render successfully', () => { 6 | const { baseElement } = render(
) 7 | expect(baseElement).toBeTruthy() 8 | }) 9 | }) 10 | -------------------------------------------------------------------------------- /apps/walletd/tailwind.config.js: -------------------------------------------------------------------------------- 1 | const { createGlobPatternsForDependencies } = require('@nx/react/tailwind') 2 | const { join } = require('path') 3 | 4 | module.exports = { 5 | content: [ 6 | join( 7 | __dirname, 8 | '{src,pages,components,hooks,dialogs,contexts}/**/*!(*.stories|*.spec).{ts,tsx,html}' 9 | ), 10 | ...createGlobPatternsForDependencies(__dirname), 11 | ], 12 | presets: [require('../../libs/design-system/src/style/theme.js')], 13 | } 14 | -------------------------------------------------------------------------------- /apps/website/README.md: -------------------------------------------------------------------------------- 1 | # Website 2 | 3 | The [sia.tech](https://sia.tech) website. 4 | -------------------------------------------------------------------------------- /apps/website/assets/earth-dark-contrast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/assets/earth-dark-contrast.png -------------------------------------------------------------------------------- /apps/website/assets/earth-topology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/assets/earth-topology.png -------------------------------------------------------------------------------- /apps/website/assets/night-sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/assets/night-sky.png -------------------------------------------------------------------------------- /apps/website/components/HostMap/GlobeGl.tsx: -------------------------------------------------------------------------------- 1 | import { MutableRefObject } from 'react' 2 | import GlobeTmpl, { GlobeMethods } from 'react-globe.gl' 3 | 4 | const GlobeGl = ({ 5 | forwardRef, 6 | ...otherProps 7 | }: React.ComponentProps & { 8 | forwardRef: MutableRefObject 9 | }) => 10 | 11 | export default GlobeGl 12 | -------------------------------------------------------------------------------- /apps/website/components/Italic.tsx: -------------------------------------------------------------------------------- 1 | type Props = { 2 | children: React.ReactNode 3 | } 4 | 5 | export default function Italic({ children }: Props) { 6 | return {children} 7 | } 8 | -------------------------------------------------------------------------------- /apps/website/components/Map/GlobeImp.tsx: -------------------------------------------------------------------------------- 1 | import { MutableRefObject } from 'react' 2 | import GlobeTmpl, { GlobeMethods } from 'react-globe.gl' 3 | 4 | const GlobeImp = ({ 5 | forwardRef, 6 | ...otherProps 7 | }: React.ComponentProps & { 8 | forwardRef: MutableRefObject 9 | }) => 10 | 11 | export default GlobeImp 12 | -------------------------------------------------------------------------------- /apps/website/components/SectionSolid.tsx: -------------------------------------------------------------------------------- 1 | import { Section } from '@siafoundation/design-system' 2 | import { cx } from 'class-variance-authority' 3 | 4 | type Props = React.ComponentProps 5 | 6 | export function SectionSolid({ className, ...props }: Props) { 7 | return ( 8 |
12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /apps/website/config/app.ts: -------------------------------------------------------------------------------- 1 | export const appName = 'Sia' 2 | export const newsFeedName = 'Sia Foundation' 3 | -------------------------------------------------------------------------------- /apps/website/config/siascan.ts: -------------------------------------------------------------------------------- 1 | import { Explored } from '@siafoundation/explored-js' 2 | 3 | export const siascanApi = 'https://api.siascan.com' 4 | export const siascan = Explored({ 5 | api: siascanApi, 6 | }) 7 | -------------------------------------------------------------------------------- /apps/website/config/style.css: -------------------------------------------------------------------------------- 1 | @import '../../../libs/design-system/src/style/style.css'; 2 | -------------------------------------------------------------------------------- /apps/website/content/grantCommittee.ts: -------------------------------------------------------------------------------- 1 | import { fetchGrantCommittee } from '@siafoundation/data-sources' 2 | import { getCacheValue } from '../lib/cache' 3 | import { minutesInSeconds } from '@siafoundation/units' 4 | 5 | const maxAge = minutesInSeconds(5) 6 | 7 | export async function getGrantCommittee() { 8 | return getCacheValue('grantCommittee', fetchGrantCommittee, maxAge) 9 | } 10 | -------------------------------------------------------------------------------- /apps/website/content/team.ts: -------------------------------------------------------------------------------- 1 | import { fetchTeam } from '@siafoundation/data-sources' 2 | import { getCacheValue } from '../lib/cache' 3 | import { minutesInSeconds } from '@siafoundation/units' 4 | 5 | const maxAge = minutesInSeconds(5) 6 | 7 | export async function getTeam() { 8 | return getCacheValue('team', fetchTeam, maxAge) 9 | } 10 | -------------------------------------------------------------------------------- /apps/website/hooks/useTermsOfService.tsx: -------------------------------------------------------------------------------- 1 | import useLocalStorageState from 'use-local-storage-state' 2 | 3 | export function useTermsOfService() { 4 | const [accepted, setAccepted] = useLocalStorageState( 5 | 'v0/website/terms/accepted', 6 | { 7 | defaultValue: false, 8 | } 9 | ) 10 | return { 11 | accepted, 12 | setAccepted, 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /apps/website/index.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | declare module '*.svg' { 3 | const content: any 4 | export const ReactComponent: any 5 | export default content 6 | } 7 | -------------------------------------------------------------------------------- /apps/website/lib/types.ts: -------------------------------------------------------------------------------- 1 | export type AsyncReturnType< 2 | T extends (...args: unknown[]) => Promise 3 | > = T extends (...args: unknown[]) => Promise ? R : never 4 | -------------------------------------------------------------------------------- /apps/website/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information. 6 | -------------------------------------------------------------------------------- /apps/website/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "website", 3 | "description": "The main sia.tech website with information on the Sia project and the Sia Foundation.", 4 | "version": "0.58.0", 5 | "private": true, 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /apps/website/pages/api/news.ts: -------------------------------------------------------------------------------- 1 | import { minutesInSeconds } from '@siafoundation/units' 2 | import { getNewsFeed } from '../../content/feed' 3 | 4 | const maxAge = minutesInSeconds(5) 5 | 6 | export default async function handler(req, res) { 7 | res.setHeader('Cache-Control', `s-maxage=${maxAge}`) 8 | const filter = req.query.news 9 | const posts = await getNewsFeed(filter) 10 | res.status(200).json(posts) 11 | } 12 | -------------------------------------------------------------------------------- /apps/website/pages/api/stats.ts: -------------------------------------------------------------------------------- 1 | import { minutesInSeconds } from '@siafoundation/units' 2 | import { getStats } from '../../content/stats' 3 | 4 | const maxAge = minutesInSeconds(5) 5 | 6 | export default async function handler(req, res) { 7 | res.setHeader('Cache-Control', `s-maxage=${maxAge}`) 8 | const stats = await getStats() 9 | res.status(200).json(stats) 10 | } 11 | -------------------------------------------------------------------------------- /apps/website/postcss.config.js: -------------------------------------------------------------------------------- 1 | const { join } = require('path') 2 | 3 | module.exports = { 4 | plugins: { 5 | tailwindcss: { 6 | config: join(__dirname, 'tailwind.config.js'), 7 | }, 8 | autoprefixer: {}, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /apps/website/proxy.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "/releases": { 3 | "target": "https://sia.tech", 4 | "secure": false 5 | }, 6 | "/transparency": { 7 | "target": "https://sia.tech", 8 | "secure": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /apps/website/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /apps/website/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /apps/website/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/apple-touch-icon.png -------------------------------------------------------------------------------- /apps/website/public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2b5797 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/website/public/built-with-sia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/built-with-sia.png -------------------------------------------------------------------------------- /apps/website/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/favicon-16x16.png -------------------------------------------------------------------------------- /apps/website/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/favicon-32x32.png -------------------------------------------------------------------------------- /apps/website/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/favicon.ico -------------------------------------------------------------------------------- /apps/website/public/logo-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/logo-green.png -------------------------------------------------------------------------------- /apps/website/public/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/mstile-144x144.png -------------------------------------------------------------------------------- /apps/website/public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/mstile-150x150.png -------------------------------------------------------------------------------- /apps/website/public/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/mstile-310x150.png -------------------------------------------------------------------------------- /apps/website/public/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/mstile-310x310.png -------------------------------------------------------------------------------- /apps/website/public/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/mstile-70x70.png -------------------------------------------------------------------------------- /apps/website/public/sia.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/sia.pdf -------------------------------------------------------------------------------- /apps/website/public/texture.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/texture.mp4 -------------------------------------------------------------------------------- /apps/website/public/texture.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/apps/website/public/texture.webm -------------------------------------------------------------------------------- /apps/website/specs/index.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { render } from '@testing-library/react' 3 | 4 | describe('Index', () => { 5 | it('should render successfully', () => { 6 | const { baseElement } = render(
) 7 | expect(baseElement).toBeTruthy() 8 | }) 9 | }) 10 | -------------------------------------------------------------------------------- /apps/website/tailwind.config.js: -------------------------------------------------------------------------------- 1 | const { createGlobPatternsForDependencies } = require('@nx/react/tailwind') 2 | const { join } = require('path') 3 | 4 | module.exports = { 5 | content: [ 6 | join( 7 | __dirname, 8 | '{src,pages,components,config}/**/*!(*.stories|*.spec).{ts,tsx,html}' 9 | ), 10 | ...createGlobPatternsForDependencies(__dirname), 11 | ], 12 | presets: [require('../../libs/design-system/src/style/theme.js')], 13 | } 14 | -------------------------------------------------------------------------------- /babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "babelrcRoots": ["*"] 3 | } 4 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('@commitlint/types').UserConfig} */ 2 | module.exports = { 3 | extends: ['@commitlint/config-conventional'], 4 | rules: { 5 | 'body-max-line-length': [2, 'always', 120], 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /hostd/assets/_next/static/XQcrPK2TFopAp_Tukrirz/_ssgManifest.js: -------------------------------------------------------------------------------- 1 | self.__SSG_MANIFEST=new Set,self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB(); -------------------------------------------------------------------------------- /hostd/assets/_next/static/chunks/pages/_error-fedd2c6ebd3d27b9.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[820],{50341:function(n,_,u){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return u(26065)}])}},function(n){n.O(0,[888,774,179],function(){return n(n.s=50341)}),_N_E=n.O()}]); -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/0080c7cc0358560d-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/0080c7cc0358560d-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/1f006d314a98579d-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/1f006d314a98579d-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/2a9c8cd1557dff1f-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/2a9c8cd1557dff1f-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/2eb2520448311ef1-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/2eb2520448311ef1-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/3b9fc75b5e4edbe8-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/3b9fc75b5e4edbe8-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/5e23ff29335edf6f-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/5e23ff29335edf6f-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/75bdf6088f33f6b5-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/75bdf6088f33f6b5-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/7c138e5a79adee83-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/7c138e5a79adee83-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/821657fca713650c-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/821657fca713650c-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/8fed4885c1998d22-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/8fed4885c1998d22-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/91e452a6ea0c2132-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/91e452a6ea0c2132-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/92fb447c05bf9b9f-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/92fb447c05bf9b9f-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/95d3796716a13c75-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/95d3796716a13c75-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/9617e7fa3dc6e5c9-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/9617e7fa3dc6e5c9-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/9a27e3caec76e96d-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/9a27e3caec76e96d-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/9d81b3b04eda94e0-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/9d81b3b04eda94e0-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/9e96e104b3eba4d3-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/9e96e104b3eba4d3-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/a0ff83e86182150e-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/a0ff83e86182150e-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/b01b725c4365f934-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/b01b725c4365f934-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/b57725b8c3470143-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/b57725b8c3470143-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/background-pattern.b997b25c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/background-pattern.b997b25c.jpg -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/c29124625443164b-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/c29124625443164b-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/c7dc84d05cfe8080-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/c7dc84d05cfe8080-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/cd124faa19a7ef9a-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/cd124faa19a7ef9a-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/eaf5386fcb6f48b8-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/eaf5386fcb6f48b8-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/efb590a61a6e0af3-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/efb590a61a6e0af3-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/f3f50cbb62517d96-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/f3f50cbb62517d96-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/fdd3a36928f25e30-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/fdd3a36928f25e30-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/ff2e3c2bdfe56465-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/ff2e3c2bdfe56465-s.p.ttf -------------------------------------------------------------------------------- /hostd/assets/_next/static/media/logo.0e2362ab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/_next/static/media/logo.0e2362ab.png -------------------------------------------------------------------------------- /hostd/assets/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/android-chrome-192x192.png -------------------------------------------------------------------------------- /hostd/assets/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/android-chrome-512x512.png -------------------------------------------------------------------------------- /hostd/assets/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/apple-touch-icon.png -------------------------------------------------------------------------------- /hostd/assets/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2b5797 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /hostd/assets/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/favicon-16x16.png -------------------------------------------------------------------------------- /hostd/assets/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/favicon-32x32.png -------------------------------------------------------------------------------- /hostd/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/favicon.ico -------------------------------------------------------------------------------- /hostd/assets/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/mstile-144x144.png -------------------------------------------------------------------------------- /hostd/assets/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/mstile-150x150.png -------------------------------------------------------------------------------- /hostd/assets/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/mstile-310x150.png -------------------------------------------------------------------------------- /hostd/assets/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/mstile-310x310.png -------------------------------------------------------------------------------- /hostd/assets/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/hostd/assets/mstile-70x70.png -------------------------------------------------------------------------------- /hostd/assets/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hostd", 3 | "short_name": "hostd", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /hostd/go.mod: -------------------------------------------------------------------------------- 1 | module go.sia.tech/web/hostd 2 | 3 | go 1.23.0 4 | 5 | require go.sia.tech/web v0.0.0-20240422221546-c1709d16b6ef 6 | -------------------------------------------------------------------------------- /hostd/go.sum: -------------------------------------------------------------------------------- 1 | go.sia.tech/web v0.0.0-20240422221546-c1709d16b6ef h1:X0Xm9AQYHhdd85yi9gqkkCZMb9/WtLwC0nDgv65N90Y= 2 | go.sia.tech/web v0.0.0-20240422221546-c1709d16b6ef/go.mod h1:nGEhGmI8zV/BcC3LOCC5JLVYpidNYJIvLGIqVRWQBCg= 3 | -------------------------------------------------------------------------------- /internal/nextjs/go.mod: -------------------------------------------------------------------------------- 1 | module go.sia.tech/web/nextjs 2 | 3 | go 1.23.0 4 | -------------------------------------------------------------------------------- /jest.config.ts: -------------------------------------------------------------------------------- 1 | const { getJestProjects } = require('@nx/jest') 2 | 3 | export default { 4 | projects: getJestProjects(), 5 | } 6 | -------------------------------------------------------------------------------- /libs/clusterd/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/clusterd/README.md: -------------------------------------------------------------------------------- 1 | # clusterd 2 | 3 | Methods for controlling `clusterd` in e2e testing. 4 | -------------------------------------------------------------------------------- /libs/data-sources/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/js/babel", 5 | { 6 | "useBuiltIns": "usage" 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /libs/data-sources/README.md: -------------------------------------------------------------------------------- 1 | # Data Sources 2 | 3 | Data sources provide APIs for pulling data from SiaStats, GitHub, and internal benchmarks. The library also provides a request counter system used for tracking download counts for new Sia releases. 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test data-sources` to execute the unit tests via [Jest](https://jestjs.io). 8 | -------------------------------------------------------------------------------- /libs/data-sources/src/lib/assets.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path' 2 | 3 | export function getAssetPath(filePath: string) { 4 | return path.join(getAssetsDirectory(), filePath) 5 | } 6 | 7 | export function getAssetsDirectory() { 8 | return process.env['ASSETS'] || '/assets' 9 | } 10 | -------------------------------------------------------------------------------- /libs/data-sources/src/lib/error.ts: -------------------------------------------------------------------------------- 1 | import { DataSourceResponse } from './types' 2 | 3 | export function buildErrorResponse500(): DataSourceResponse { 4 | return { 5 | status: 500, 6 | error: 'Request to data source failed', 7 | data: undefined, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /libs/data-sources/src/lib/types.ts: -------------------------------------------------------------------------------- 1 | export type DataSourceResponse = { 2 | status: number 3 | data?: T 4 | error?: string 5 | } 6 | 7 | export type AsyncDataSourceResponse = Promise> 8 | -------------------------------------------------------------------------------- /libs/data-sources/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "declaration": true, 6 | "types": ["node"] 7 | }, 8 | "exclude": ["**/*.spec.ts", "**/*.test.ts"], 9 | "include": ["src/**/*.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /libs/design-system/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/design-system/README.md: -------------------------------------------------------------------------------- 1 | # Design System 2 | 3 | Welcome to the Sia Design System. The Design System is build with React, Radix, and Tailwind. 4 | 5 | ## Testing 6 | 7 | Run `nx test design-system` to execute the unit tests via [Jest](https://jestjs.io). 8 | -------------------------------------------------------------------------------- /libs/design-system/src/app/AppRootLayout/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { AppPageHead } from '../AppPageHead' 3 | 4 | type Props = { 5 | appName: string 6 | title?: string 7 | children: React.ReactNode 8 | } 9 | 10 | export function AppRootLayout({ appName, title, children }: Props) { 11 | return ( 12 |
13 | 14 | {children} 15 |
16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /libs/design-system/src/app/WalletSendSiacoinDialog/types.ts: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import BigNumber from 'bignumber.js' 4 | 5 | export type SendSiacoinParams = { 6 | address: string 7 | hastings: BigNumber 8 | } 9 | -------------------------------------------------------------------------------- /libs/design-system/src/assets/background-image.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/assets/background-image.gif -------------------------------------------------------------------------------- /libs/design-system/src/assets/background-pattern.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/assets/background-pattern.jpg -------------------------------------------------------------------------------- /libs/design-system/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/assets/logo.png -------------------------------------------------------------------------------- /libs/design-system/src/components/ChartTimeValue/utils.ts: -------------------------------------------------------------------------------- 1 | export const getPointTime = (d: Point) => new Date(d?.timestamp || 0) 2 | export const getPointValue = (d: Point) => d?.value || 0 3 | 4 | export type Point = { 5 | timestamp: number 6 | value: number 7 | } 8 | -------------------------------------------------------------------------------- /libs/design-system/src/core/Skeleton.tsx: -------------------------------------------------------------------------------- 1 | import { cva } from 'class-variance-authority' 2 | import { VariantProps } from '../types' 3 | 4 | const styles = cva([ 5 | 'bg-gray-300 dark:bg-graydark-300', 6 | 'relative', 7 | 'overflow-hidden', 8 | 'animate-pulse', 9 | 'rounded', 10 | ]) 11 | 12 | type Props = VariantProps 13 | 14 | export function Skeleton({ className }: Props) { 15 | return
16 | } 17 | -------------------------------------------------------------------------------- /libs/design-system/src/hooks/tooltip.ts: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { Provider } from '@radix-ui/react-tooltip' 4 | 5 | export const TooltipProvider = Provider 6 | -------------------------------------------------------------------------------- /libs/design-system/src/hooks/useConnectivity.ts: -------------------------------------------------------------------------------- 1 | import { useGetSwr } from '@siafoundation/react-core' 2 | 3 | type Props = { 4 | route: string 5 | } 6 | 7 | export function useConnectivity({ route }: Props) { 8 | const w = useGetSwr({ 9 | route, 10 | config: { 11 | swr: { 12 | refreshInterval: 30_000, 13 | }, 14 | }, 15 | }) 16 | return { 17 | isConnected: !w.error, 18 | isValidating: w.isValidating, 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /libs/design-system/src/hooks/useIsExternalDomain.tsx: -------------------------------------------------------------------------------- 1 | const localDomains = ['sia.tech'] 2 | 3 | export function useIsExternalDomain(link: string) { 4 | if (!link.startsWith('http')) { 5 | return null 6 | } 7 | 8 | const url = new URL(link) 9 | 10 | return !localDomains.includes(url.host) 11 | } 12 | -------------------------------------------------------------------------------- /libs/design-system/src/hooks/useOS.ts: -------------------------------------------------------------------------------- 1 | import { getOs, OS } from '../lib/getOs' 2 | 3 | type Separator = '\\' | '/' 4 | 5 | export function useOS(): { os: OS; separator: Separator } { 6 | const os = getOs() 7 | const separator: Separator = os === 'windows' ? '\\' : '/' 8 | return { 9 | os, 10 | separator, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /libs/design-system/src/hooks/usePaginationMarker.ts: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { useSearchParams } from '@siafoundation/next' 4 | 5 | export function usePaginationMarker(defaultLimit: number) { 6 | const searchParams = useSearchParams() 7 | const limit = Number(searchParams.get('limit') || defaultLimit) 8 | const marker = searchParams.get('marker') || null 9 | return { limit, marker } 10 | } 11 | -------------------------------------------------------------------------------- /libs/design-system/src/hooks/usePaginationOffset.ts: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { useSearchParams } from '@siafoundation/next' 4 | 5 | export function usePaginationOffset(defaultLimit: number) { 6 | const searchParams = useSearchParams() 7 | const limit = Number(searchParams.get('limit') || defaultLimit) 8 | const offset = Number(searchParams.get('offset') || 0) 9 | return { limit, offset } 10 | } 11 | -------------------------------------------------------------------------------- /libs/design-system/src/lib/links.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export type LinkData = { 4 | title: React.ReactNode 5 | link: string 6 | newTab?: boolean 7 | disabled?: boolean 8 | } 9 | -------------------------------------------------------------------------------- /libs/design-system/src/lib/object.ts: -------------------------------------------------------------------------------- 1 | type ObjectEntries = Array<[keyof T, T[keyof T]]> 2 | 3 | export function objectEntries(obj: T): ObjectEntries { 4 | return Object.entries(obj) as ObjectEntries 5 | } 6 | -------------------------------------------------------------------------------- /libs/design-system/src/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /libs/design-system/src/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /libs/design-system/src/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/apple-touch-icon.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-api-docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-api-docs.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-core.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-core.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-daemons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-daemons.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-explorer.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-hostd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-hostd.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-leaves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-leaves.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-mountains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-mountains.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-mux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-mux.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-renterd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-renterd.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-siad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-siad.png -------------------------------------------------------------------------------- /libs/design-system/src/public/banners/sia-banner-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/banners/sia-banner-web.png -------------------------------------------------------------------------------- /libs/design-system/src/public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2b5797 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /libs/design-system/src/public/built-with-sia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/built-with-sia.png -------------------------------------------------------------------------------- /libs/design-system/src/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/favicon-16x16.png -------------------------------------------------------------------------------- /libs/design-system/src/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/favicon-32x32.png -------------------------------------------------------------------------------- /libs/design-system/src/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/favicon.ico -------------------------------------------------------------------------------- /libs/design-system/src/public/logo-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/logo-green.png -------------------------------------------------------------------------------- /libs/design-system/src/public/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/mstile-144x144.png -------------------------------------------------------------------------------- /libs/design-system/src/public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/mstile-150x150.png -------------------------------------------------------------------------------- /libs/design-system/src/public/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/mstile-310x150.png -------------------------------------------------------------------------------- /libs/design-system/src/public/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/mstile-310x310.png -------------------------------------------------------------------------------- /libs/design-system/src/public/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/mstile-70x70.png -------------------------------------------------------------------------------- /libs/design-system/src/public/texture.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/texture.mp4 -------------------------------------------------------------------------------- /libs/design-system/src/public/texture.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/design-system/src/public/texture.webm -------------------------------------------------------------------------------- /libs/design-system/src/style/style.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | body, 6 | html, 7 | #__next, 8 | #root { 9 | height: 100vh; 10 | overflow: hidden; 11 | } 12 | -------------------------------------------------------------------------------- /libs/design-system/src/types.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | type OmitUndefined = T extends undefined ? never : T 3 | export type VariantProps any> = Omit< 4 | OmitUndefined[0]>, 5 | 'class' 6 | > 7 | -------------------------------------------------------------------------------- /libs/design-system/tailwind.config.js: -------------------------------------------------------------------------------- 1 | const { createGlobPatternsForDependencies } = require('@nx/react/tailwind') 2 | const { join } = require('path') 3 | 4 | // This file provides tailwind intellisense within design-system src files. 5 | module.exports = { 6 | content: [ 7 | join(__dirname, 'src/**/*!(*.stories|*.spec).{ts,tsx,html}'), 8 | ...createGlobPatternsForDependencies(__dirname), 9 | ], 10 | presets: [require('./src/style/theme.js')], 11 | } 12 | -------------------------------------------------------------------------------- /libs/e2e/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/e2e/README.md: -------------------------------------------------------------------------------- 1 | # e2e 2 | 3 | Shared e2e testing code. 4 | -------------------------------------------------------------------------------- /libs/e2e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/e2e", 3 | "description": "Shared e2e testing code.", 4 | "version": "0.6.5", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@playwright/test": "^1.49.1", 8 | "playwright": "^1.49.1", 9 | "@siafoundation/react-core": "5.0.0", 10 | "@siafoundation/explored-types": "0.18.0" 11 | }, 12 | "types": "./src/index.d.ts" 13 | } 14 | -------------------------------------------------------------------------------- /libs/e2e/src/fixtures/expect.ts: -------------------------------------------------------------------------------- 1 | import { expect, Locator } from '@playwright/test' 2 | 3 | export async function maybeExpectAndReturn( 4 | locator: Locator, 5 | shouldExpect?: boolean 6 | ) { 7 | if (shouldExpect) { 8 | await expect(locator).toBeVisible() 9 | } 10 | return locator 11 | } 12 | -------------------------------------------------------------------------------- /libs/e2e/src/fixtures/step.ts: -------------------------------------------------------------------------------- 1 | import test from 'playwright/test' 2 | 3 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 4 | export function step( 5 | name: string, 6 | fn: (...args: Args) => Promise, 7 | { box = true } = {} 8 | ): (...args: Args) => Promise { 9 | return (...args: Args) => test.step(name, () => fn(...args), { box }) 10 | } 11 | -------------------------------------------------------------------------------- /libs/e2e/src/fixtures/table.ts: -------------------------------------------------------------------------------- 1 | import { Page } from '@playwright/test' 2 | import { step } from './step' 3 | 4 | export const waitForTableToReload = step( 5 | 'wait for table to reload', 6 | async (page: Page, tableTestId: string) => { 7 | await page 8 | .locator(`[data-testid=${tableTestId}][data-loading=true]`) 9 | .isVisible() 10 | await page 11 | .locator(`[data-testid=${tableTestId}][data-loading=false]`) 12 | .isVisible() 13 | } 14 | ) 15 | -------------------------------------------------------------------------------- /libs/explored-js/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/explored-js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/explored-js", 3 | "description": "SDK for interacting with `explored`.", 4 | "version": "0.7.2", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/request": "0.3.0", 8 | "@siafoundation/explored-types": "0.18.0" 9 | }, 10 | "types": "./src/index.d.ts" 11 | } 12 | -------------------------------------------------------------------------------- /libs/explored-js/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api' 2 | -------------------------------------------------------------------------------- /libs/explored-react/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/explored-react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/explored-react", 3 | "description": "React hooks for interacting with `explored`.", 4 | "version": "0.7.2", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/react-core": "^5.0.0", 8 | "@siafoundation/explored-types": "0.18.0" 9 | }, 10 | "types": "./src/index.d.ts" 11 | } 12 | -------------------------------------------------------------------------------- /libs/explored-react/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hooks' 2 | -------------------------------------------------------------------------------- /libs/explored-types/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/explored-types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/explored-types", 3 | "description": "Types for `explored`.", 4 | "version": "0.18.0", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/types": "^0.11.0" 8 | }, 9 | "types": "./src/index.d.ts" 10 | } 11 | -------------------------------------------------------------------------------- /libs/explored-types/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /libs/fonts/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/fonts/README.md: -------------------------------------------------------------------------------- 1 | # fonts 2 | 3 | Next font configuration for use across apps. 4 | -------------------------------------------------------------------------------- /libs/fonts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/fonts", 3 | "description": "Next font configuration for use across apps.", 4 | "version": "0.5.0", 5 | "license": "MIT", 6 | "peerDependencies": { 7 | "next": "^14.2.14" 8 | }, 9 | "dependencies": { 10 | "class-variance-authority": "^0.7.0" 11 | }, 12 | "types": "./src/index.d.ts" 13 | } 14 | -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Bold.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-BoldItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-ExtraLight.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Light.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-LightItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-Thin.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Mono/IBMPlexMono-ThinItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Bold.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-BoldItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-ExtraLight.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Italic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Light.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-LightItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Medium.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-MediumItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Regular.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-SemiBold.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-Thin.ttf -------------------------------------------------------------------------------- /libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/fonts/src/fonts/IBM_Plex_Sans/IBMPlexSans-ThinItalic.ttf -------------------------------------------------------------------------------- /libs/hostd-js/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/hostd-js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/hostd-js", 3 | "description": "SDK for interacting with `hostd`.", 4 | "version": "0.5.3", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/request": "0.3.0", 8 | "@siafoundation/hostd-types": "0.9.0" 9 | }, 10 | "types": "./src/index.d.ts" 11 | } 12 | -------------------------------------------------------------------------------- /libs/hostd-js/src/example.ts: -------------------------------------------------------------------------------- 1 | import { Hostd } from './api' 2 | 3 | export async function example() { 4 | const hostd = Hostd({ 5 | api: 'http://localhost:9980/api', 6 | password: 'password1337', 7 | }) 8 | const state = await hostd.stateHost() 9 | const volumes = await hostd.volumes() 10 | console.log(state.data, volumes.data) 11 | } 12 | -------------------------------------------------------------------------------- /libs/hostd-js/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api' 2 | -------------------------------------------------------------------------------- /libs/hostd-react/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/hostd-react/README.md: -------------------------------------------------------------------------------- 1 | # hostd-react 2 | 3 | React hooks for interacting with `hostd`. 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test hostd-react` to execute the unit tests via [Jest](https://jestjs.io). 8 | -------------------------------------------------------------------------------- /libs/hostd-react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/hostd-react", 3 | "description": "React hooks for interacting with `hostd`.", 4 | "version": "4.6.4", 5 | "license": "MIT", 6 | "dependencies": { 7 | "swr": "^2.1.1", 8 | "@siafoundation/react-core": "^5.0.0", 9 | "@siafoundation/hostd-types": "0.9.0", 10 | "@siafoundation/units": "3.4.3" 11 | }, 12 | "types": "./src/index.d.ts" 13 | } 14 | -------------------------------------------------------------------------------- /libs/hostd-react/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api' 2 | -------------------------------------------------------------------------------- /libs/hostd-types/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/hostd-types/README.md: -------------------------------------------------------------------------------- 1 | # hostd-types 2 | 3 | Types for `hostd`. 4 | -------------------------------------------------------------------------------- /libs/hostd-types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/hostd-types", 3 | "description": "Types for `hostd`.", 4 | "version": "0.9.0", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/types": "^0.11.0" 8 | }, 9 | "types": "./src/index.d.ts" 10 | } 11 | -------------------------------------------------------------------------------- /libs/hostd-types/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /libs/next/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/next/README.md: -------------------------------------------------------------------------------- 1 | # next 2 | 3 | NextJS wrappers for build compatibility. 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test next` to execute the unit tests via [Jest](https://jestjs.io). 8 | -------------------------------------------------------------------------------- /libs/next/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/next", 3 | "description": "NextJS wrappers for build compatibility.", 4 | "version": "0.1.3", 5 | "license": "MIT", 6 | "peerDependencies": { 7 | "next": "^14.2.14" 8 | }, 9 | "types": "./src/index.d.ts" 10 | } 11 | -------------------------------------------------------------------------------- /libs/react-core/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/react-core/src/appSettings/useIsAuthenticatedRoute.ts: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { usePathname } from '@siafoundation/next' 4 | 5 | type UnauthenticatedRoutes = { 6 | login: string 7 | } 8 | 9 | export function useIsAuthenticatedRoute(routes: UnauthenticatedRoutes) { 10 | const pathname = usePathname() 11 | return ![routes.login].includes(pathname) 12 | } 13 | -------------------------------------------------------------------------------- /libs/react-core/src/appSettings/useRequestSettings/useIsAuthenticatedRoute.ts: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { usePathname } from '@siafoundation/next' 4 | 5 | type UnauthenticatedRoutes = { 6 | login: string 7 | } 8 | 9 | export function useIsAuthenticatedRoute(routes: UnauthenticatedRoutes) { 10 | const pathname = usePathname() 11 | return ![routes.login].includes(pathname) 12 | } 13 | -------------------------------------------------------------------------------- /libs/react-core/src/types.ts: -------------------------------------------------------------------------------- 1 | import { Fetcher, Key, SWRConfiguration } from 'swr' 2 | 3 | export type SWROptions = SWRConfiguration> 4 | 5 | export interface SWRError extends Error { 6 | status?: number 7 | } 8 | 9 | export type Only = { 10 | [P in keyof T]: T[P] 11 | } & { 12 | [P in keyof U]?: never 13 | } 14 | 15 | export type Either = Only | Only 16 | -------------------------------------------------------------------------------- /libs/react-core/src/userPrefersReducedMotion.ts: -------------------------------------------------------------------------------- 1 | export function usePrefersReducedMotion() { 2 | const prefersReducedMotionQuery = 3 | typeof window === 'undefined' 4 | ? false 5 | : window.matchMedia?.('(prefers-reduced-motion: reduce)') 6 | return !prefersReducedMotionQuery || !!prefersReducedMotionQuery.matches 7 | } 8 | -------------------------------------------------------------------------------- /libs/react-icons/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/react-icons/README.md: -------------------------------------------------------------------------------- 1 | # react-icons 2 | -------------------------------------------------------------------------------- /libs/react-icons/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/react-icons", 3 | "description": "React-based icons used across Sia apps and websites.", 4 | "version": "0.3.0", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@carbon/icons-react": "^10.47.0" 8 | }, 9 | "types": "./src/index.d.ts" 10 | } 11 | -------------------------------------------------------------------------------- /libs/renterd-js/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/renterd-js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/renterd-js", 3 | "description": "SDK for interacting with `renterd`.", 4 | "version": "0.14.4", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/renterd-types": "0.17.1", 8 | "@siafoundation/request": "0.3.0" 9 | }, 10 | "types": "./src/index.d.ts" 11 | } 12 | -------------------------------------------------------------------------------- /libs/renterd-js/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bus' 2 | export * from './autopilot' 3 | export * from './worker' 4 | -------------------------------------------------------------------------------- /libs/renterd-react/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/renterd-react/README.md: -------------------------------------------------------------------------------- 1 | # renterd-react 2 | 3 | React hooks for interacting with `renterd`. 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test renterd-react` to execute the unit tests via [Jest](https://jestjs.io). 8 | -------------------------------------------------------------------------------- /libs/renterd-react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/renterd-react", 3 | "description": "React hooks for interacting with `renterd`.", 4 | "version": "4.15.5", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/react-core": "^5.0.0", 8 | "swr": "^2.1.1", 9 | "@siafoundation/renterd-types": "0.17.1", 10 | "@siafoundation/units": "3.4.3" 11 | }, 12 | "types": "./src/index.d.ts" 13 | } 14 | -------------------------------------------------------------------------------- /libs/renterd-react/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bus' 2 | export * from './autopilot' 3 | export * from './worker' 4 | -------------------------------------------------------------------------------- /libs/renterd-types/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/renterd-types/README.md: -------------------------------------------------------------------------------- 1 | # renterd-types 2 | 3 | Types for `renterd`. 4 | -------------------------------------------------------------------------------- /libs/renterd-types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/renterd-types", 3 | "description": "Types for `renterd`.", 4 | "version": "0.17.1", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/types": "^0.11.0", 8 | "@siafoundation/react-core": "^5.0.0" 9 | }, 10 | "types": "./src/index.d.ts" 11 | } 12 | -------------------------------------------------------------------------------- /libs/renterd-types/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bus' 2 | export * from './autopilot' 3 | export * from './worker' 4 | export * from './types' 5 | 6 | // Auth 7 | 8 | export const authRoute = '/auth' 9 | 10 | export type AuthTokenParams = { 11 | validity: number 12 | } 13 | export type AuthTokenPayload = void 14 | export type AuthTokenResponse = { 15 | token: string 16 | } 17 | -------------------------------------------------------------------------------- /libs/request/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/request/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @siafoundation/request 2 | 3 | ## 0.3.0 4 | 5 | ### Minor Changes 6 | 7 | - 03a50151: Improved typing for network response handling. 8 | 9 | ## 0.2.0 10 | 11 | ### Minor Changes 12 | 13 | - 3a983801: Updated type naming. 14 | 15 | ## 0.1.0 16 | 17 | ### Minor Changes 18 | 19 | - b3a08031: Introduced a new request library for shared request and network code. 20 | -------------------------------------------------------------------------------- /libs/request/README.md: -------------------------------------------------------------------------------- 1 | # request 2 | 3 | Core library for building request APIs. 4 | -------------------------------------------------------------------------------- /libs/request/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/request", 3 | "description": "Core library for building request APIs.", 4 | "version": "0.3.0", 5 | "license": "MIT", 6 | "dependencies": { 7 | "axios": "^0.27.2", 8 | "@technically/lodash": "^4.17.0" 9 | }, 10 | "types": "./src/index.d.ts" 11 | } 12 | -------------------------------------------------------------------------------- /libs/sdk/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/sdk/.gitignore: -------------------------------------------------------------------------------- 1 | *.wasm 2 | -------------------------------------------------------------------------------- /libs/sdk/README.md: -------------------------------------------------------------------------------- 1 | # sdk 2 | 3 | SDK for interacting directly with the Sia network from browsers and web clients. 4 | 5 | ## Installation 6 | 7 | `npm install @siafoundation/sdk` 8 | 9 | ## Usage 10 | 11 | ```js 12 | import { initSDK } from '@siafoundation/sdk' 13 | 14 | const sdk = await initSDK() 15 | const { phrase, error } = sdk.wallet.generateSeedPhrase() 16 | ``` 17 | -------------------------------------------------------------------------------- /libs/sdk/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/sdk", 3 | "description": "SDK for interacting directly with the Sia network from browsers and web clients.", 4 | "version": "0.4.0", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/types": "0.11.0" 8 | }, 9 | "devDependencies": { 10 | "undici": "5.28.3" 11 | }, 12 | "types": "./src/index.d.ts" 13 | } 14 | -------------------------------------------------------------------------------- /libs/sdk/src/global.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.wasm' { 2 | const func: ( 3 | imports: WebAssembly.Imports 4 | ) => Promise 5 | export default func 6 | } 7 | 8 | interface Window { 9 | Go: typeof Go 10 | } 11 | -------------------------------------------------------------------------------- /libs/sdk/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './types' 2 | export { initSDK } from './init' 3 | export { getSDK } from './sdk' 4 | export type { SDK } from './sdk' 5 | -------------------------------------------------------------------------------- /libs/sdk/src/init.ts: -------------------------------------------------------------------------------- 1 | import { getSDK } from './sdk' 2 | import { initWASM } from './wasm' 3 | 4 | export async function initSDK() { 5 | await initWASM() 6 | return getSDK() 7 | } 8 | -------------------------------------------------------------------------------- /libs/sdk/src/initTest.ts: -------------------------------------------------------------------------------- 1 | import { getSDK } from './sdk' 2 | import { initWASMTest } from './wasmTest' 3 | 4 | export async function initSDKTest() { 5 | await initWASMTest() 6 | return getSDK() 7 | } 8 | -------------------------------------------------------------------------------- /libs/sdk/src/legacy/example.ts: -------------------------------------------------------------------------------- 1 | import { WebTransportClient } from './transport' 2 | 3 | export async function example() { 4 | const client = new WebTransportClient( 5 | 'wss://your-webtransport-server.example', 6 | 'cert' 7 | ) 8 | await client.connect() 9 | const response = await client.sendRPCSettingsRequest() 10 | console.log('Settings:', response) 11 | } 12 | -------------------------------------------------------------------------------- /libs/sdk/src/resources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/libs/sdk/src/resources/.gitkeep -------------------------------------------------------------------------------- /libs/sdk/src/utils/wasm_exec.d.ts: -------------------------------------------------------------------------------- 1 | declare class Go { 2 | constructor() 3 | argv: string[] 4 | env: { [envKey: string]: string } 5 | exit: (code: number) => void 6 | importObject: WebAssembly.Imports 7 | exited: boolean 8 | mem: DataView 9 | run(instance: WebAssembly.Instance): Promise 10 | } 11 | -------------------------------------------------------------------------------- /libs/sia-central-mock/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/sia-central-mock", 3 | "description": "Sia Central data and API mock library for testing.", 4 | "version": "0.4.0", 5 | "license": "MIT", 6 | "dependencies": { 7 | "playwright": "^1.49.1", 8 | "@siafoundation/sia-central-types": "0.2.0" 9 | }, 10 | "types": "./src/index.d.ts" 11 | } 12 | -------------------------------------------------------------------------------- /libs/sia-central-react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/sia-central-react", 3 | "description": "React hooks for interacting with the Sia Central API.", 4 | "version": "3.1.6", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/react-core": "^5.0.0", 8 | "@siafoundation/sia-central-types": "0.2.0" 9 | }, 10 | "types": "./src/index.d.ts" 11 | } 12 | -------------------------------------------------------------------------------- /libs/types/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/types/README.md: -------------------------------------------------------------------------------- 1 | # types 2 | 3 | Core Sia types and library methods. 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test types` to execute the unit tests via [Jest](https://jestjs.io). 8 | -------------------------------------------------------------------------------- /libs/types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/types", 3 | "description": "Core Sia types and library methods.", 4 | "version": "0.11.0", 5 | "license": "MIT", 6 | "types": "./src/index.d.ts" 7 | } 8 | -------------------------------------------------------------------------------- /libs/types/src/index.ts: -------------------------------------------------------------------------------- 1 | export type * from './core' 2 | export type * from './events' 3 | export type * from './utils' 4 | export type * from './v2' 5 | -------------------------------------------------------------------------------- /libs/types/src/utils.ts: -------------------------------------------------------------------------------- 1 | export type Maybe = T | undefined 2 | export type Nullable = T | null 3 | export type Nullish = T | null | undefined 4 | 5 | export type NoUndefined = { 6 | [K in keyof T]: Exclude 7 | } 8 | 9 | export type Result = 10 | | T 11 | | { 12 | error: string 13 | } 14 | -------------------------------------------------------------------------------- /libs/units/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/units/README.md: -------------------------------------------------------------------------------- 1 | # units 2 | 3 | Methods and types for converting and displaying units. 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test units` to execute the unit tests via [Jest](https://jestjs.io). 8 | -------------------------------------------------------------------------------- /libs/units/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/units", 3 | "description": "Methods and types for interacting with the Sia Central API.", 4 | "version": "3.4.3", 5 | "license": "MIT", 6 | "dependencies": { 7 | "bignumber.js": "^9.0.2", 8 | "@technically/lodash": "^4.17.0", 9 | "blakejs": "^1.2.1", 10 | "@siafoundation/types": "0.11.0", 11 | "@siafoundation/explored-types": "0.18.0" 12 | }, 13 | "types": "./src/index.d.ts" 14 | } 15 | -------------------------------------------------------------------------------- /libs/walletd-js/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/walletd-js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/walletd-js", 3 | "description": "SDK for interacting with `walletd`.", 4 | "version": "0.4.0", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/request": "0.3.0", 8 | "@siafoundation/walletd-types": "0.7.0" 9 | }, 10 | "types": "./src/index.d.ts" 11 | } 12 | -------------------------------------------------------------------------------- /libs/walletd-react/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/walletd-react/README.md: -------------------------------------------------------------------------------- 1 | # walletd-react 2 | 3 | React hooks for interacting with `walletd`. 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test walletd-react` to execute the unit tests via [Jest](https://jestjs.io). 8 | -------------------------------------------------------------------------------- /libs/walletd-react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/walletd-react", 3 | "description": "React hooks for interacting with `walletd`.", 4 | "version": "4.5.1", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/react-core": "^5.0.0", 8 | "swr": "^2.1.1", 9 | "@siafoundation/walletd-types": "0.7.0", 10 | "@siafoundation/units": "3.4.3" 11 | }, 12 | "types": "./src/index.d.ts" 13 | } 14 | -------------------------------------------------------------------------------- /libs/walletd-react/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api' 2 | -------------------------------------------------------------------------------- /libs/walletd-types/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@nx/react/babel", 5 | { 6 | "runtime": "automatic", 7 | "useBuiltIns": "usage" 8 | } 9 | ] 10 | ], 11 | "plugins": [] 12 | } 13 | -------------------------------------------------------------------------------- /libs/walletd-types/README.md: -------------------------------------------------------------------------------- 1 | # walletd-types 2 | 3 | Types for `walletd`. 4 | -------------------------------------------------------------------------------- /libs/walletd-types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@siafoundation/walletd-types", 3 | "description": "Types for `walletd`.", 4 | "version": "0.7.0", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@siafoundation/types": "^0.11.0" 8 | }, 9 | "types": "./src/index.d.ts" 10 | } 11 | -------------------------------------------------------------------------------- /libs/walletd-types/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /renterd/assets/_next/static/4dW3WNuoelfLuprd1fj-X/_ssgManifest.js: -------------------------------------------------------------------------------- 1 | self.__SSG_MANIFEST=new Set,self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB(); -------------------------------------------------------------------------------- /renterd/assets/_next/static/chunks/63.4a73a0620f2204fe.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[63],{89063:function(e,u,r){r.r(u);var s=r(52322),t=r(54808);u.default=e=>{let{forwardRef:u,...r}=e;return(0,s.jsx)(t.Z,{...r,ref:u})}}}]); -------------------------------------------------------------------------------- /renterd/assets/_next/static/chunks/pages/_error-fedd2c6ebd3d27b9.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[820],{50341:function(n,_,u){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return u(26065)}])}},function(n){n.O(0,[888,774,179],function(){return n(n.s=50341)}),_N_E=n.O()}]); -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/0080c7cc0358560d-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/0080c7cc0358560d-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/1f006d314a98579d-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/1f006d314a98579d-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/2a9c8cd1557dff1f-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/2a9c8cd1557dff1f-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/2eb2520448311ef1-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/2eb2520448311ef1-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/3b9fc75b5e4edbe8-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/3b9fc75b5e4edbe8-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/5e23ff29335edf6f-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/5e23ff29335edf6f-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/75bdf6088f33f6b5-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/75bdf6088f33f6b5-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/7c138e5a79adee83-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/7c138e5a79adee83-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/821657fca713650c-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/821657fca713650c-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/8fed4885c1998d22-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/8fed4885c1998d22-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/91e452a6ea0c2132-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/91e452a6ea0c2132-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/92fb447c05bf9b9f-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/92fb447c05bf9b9f-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/95d3796716a13c75-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/95d3796716a13c75-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/9617e7fa3dc6e5c9-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/9617e7fa3dc6e5c9-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/9a27e3caec76e96d-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/9a27e3caec76e96d-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/9d81b3b04eda94e0-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/9d81b3b04eda94e0-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/9e96e104b3eba4d3-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/9e96e104b3eba4d3-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/a0ff83e86182150e-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/a0ff83e86182150e-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/b01b725c4365f934-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/b01b725c4365f934-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/b57725b8c3470143-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/b57725b8c3470143-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/background-pattern.b997b25c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/background-pattern.b997b25c.jpg -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/c29124625443164b-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/c29124625443164b-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/c7dc84d05cfe8080-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/c7dc84d05cfe8080-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/cd124faa19a7ef9a-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/cd124faa19a7ef9a-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/eaf5386fcb6f48b8-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/eaf5386fcb6f48b8-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/earth-dark-contrast.bf7081fc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/earth-dark-contrast.bf7081fc.png -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/earth-topology.e385a70e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/earth-topology.e385a70e.png -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/efb590a61a6e0af3-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/efb590a61a6e0af3-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/f3f50cbb62517d96-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/f3f50cbb62517d96-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/fdd3a36928f25e30-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/fdd3a36928f25e30-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/ff2e3c2bdfe56465-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/ff2e3c2bdfe56465-s.p.ttf -------------------------------------------------------------------------------- /renterd/assets/_next/static/media/logo.0e2362ab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/_next/static/media/logo.0e2362ab.png -------------------------------------------------------------------------------- /renterd/assets/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/android-chrome-192x192.png -------------------------------------------------------------------------------- /renterd/assets/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/android-chrome-512x512.png -------------------------------------------------------------------------------- /renterd/assets/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/apple-touch-icon.png -------------------------------------------------------------------------------- /renterd/assets/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2b5797 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /renterd/assets/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/favicon-16x16.png -------------------------------------------------------------------------------- /renterd/assets/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/favicon-32x32.png -------------------------------------------------------------------------------- /renterd/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/favicon.ico -------------------------------------------------------------------------------- /renterd/assets/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/mstile-144x144.png -------------------------------------------------------------------------------- /renterd/assets/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/mstile-150x150.png -------------------------------------------------------------------------------- /renterd/assets/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/mstile-310x150.png -------------------------------------------------------------------------------- /renterd/assets/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/mstile-310x310.png -------------------------------------------------------------------------------- /renterd/assets/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/renterd/assets/mstile-70x70.png -------------------------------------------------------------------------------- /renterd/go.mod: -------------------------------------------------------------------------------- 1 | module go.sia.tech/web/renterd 2 | 3 | go 1.23.0 4 | 5 | require go.sia.tech/web v0.0.0-20240422221546-c1709d16b6ef 6 | -------------------------------------------------------------------------------- /renterd/go.sum: -------------------------------------------------------------------------------- 1 | go.sia.tech/web v0.0.0-20240422221546-c1709d16b6ef h1:X0Xm9AQYHhdd85yi9gqkkCZMb9/WtLwC0nDgv65N90Y= 2 | go.sia.tech/web v0.0.0-20240422221546-c1709d16b6ef/go.mod h1:nGEhGmI8zV/BcC3LOCC5JLVYpidNYJIvLGIqVRWQBCg= 3 | -------------------------------------------------------------------------------- /scripts/delete-nested-dists.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for dir in dist/apps/* dist/libs/*; do 4 | targetDir="${dir#dist/}" 5 | echo $targetDir 6 | if [ -d "$targetDir/dist" ]; then 7 | echo "Removing contents of $targetDir/dist" 8 | rm -rf "$targetDir/dist" 9 | fi 10 | done 11 | -------------------------------------------------------------------------------- /scripts/update-cluster.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd internal/cluster 4 | GOPRIVATE=go.sia.tech go get -u go.sia.tech/cluster@master 5 | GOPRIVATE=go.sia.tech go get -u go.sia.tech/renterd/v2@master 6 | GOPRIVATE=go.sia.tech go get -u go.sia.tech/hostd/v2@master 7 | GOPRIVATE=go.sia.tech go get -u go.sia.tech/walletd/v2@master 8 | GOPRIVATE=go.sia.tech go get -u go.sia.tech/explored@master 9 | go mod tidy 10 | -------------------------------------------------------------------------------- /sdk/go.mod: -------------------------------------------------------------------------------- 1 | module go.sia.tech/web/sdk 2 | 3 | go 1.23.1 4 | 5 | toolchain go1.23.3 6 | 7 | require ( 8 | go.sia.tech/core v0.12.3 9 | go.sia.tech/coreutils v0.13.6 10 | ) 11 | 12 | require ( 13 | github.com/stretchr/testify v1.10.0 // indirect 14 | go.uber.org/multierr v1.11.0 // indirect 15 | go.uber.org/zap v1.27.0 // indirect 16 | golang.org/x/crypto v0.38.0 // indirect 17 | golang.org/x/sys v0.33.0 // indirect 18 | lukechampine.com/frand v1.5.1 // indirect 19 | ) 20 | -------------------------------------------------------------------------------- /tools/tsconfig.tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.base.json", 3 | "compilerOptions": { 4 | "outDir": "../dist/out-tsc/tools", 5 | "rootDir": ".", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": ["node"], 9 | "importHelpers": false 10 | }, 11 | "include": ["**/*.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /walletd/assets/_next/static/UsgB_UcTVzHGNOYUfzCOq/_ssgManifest.js: -------------------------------------------------------------------------------- 1 | self.__SSG_MANIFEST=new Set,self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB(); -------------------------------------------------------------------------------- /walletd/assets/_next/static/chunks/pages/_error-fedd2c6ebd3d27b9.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[820],{50341:function(n,_,u){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return u(26065)}])}},function(n){n.O(0,[888,774,179],function(){return n(n.s=50341)}),_N_E=n.O()}]); -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/0080c7cc0358560d-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/0080c7cc0358560d-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/1f006d314a98579d-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/1f006d314a98579d-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/2a9c8cd1557dff1f-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/2a9c8cd1557dff1f-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/2eb2520448311ef1-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/2eb2520448311ef1-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/3b9fc75b5e4edbe8-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/3b9fc75b5e4edbe8-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/5e23ff29335edf6f-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/5e23ff29335edf6f-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/75bdf6088f33f6b5-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/75bdf6088f33f6b5-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/7c138e5a79adee83-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/7c138e5a79adee83-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/821657fca713650c-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/821657fca713650c-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/8fed4885c1998d22-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/8fed4885c1998d22-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/91e452a6ea0c2132-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/91e452a6ea0c2132-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/92fb447c05bf9b9f-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/92fb447c05bf9b9f-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/95d3796716a13c75-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/95d3796716a13c75-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/9617e7fa3dc6e5c9-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/9617e7fa3dc6e5c9-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/9a27e3caec76e96d-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/9a27e3caec76e96d-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/9d81b3b04eda94e0-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/9d81b3b04eda94e0-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/9e96e104b3eba4d3-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/9e96e104b3eba4d3-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/a0ff83e86182150e-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/a0ff83e86182150e-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/b01b725c4365f934-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/b01b725c4365f934-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/b57725b8c3470143-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/b57725b8c3470143-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/background-pattern.b997b25c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/background-pattern.b997b25c.jpg -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/c29124625443164b-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/c29124625443164b-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/c7dc84d05cfe8080-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/c7dc84d05cfe8080-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/cd124faa19a7ef9a-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/cd124faa19a7ef9a-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/eaf5386fcb6f48b8-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/eaf5386fcb6f48b8-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/efb590a61a6e0af3-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/efb590a61a6e0af3-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/f3f50cbb62517d96-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/f3f50cbb62517d96-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/fdd3a36928f25e30-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/fdd3a36928f25e30-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/ff2e3c2bdfe56465-s.p.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/ff2e3c2bdfe56465-s.p.ttf -------------------------------------------------------------------------------- /walletd/assets/_next/static/media/logo.0e2362ab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/_next/static/media/logo.0e2362ab.png -------------------------------------------------------------------------------- /walletd/assets/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/android-chrome-192x192.png -------------------------------------------------------------------------------- /walletd/assets/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/android-chrome-512x512.png -------------------------------------------------------------------------------- /walletd/assets/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/apple-touch-icon.png -------------------------------------------------------------------------------- /walletd/assets/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2b5797 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /walletd/assets/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/favicon-16x16.png -------------------------------------------------------------------------------- /walletd/assets/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/favicon-32x32.png -------------------------------------------------------------------------------- /walletd/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/favicon.ico -------------------------------------------------------------------------------- /walletd/assets/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/mstile-144x144.png -------------------------------------------------------------------------------- /walletd/assets/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/mstile-150x150.png -------------------------------------------------------------------------------- /walletd/assets/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/mstile-310x150.png -------------------------------------------------------------------------------- /walletd/assets/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/mstile-310x310.png -------------------------------------------------------------------------------- /walletd/assets/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/mstile-70x70.png -------------------------------------------------------------------------------- /walletd/assets/walletd.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiaFoundation/web/d5991fd38af3bdc07913d616be66d8c98aaf6917/walletd/assets/walletd.wasm -------------------------------------------------------------------------------- /walletd/go.mod: -------------------------------------------------------------------------------- 1 | module go.sia.tech/web/walletd 2 | 3 | go 1.23.0 4 | 5 | require go.sia.tech/web v0.0.0-20240422221546-c1709d16b6ef 6 | -------------------------------------------------------------------------------- /walletd/go.sum: -------------------------------------------------------------------------------- 1 | go.sia.tech/web v0.0.0-20240422221546-c1709d16b6ef h1:X0Xm9AQYHhdd85yi9gqkkCZMb9/WtLwC0nDgv65N90Y= 2 | go.sia.tech/web v0.0.0-20240422221546-c1709d16b6ef/go.mod h1:nGEhGmI8zV/BcC3LOCC5JLVYpidNYJIvLGIqVRWQBCg= 3 | --------------------------------------------------------------------------------