├── .cursor
└── rules
│ └── zeitgeist.mdc
├── .env.development
├── .env.example
├── .env.production
├── .github
└── workflows
│ ├── codeql.yml
│ ├── playwright.yml
│ ├── sync-staging-branches.yml
│ └── test.yml
├── .gitignore
├── .prettierrc.js
├── .vscode
└── settings.json
├── .yarn
└── releases
│ ├── yarn-3.2.1.cjs
│ └── yarn-3.2.2.cjs
├── .yarnrc.yml
├── CLAUDE.md
├── Dockerfile
├── LICENSE.md
├── README.md
├── breakpoints.js
├── components
├── account
│ ├── Account.tsx
│ ├── AccountButton.tsx
│ ├── AccountModalContent.tsx
│ ├── AccountModalHead.tsx
│ ├── AccountSelect.tsx
│ ├── AccountSelectOption.tsx
│ ├── AccountSelectValue.tsx
│ ├── OnboardingModal.tsx
│ ├── WalletIcon.tsx
│ └── WalletSelect.tsx
├── assets
│ └── AssetActionButtons
│ │ ├── AssetTradingButtons.tsx
│ │ ├── DisputeButton.tsx
│ │ ├── PoolShareButtons.tsx
│ │ ├── RedeemButton.tsx
│ │ ├── ReportButton.tsx
│ │ └── index.tsx
├── confirmation
│ └── ConfirmationProvider.tsx
├── context
│ └── ContentDimensionsContext.tsx
├── court
│ ├── CourtAppealForm.tsx
│ ├── CourtCasesTable.tsx
│ ├── CourtExitButton.tsx
│ ├── CourtReassignForm.tsx
│ ├── CourtStageTimer.tsx
│ ├── CourtUnstakeButton.tsx
│ ├── CourtVoteForm.tsx
│ ├── CourtVoteRevealForm.tsx
│ ├── DelegateButton.tsx
│ ├── JoinCourtAsJurorButton.tsx
│ ├── JurorsTable.tsx
│ ├── ManageDelegationButton.tsx
│ ├── ManageDelegationsForm.tsx
│ ├── SelectedDrawsTable.tsx
│ └── learn
│ │ └── CourtDocsArticle.tsx
├── create
│ └── editor
│ │ ├── Editor.tsx
│ │ ├── ErrorMessage.tsx
│ │ ├── MarketFormSection.tsx
│ │ ├── Publishing.tsx
│ │ ├── ResetButton.tsx
│ │ ├── Summary.tsx
│ │ ├── inputs
│ │ ├── BlockPeriod.tsx
│ │ ├── Category.tsx
│ │ ├── Currency.tsx
│ │ ├── DateTime.tsx
│ │ ├── FeeSelect.tsx
│ │ ├── Liquidity.tsx
│ │ ├── Moderation.tsx
│ │ ├── Oracle.tsx
│ │ ├── TimezoneSelect.tsx
│ │ └── answers
│ │ │ ├── Categorical.tsx
│ │ │ ├── Scalar.tsx
│ │ │ └── index.tsx
│ │ └── types.ts
├── devtools.tsx
├── front-page
│ ├── BgBallFx.tsx
│ ├── GettingStartedSection.tsx
│ ├── HeroBanner.tsx
│ ├── LatestTrades.tsx
│ ├── LatestTradesCompact.tsx
│ ├── NetworkStats.tsx
│ ├── News.tsx
│ ├── PopularCategories.tsx
│ ├── Topics.tsx
│ ├── TrendingMarketsCompact.tsx
│ └── WatchHow.tsx
├── grillchat
│ └── index.tsx
├── hero-slider
│ ├── HeroControls.tsx
│ ├── HeroSlide.tsx
│ ├── HeroSlider.module.css
│ └── HeroSlider.tsx
├── icons
│ ├── DiscordIcon.tsx
│ ├── SubIdIcon.tsx
│ ├── SubScanIcon.tsx
│ ├── TwitterIcon.tsx
│ ├── ZeitgeistIcon.tsx
│ └── ZeitgeistIconDark.tsx
├── liquidity
│ ├── ExitPoolFormAmm2.tsx
│ ├── JoinPoolFormAmm2.tsx
│ ├── LiquidityModalAmm2.tsx
│ ├── MarketLiquiditySection.tsx
│ ├── PoolFeesSelect.tsx
│ ├── PoolSettings.tsx
│ ├── PoolSettingsAMM2.tsx
│ └── PoolTable.tsx
├── markets
│ ├── BuyFullSetForm.tsx
│ ├── BuySellFullSetsButton.tsx
│ ├── DisputeResult.tsx
│ ├── FavoriteMarketsList.tsx
│ ├── MarketAddresses.tsx
│ ├── MarketAssetDetails.tsx
│ ├── MarketChart.tsx
│ ├── MarketContextActionOutcomeSelector.tsx
│ ├── MarketDescription.tsx
│ ├── MarketFavoriteToggle.tsx
│ ├── MarketHeader.tsx
│ ├── MarketScroll.tsx
│ ├── MarketSearch.tsx
│ ├── MarketTimer.tsx
│ ├── MarketsList.tsx
│ ├── PoolDeployer.tsx
│ ├── PromotionCallout.tsx
│ ├── ReportResult.tsx
│ ├── ScalarPriceRange.tsx
│ ├── SellFullSetForm.tsx
│ ├── SimilarMarketsSection.tsx
│ ├── TradeResult.tsx
│ ├── market-card
│ │ ├── context.ts
│ │ └── index.tsx
│ └── market-filter
│ │ ├── ClearAllButton.tsx
│ │ ├── DropDownSelect.tsx
│ │ ├── MarketActiveFilters.tsx
│ │ ├── MarketFiltersCheckboxes.tsx
│ │ ├── MarketFiltersContainer.tsx
│ │ ├── MarketFiltersDropdowns.tsx
│ │ ├── MarketFiltersSort.tsx
│ │ ├── index.tsx
│ │ └── mobile-dialog
│ │ ├── FilterDetails.tsx
│ │ ├── FiltersList.tsx
│ │ └── index.tsx
├── meta
│ ├── MarketMeta.tsx
│ └── OgHead.tsx
├── onboarding
│ ├── DisclaimerModal.tsx
│ ├── DisclaimerTerms.tsx
│ └── Onboarding.tsx
├── orderbook
│ └── OrdersTable.tsx
├── outcomes
│ ├── CategoricalDisputeBox.tsx
│ ├── CategoricalReportBox.tsx
│ ├── ScalarDisputeBox.tsx
│ └── ScalarReportBox.tsx
├── portfolio
│ ├── AccountPoolsTable.tsx
│ ├── BondsTable.tsx
│ ├── Breakdown.tsx
│ ├── CourtRewardsTable.tsx
│ ├── CourtTabGroup.tsx
│ ├── CreatorFeePayouts.tsx
│ ├── CurrenciesTable.tsx
│ ├── DepositButton.tsx
│ ├── EmptyPortfolio.tsx
│ ├── HistoryTabGroup.tsx
│ ├── MarketPositionHeader.tsx
│ ├── MarketPositions.tsx
│ ├── PortfolioIdentity.tsx
│ ├── TradeHistoryTable.tsx
│ ├── TransactionHistoryTable.tsx
│ ├── Transfer.tsx
│ ├── TransferButton.tsx
│ └── WithdrawButton.tsx
├── settings
│ ├── AccountSettingsForm.tsx
│ ├── FeePayingAssetSelect.tsx
│ ├── OtherSettingsForm.tsx
│ └── SettingsModal.tsx
├── top-bar
│ ├── Alerts.tsx
│ ├── MenuItem.tsx
│ ├── MenuLogo.tsx
│ ├── Navigation.tsx
│ ├── index.tsx
│ └── navigation-items.ts
├── trade-form
│ ├── Amm2TradeForm.tsx
│ ├── BuyForm.tsx
│ ├── LimitOrderForm.tsx
│ ├── SellForm.tsx
│ ├── TradeTab.tsx
│ └── index.tsx
├── twitch
│ └── TwitchPlayer.tsx
├── ui
│ ├── AddressInput.tsx
│ ├── AssetInput.tsx
│ ├── AssetSelect.tsx
│ ├── Avatar.tsx
│ ├── Carousel.tsx
│ ├── CopyIcon.tsx
│ ├── Footer.tsx
│ ├── FormTransactionButton.tsx
│ ├── HorizontalScroll.tsx
│ ├── InfoPopover.tsx
│ ├── Input.tsx
│ ├── Loader.tsx
│ ├── MarketImage.tsx
│ ├── Modal.tsx
│ ├── NotificationCenter.tsx
│ ├── Paginator.tsx
│ ├── PercentageChange.tsx
│ ├── Pill.tsx
│ ├── QrCode.tsx
│ ├── QuillEditor.tsx
│ ├── QuillViewer.tsx
│ ├── RangeInput.tsx
│ ├── ReferendumSummary.tsx
│ ├── SecondaryButton.tsx
│ ├── Skeleton.tsx
│ ├── SubTabsList.tsx
│ ├── TabGroup.tsx
│ ├── Table.tsx
│ ├── TableChart.tsx
│ ├── TimeFilters.tsx
│ ├── TimeSeriesChart.tsx
│ ├── Toggle.tsx
│ ├── TransactionButton.tsx
│ ├── TruncatedText.tsx
│ ├── TypingIndicator.tsx
│ ├── actionable
│ │ ├── ActionableCard.tsx
│ │ └── cards
│ │ │ ├── CreateAccount.tsx
│ │ │ ├── Deposit.tsx
│ │ │ └── StartTrading.tsx
│ └── inputs.tsx
├── web3wallet
│ └── index.tsx
└── wizard
│ ├── WizardStepper.tsx
│ └── types.ts
├── declarations.d.ts
├── docker-compose.yml
├── e2e
├── errors.spec.ts
├── index.spec.ts
├── index.spec.ts-snapshots
│ └── learnSection-chromium-linux.png
└── lib
│ ├── index.page.ts
│ └── test.ts
├── layouts
├── DefaultLayout.tsx
├── PortfolioLayout.tsx
└── types.ts
├── lib
├── cms
│ ├── featured-markets.ts
│ ├── get-promoted-markets.ts
│ ├── markets.ts
│ ├── news.ts
│ ├── sanity
│ │ └── index.ts
│ └── topics.ts
├── constants
│ ├── breakpoints.ts
│ ├── category-images.ts
│ ├── chains.ts
│ ├── foreign-asset.ts
│ ├── index.ts
│ ├── market-filter.ts
│ ├── markets.ts
│ ├── supported-currencies.ts
│ └── whitelisted-trusted-creators.ts
├── gql
│ ├── constants.ts
│ ├── display-name.ts
│ ├── featured-markets.ts
│ ├── get-network-stats.ts
│ ├── historical-prices.ts
│ ├── market-header.ts
│ ├── market-history.ts
│ ├── markets-stats.ts
│ ├── markets.ts
│ ├── popular-categories.ts
│ ├── resolution-date.ts
│ └── trending-markets.ts
├── hooks
│ ├── animation
│ │ ├── useParallax.ts
│ │ └── useTypedText.ts
│ ├── events
│ │ ├── useGlobalKeyPress.ts
│ │ ├── useHasMounted.ts
│ │ ├── useHover.ts
│ │ ├── useRelativeMousePosition.ts
│ │ └── useWindowSize.ts
│ ├── index.ts
│ ├── queries
│ │ ├── amm2
│ │ │ └── useAmm2Pool.ts
│ │ ├── cms
│ │ │ └── useMarketCmsMetadata.ts
│ │ ├── constants.ts
│ │ ├── court
│ │ │ ├── useCaseMarketId.ts
│ │ │ ├── useConnectedCourtParticipant.ts
│ │ │ ├── useCourtCases.ts
│ │ │ ├── useCourtParticipants.ts
│ │ │ ├── useCourtStakeSharePercentage.ts
│ │ │ ├── useCourtTotalStakedAmount.ts
│ │ │ ├── useCourtVoteDraws.ts
│ │ │ ├── useCourtYearlyInflation.ts
│ │ │ └── useMarketCaseId.ts
│ │ ├── orderbook
│ │ │ ├── useConnectedAddressOrders.ts
│ │ │ ├── useOrders.ts
│ │ │ └── useRpcOrders.ts
│ │ ├── polkadot
│ │ │ └── usePolkadotReferendumVotes.ts
│ │ ├── useAccountAmm2Pools.ts
│ │ ├── useAccountAssetBalances.ts
│ │ ├── useAccountBonds.ts
│ │ ├── useAccountPoolAssetBalances.ts
│ │ ├── useAccountTokenPositions.ts
│ │ ├── useAmm2MarketSpotPrices.ts
│ │ ├── useAssetMetadata.ts
│ │ ├── useAssetUsdPrice.ts
│ │ ├── useBalance.ts
│ │ ├── useBalances.ts
│ │ ├── useCategoryCounts.ts
│ │ ├── useChainConstants.ts
│ │ ├── useCourtNextPayout.ts
│ │ ├── useCourtReassignments.ts
│ │ ├── useCreatorFeePayouts.ts
│ │ ├── useCurrencyBalances.ts
│ │ ├── useExtrinsicFee.ts
│ │ ├── useFavoriteMarkets.ts
│ │ ├── useFeePayingAsset.ts
│ │ ├── useForeignAssetBalances.ts
│ │ ├── useIdentities.ts
│ │ ├── useIdentity.ts
│ │ ├── useInfiniteMarkets.ts
│ │ ├── useLatestTrades.tsx
│ │ ├── useMarket.ts
│ │ ├── useMarket24hrPriceChanges.ts
│ │ ├── useMarketDeadlineConstants.ts
│ │ ├── useMarketDisputes.ts
│ │ ├── useMarketEventHistory.ts
│ │ ├── useMarketIsTradingEnabled.ts
│ │ ├── useMarketPoolId.ts
│ │ ├── useMarketPriceHistory.ts
│ │ ├── useMarketSearch.ts
│ │ ├── useMarketSpotPrices.ts
│ │ ├── useMarketStage.ts
│ │ ├── useMarketsByIds.ts
│ │ ├── useMarketsStats.ts
│ │ ├── useMintedInCourt.ts
│ │ ├── usePool.ts
│ │ ├── usePoolAccountIds.ts
│ │ ├── usePoolBaseBalance.ts
│ │ ├── usePoolLiquidity.ts
│ │ ├── usePoolsByIds.ts
│ │ ├── usePortfolioPositions.ts
│ │ ├── useReadyToReportMarkets.ts
│ │ ├── useRecommendedMarkets.ts
│ │ ├── useRedeemableMarkets.ts
│ │ ├── useRpcMarket.ts
│ │ ├── useSaturatedMarket.ts
│ │ ├── useTotalIssuanceForPools.ts
│ │ ├── useTradeHistory.ts
│ │ ├── useTradeItemState.ts
│ │ ├── useTransactionHistory.ts
│ │ ├── useZtgBalance.ts
│ │ └── useZtgPrice.ts
│ ├── slides.tsx
│ ├── trade.tsx
│ ├── useCrossChainExtrinsic.ts
│ ├── useExtrinsic.ts
│ ├── useLocalStorage.ts
│ ├── useMarketImage.ts
│ ├── useMarketsUrlQuery.ts
│ ├── usePrevious.ts
│ ├── useQueryParamState.ts
│ ├── useSdkv2.ts
│ ├── useSubscribeBlockEvents.ts
│ ├── useUserLocation.ts
│ └── useWeb3Wallet.ts
├── math.spec.ts
├── math.ts
├── query-client.ts
├── state
│ ├── account.tsx
│ ├── alerts
│ │ ├── index.ts
│ │ ├── types.ts
│ │ └── useAlerts.ts
│ ├── chaintime.ts
│ ├── confirm-modal
│ │ └── useConfirmation.ts
│ ├── court
│ │ ├── CourtCaseJurorCompositeId.ts
│ │ ├── CourtSaltPhraseStorage.ts
│ │ ├── get-stage.ts
│ │ ├── types.ts
│ │ ├── useCourtBacklog.ts
│ │ ├── useCourtCommitmentHash.ts
│ │ ├── useCourtSalt.tsx
│ │ ├── useCourtStage.ts
│ │ ├── useOutcomeMatchingCommitmentHash.ts
│ │ └── useVoteOutcome.ts
│ ├── cross-chain.ts
│ ├── delay-queue.ts
│ ├── disclaimer.ts
│ ├── favorites
│ │ └── index.ts
│ ├── fee-paying-asset.ts
│ ├── market-creation
│ │ ├── constants
│ │ │ ├── currency.ts
│ │ │ ├── deadline-options.ts
│ │ │ └── swap-fee.ts
│ │ ├── editor.ts
│ │ ├── types
│ │ │ ├── draft.ts
│ │ │ ├── fieldstate.ts
│ │ │ ├── form.ts
│ │ │ ├── step.ts
│ │ │ ├── timeline.ts
│ │ │ └── validation.ts
│ │ └── util
│ │ │ └── tickers.ts
│ ├── notifications.ts
│ ├── onboarding.ts
│ ├── polkadot-api.ts
│ ├── promotions.ts
│ ├── util
│ │ ├── persistent-atom.ts
│ │ └── web3auth-config.ts
│ ├── wallet-connect.ts
│ └── wallet.tsx
├── twitch
│ └── index.ts
├── types
│ ├── create-market.ts
│ ├── deep-partial.ts
│ ├── deep-readonly.ts
│ ├── index.ts
│ ├── market-filter.ts
│ ├── markets.ts
│ ├── union.ts
│ └── user-identity.ts
└── util
│ ├── amm2.spec.ts
│ ├── amm2.ts
│ ├── assets-are-equal.ts
│ ├── assets.ts
│ ├── await-indexer.ts
│ ├── calc-free-balance.spec.ts
│ ├── calc-free-balance.ts
│ ├── calc-price-history-start.ts
│ ├── calc-resolved-market-prices.ts
│ ├── calc-scalar-winnings.spec.ts
│ ├── calc-scalar-winnings.ts
│ ├── calculate-restrictive-pool-asset.spec.ts
│ ├── calculate-restrictive-pool-asset.ts
│ ├── color-calc.spec.ts
│ ├── color-calc.ts
│ ├── convert-decimals.spec.ts
│ ├── convert-decimals.ts
│ ├── count-decimals.ts
│ ├── court
│ └── calculateSlashableStake.ts
│ ├── create-vote-commitment-hash.spec.ts
│ ├── create-vote-commitment-hash.ts
│ ├── delay.ts
│ ├── download.ts
│ ├── estimate-market-resolution.ts
│ ├── fetch-all-pages.spec.ts
│ ├── fetch-all-pages.ts
│ ├── fonts.ts
│ ├── format-compact.ts
│ ├── format-scalar-outcome.ts
│ ├── generate-guid.ts
│ ├── get-api-at.ts
│ ├── get-query-params.ts
│ ├── getPlaiceHolders.ts
│ ├── hasDatePassed.ts
│ ├── index.ts
│ ├── is-amm2-market.ts
│ ├── is-current-origin.ts
│ ├── lookup-price.ts
│ ├── market-filter.ts
│ ├── market-status-details.ts
│ ├── market.spec.ts
│ ├── market.ts
│ ├── order-selection.spec.ts
│ ├── order-selection.ts
│ ├── parse-asset-id.ts
│ ├── perbill-to-number.ts
│ ├── poll.spec.ts
│ ├── poll.ts
│ ├── tx.ts
│ ├── unsub-or-warns.ts
│ ├── wallet-connect-signer.ts
│ ├── weight-math.spec.ts
│ └── weight-math.ts
├── next-env.d.ts
├── next.config.js
├── package.json
├── pages
├── 404.tsx
├── _app.tsx
├── _document.tsx
├── activity.tsx
├── api
│ ├── cms
│ │ └── market-metadata
│ │ │ └── batch
│ │ │ └── index.ts
│ ├── ipfs
│ │ ├── index.ts
│ │ └── types.ts
│ ├── location.ts
│ ├── og
│ │ ├── [marketId].ts
│ │ └── generate.tsx
│ ├── onboardUser.ts
│ ├── revalidate.ts
│ └── usd-price.ts
├── avatar
│ ├── [address].tsx
│ └── index.tsx
├── claim.tsx
├── court
│ ├── [caseid].tsx
│ └── index.tsx
├── create-account.tsx
├── create.tsx
├── deposit.tsx
├── index.tsx
├── latest-trades.tsx
├── leaderboard
│ └── [period].tsx
├── liquidity
│ └── [poolid].tsx
├── markets
│ ├── [marketid].tsx
│ ├── await
│ │ └── [marketid].tsx
│ ├── favorites.tsx
│ └── index.tsx
├── portfolio
│ ├── [address].tsx
│ └── index.tsx
├── search.tsx
└── topics
│ └── [topic].tsx
├── playwright.config.ts
├── postcss.config.js
├── public
├── Leaderboard-banner.png
├── Revised_Logo.svg
├── Zeitgeist-trans.png
├── airdrop.json
├── airdrop.svg
├── android-chrome-192x192.png
├── android-chrome-256x256.png
├── android-chrome-512x512.png
├── apple-touch-icon.png
├── avatar_preview.jpeg
├── banner.png
├── browserconfig.xml
├── carousel
│ ├── banner.png
│ └── intro_zeitgeist_avatar.png
├── categories
│ ├── crypto
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ └── 4.png
│ ├── dotsama
│ │ └── 1.png
│ ├── entertainment
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ └── 4.png
│ ├── esports
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ └── 5.png
│ ├── finance
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ └── 4.png
│ ├── news
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ └── 5.png
│ ├── politics
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ └── 4.png
│ ├── science
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ └── 4.png
│ ├── sports
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ └── 5.png
│ ├── tech
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ └── 4.png
│ └── zeitgeist
│ │ └── 1.png
├── category
│ ├── crypto.png
│ ├── dotsama.png
│ ├── entertainment.png
│ ├── finance.png
│ ├── news.png
│ ├── politics.png
│ ├── science.png
│ ├── sports.png
│ ├── technology.png
│ └── zeitgeist.png
├── court.png
├── court_banner.png
├── court_gnomes.png
├── crypto_wizard.png
├── currencies
│ ├── assethub.svg
│ ├── ausd.jpg
│ ├── dot.png
│ ├── dot_filled.png
│ ├── dot_filled_black.png
│ ├── moonbeam.png
│ ├── rococo.png
│ ├── rococo.svg
│ ├── usdc.svg
│ ├── usdt.png
│ ├── ztg.jpg
│ ├── ztg.png
│ ├── ztg.svg
│ └── ztg_neue.png
├── dark-404.png
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
├── featured
│ ├── Kanaria_NFT.png
│ ├── Kusama.png
│ └── Polkadot.png
├── fonts
│ └── inter
│ │ ├── static
│ │ ├── Inter-Black.ttf
│ │ ├── Inter-Bold.ttf
│ │ ├── Inter-ExtraBold.ttf
│ │ ├── Inter-ExtraLight.ttf
│ │ ├── Inter-Light.ttf
│ │ ├── Inter-Medium.ttf
│ │ ├── Inter-Regular.ttf
│ │ ├── Inter-SemiBold.ttf
│ │ └── Inter-Thin.ttf
│ │ └── variable.ttf
├── horse_rider.svg
├── icons
│ ├── ZTG.svg
│ ├── acc-balance.svg
│ ├── court.svg
│ ├── default-market.png
│ ├── discord.svg
│ ├── facebook-f.svg
│ ├── google-g.svg
│ ├── lock.svg
│ ├── new-moon.svg
│ ├── nova.png
│ ├── polkadot-js.png
│ ├── polkassembly.svg
│ ├── singular.svg
│ ├── subwallet.png
│ ├── talisman.png
│ ├── telegram.svg
│ ├── unlock.svg
│ ├── usdc-icon.svg
│ ├── verified-icon.svg
│ ├── walletconnect-icon.svg
│ └── x-logo.svg
├── learn
│ ├── create_account.png
│ ├── deposit.png
│ ├── learn-1.png
│ ├── learn-2.png
│ ├── learn-3.png
│ └── start_trading.png
├── light-404.png
├── misc
│ └── portal_gate.png
├── moon.svg
├── mstile-150x150.png
├── nft
│ ├── circles-background.png
│ └── ellipse-background.png
├── og
│ ├── bg1.png
│ └── zeitgeist_badge.png
├── polkadot_icon.png
├── prices
│ ├── dot.json
│ ├── usdt.json
│ └── ztg.json
├── safari-pinned-tab.svg
├── singular.png
├── site.webmanifest
├── sun.svg
├── support.png
├── web3auth.svg
└── ztg_8.svg
├── scripts
├── extractMarketImages.ts
├── mts
│ ├── getSpotPrices.mts
│ └── tsconfig.json
└── tsconfig.json
├── styles
├── card.css
├── date-picker.css
├── drawer.css
├── index.css
├── kusama-derby.css
├── quill.css
└── range-component.css
├── tailwind.config.js
├── tsconfig.json
├── vitest.config.ts
├── wsx-build.sh
├── yarn.lock
└── ztg-build.sh
/.env.production:
--------------------------------------------------------------------------------
1 | NEXT_PUBLIC_FATHOM_SITE_ID=FATHOM_ANALYTICS_SITE_ID
2 | NEXT_PUBLIC_HOTJAR_SITE_ID=HOTJAR_SITE_ID
3 | NEXT_PUBLIC_MARKET_IMAGE_MAX_KB=100
4 | NEXT_PUBLIC_BLOCK_TIME=12
5 | NEXT_PUBLIC_MARKET_POLL_INTERVAL_MS=120000
6 |
7 | NEXT_PUBLIC_SHOW_COURT=false
8 |
9 | NEXT_PUBLIC_NOT_ALLOWED_COUNTRIES=["US","KP","SY","CU","IR","VE","PR"]
10 |
11 | #NEXT_PUBLIC_NOTIFICATION_MESSAGE="App is currently under maintenance. Please return at 12:00pm UTC."
12 | #NEXT_PUBLIC_FEATURED_MARKET_IDS="[126,128,77]"
13 |
14 | # markets that will not be shown in the app
15 | #NEXT_PUBLIC_HIDDEN_MARKET_IDS=[]
16 |
17 | NEXT_PUBLIC_IPFS_NODE="http://ipfs.zeitgeist.pm:5001"
18 |
19 | NEXT_PUBLIC_VERCEL_ENV=production
20 | NEXT_PUBLIC_SITE_URL=https://app.zeitgeist.pm
21 |
--------------------------------------------------------------------------------
/.github/workflows/playwright.yml:
--------------------------------------------------------------------------------
1 | name: E2E Tests
2 | on:
3 | deployment_status:
4 | jobs:
5 | test-e2e:
6 | name: Playwright tests
7 | if: github.event_name == 'deployment_status' && github.event.deployment_status.state == 'success'
8 | timeout-minutes: 15
9 | runs-on: ubuntu-latest
10 | container:
11 | # Use image version that matches your Playwright version
12 | # (Check version in package.json)
13 | image: mcr.microsoft.com/playwright:v1.39.0-jammy
14 | steps:
15 | - uses: actions/checkout@v3
16 | - uses: actions/setup-node@v3
17 | with:
18 | node-version: 16
19 | - name: Install dependencies
20 | run: yarn
21 | - name: Run Playwright tests
22 | run: yarn playwright test
23 | env:
24 | PLAYWRIGHT_TEST_BASE_URL: ${{ github.event.deployment_status.target_url }}
25 | - uses: actions/upload-artifact@v4
26 | if: always()
27 | with:
28 | name: playwright-report
29 | path: playwright-report/
30 | retention-days: 30
31 |
--------------------------------------------------------------------------------
/.github/workflows/sync-staging-branches.yml:
--------------------------------------------------------------------------------
1 | name: Sync staging to test-staging
2 |
3 | on:
4 | push:
5 | branches:
6 | - staging
7 |
8 | jobs:
9 | sync-branches:
10 | runs-on: ubuntu-latest
11 | name: Syncing branches
12 | steps:
13 | - uses: actions/checkout@v3
14 | - name: open-pr
15 | id: open-pr
16 | uses: repo-sync/pull-request@v2
17 | with:
18 | source_branch: "staging"
19 | destination_branch: "test-staging"
20 | pr_title: "Pulling ${{ github.ref }} into test-staging"
21 | pr_label: "automerge"
22 | github_token: ${{ secrets.GITHUB_TOKEN }}
23 | - name: automerge
24 | uses: pascalgn/automerge-action@v0.15.5
25 | env:
26 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
27 | PULL_REQUEST: ${{ steps.open-pr.outputs.pr_number }}
28 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Unit Tests
2 | on:
3 | push:
4 | branches: [staging]
5 | pull_request:
6 | branches: [staging]
7 | jobs:
8 | test:
9 | name: Jest
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v3
13 | - name: Install dependencies
14 | run: yarn
15 | - name: Run tests
16 | run: yarn test
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 |
27 | # local env files
28 | .env
29 | .env.local
30 | .env.development.local
31 | .env.test.local
32 | .env.production.local
33 |
34 | # vercel
35 | .vercel
36 |
37 | .yarn/cache
38 | .yarn/install-state.gz
39 | .yarnrc
40 | /test-results/
41 | /playwright-report/
42 | /playwright/.cache/
43 |
44 | #reference
45 | /zeitgeist-subsquid
46 | /zeitgeist-runtime
47 | /zeitgeist-sdk
48 | /reference
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | trailingComma: "all",
3 | tabWidth: 2,
4 | singleQuote: false,
5 | semi: true,
6 | plugins: ["prettier-plugin-tailwindcss"],
7 | };
8 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.formatOnSave": true,
3 | "prettier.configPath": ".prettierrc.js",
4 | "cSpell.enabled": true,
5 | "cSpell.words": ["Excecution"]
6 | }
7 |
--------------------------------------------------------------------------------
/.yarnrc.yml:
--------------------------------------------------------------------------------
1 | nodeLinker: node-modules
2 |
3 | yarnPath: .yarn/releases/yarn-3.2.2.cjs
4 | checksumBehavior: update
5 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:16-alpine
2 | WORKDIR /ui
3 | COPY . .
4 | RUN yarn install
5 | RUN yarn build
6 | EXPOSE 3000
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Zeitgeist prediction markets
2 |
3 | ## Install dependencies
4 |
5 | `yarn install`
6 |
7 | ## Setup environment variables
8 |
9 | Some features require environment variables. To test locally create `.env.local` file from `.env.example`.
10 |
11 | `cp .env.example .env.local`
12 |
13 | ## Run development environment
14 |
15 | `yarn dev`
16 |
--------------------------------------------------------------------------------
/breakpoints.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | sm: 600,
3 | md: 905,
4 | lg: 1240,
5 | xl: 1440,
6 | "2xl": 1728,
7 | };
8 |
--------------------------------------------------------------------------------
/components/account/Account.tsx:
--------------------------------------------------------------------------------
1 | import { Dialog } from "@headlessui/react";
2 | import Modal from "components/ui/Modal";
3 | import { useAccountModals } from "lib/state/account";
4 | import AccountModalContent from "./AccountModalContent";
5 | import AccountModalHead from "./AccountModalHead";
6 | import WalletSelect from "./WalletSelect";
7 |
8 | export const Account = () => {
9 | const {
10 | accountSelectModalOpen,
11 | walletSelectModalOpen,
12 | closeAccountSelect,
13 | closeWalletSelect,
14 | } = useAccountModals();
15 |
16 | return (
17 | <>
18 |
{value.description}
14 |= NextPage
& {
5 | Layout?: FC | (() => JSX.Element);
6 | };
7 |
--------------------------------------------------------------------------------
/lib/cms/featured-markets.ts:
--------------------------------------------------------------------------------
1 | import groq from "groq";
2 | import { sanity } from "./sanity";
3 |
4 | export type CmsFeaturedMarkets = {
5 | marketIds: number[];
6 | };
7 |
8 | const fields = groq`{
9 | "marketIds": markets[].marketId,
10 | }`;
11 |
12 | export const getCmsFeaturedMarkets = async () => {
13 | // Short circuit to use default if NOTION_API_KEY doesn't exist.
14 | const data = await sanity.fetch
12 | Latest Trades
13 |
14 |