├── .env.example ├── .eslintrc.json ├── .gitignore ├── .vscode ├── ltex.dictionary.en-US.txt └── settings.json ├── LICENSE.md ├── README.md ├── jsconfig.json ├── markdoc ├── nodes.js ├── partials │ ├── token-standard-full.md │ └── token-standard-short.md └── tags.js ├── next.config.js ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── prettier.config.js ├── public ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── assets │ ├── banners │ │ └── touch-screen.jpg │ ├── candy-machine │ │ ├── candy-machine-photo.png │ │ ├── core-cm-v3.jpg │ │ └── creator-studio.png │ ├── social │ │ └── dev-hub-preview.jpg │ └── token-metadata │ │ └── test-image.png ├── browserconfig.xml ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── fonts │ ├── Inter-italic.var.woff2 │ ├── Inter-roman.var.woff2 │ ├── lexend.txt │ └── lexend.woff2 ├── images │ ├── hybrid-ui-template-image.jpg │ └── metaplex-next-js-template.png ├── mstile-144x144.png ├── mstile-150x150.png ├── mstile-310x150.png ├── mstile-310x310.png ├── mstile-70x70.png ├── robots.txt ├── safari-pinned-tab.svg └── site.webmanifest ├── src ├── components │ ├── Button.jsx │ ├── Callout.jsx │ ├── DialectContext.jsx │ ├── DialectSwitcher.jsx │ ├── Fence.jsx │ ├── Header.jsx │ ├── Hero.jsx │ ├── HeroCode.jsx │ ├── HeroScreenshot.jsx │ ├── Image.jsx │ ├── Layout.jsx │ ├── MobileNavigation.jsx │ ├── NavList.jsx │ ├── Navigation.jsx │ ├── Prose.jsx │ ├── QuickLinks.jsx │ ├── Search.jsx │ ├── Seperator.jsx │ ├── TableOfContent.jsx │ ├── ThemeSelector.jsx │ ├── Totem.jsx │ ├── Video.jsx │ ├── apiComponents │ │ ├── apiComponentWrapper.jsx │ │ ├── apiParams.jsx │ │ ├── endPointSelector.jsx │ │ ├── exampleSelector.jsx │ │ ├── languageComponents │ │ │ ├── cSharpRenderer.jsx │ │ │ ├── curlRequestRenderer.jsx │ │ │ ├── goRequestRenderer.jsx │ │ │ ├── javaRenderer.jsx │ │ │ ├── javascriptRequestRenderer.jsx │ │ │ ├── kotlinRenderer.jsx │ │ │ ├── phpRenderer.jsx │ │ │ ├── pythonRequestRenderer.jsx │ │ │ ├── rubyRenderer.jsx │ │ │ ├── rustRenderer.jsx │ │ │ ├── swiftRenderer.jsx │ │ │ └── umiRequestRenderer.jsx │ │ ├── languageRenderer.jsx │ │ ├── languageSelector.jsx │ │ └── responce.jsx │ ├── diagrams │ │ ├── Diagram.jsx │ │ ├── DiagramWhimsical.jsx │ │ ├── FloatingEdge.jsx │ │ ├── Node.jsx │ │ ├── index.js │ │ ├── useDownloadImage.js │ │ ├── useFullscreen.js │ │ ├── useTransforms.js │ │ └── utils.jsx │ ├── helperComponents │ │ ├── badgesList.jsx │ │ ├── packages.js │ │ └── packagesUsed.jsx │ ├── icons │ │ ├── RustIcon.jsx │ │ ├── TrafficLightsIcon.jsx │ │ ├── dual-tone │ │ │ ├── InstallationIcon.jsx │ │ │ ├── LightbulbIcon.jsx │ │ │ ├── PluginsIcon.jsx │ │ │ ├── PresetsIcon.jsx │ │ │ ├── ThemingIcon.jsx │ │ │ ├── WarningIcon.jsx │ │ │ └── index.jsx │ │ ├── index.jsx │ │ ├── languages │ │ │ ├── CSharpIcon.jsx │ │ │ ├── CurlIcon.jsx │ │ │ ├── GoIcon.jsx │ │ │ ├── JavaIcon.jsx │ │ │ ├── JavaScriptIcon.jsx │ │ │ ├── KotlinIcon.jsx │ │ │ ├── PhpIcon.jsx │ │ │ ├── PythonIcon.jsx │ │ │ ├── RubyIcon.jsx │ │ │ ├── RustIcon.jsx │ │ │ ├── ShellIcon.jsx │ │ │ ├── SwiftIcon.jsx │ │ │ └── TypescriptIcon.jsx │ │ └── spinner.jsx │ └── products │ │ ├── Badge.jsx │ │ ├── CopyToClipboard.jsx │ │ ├── Grid.jsx │ │ ├── GridAllProducts.jsx │ │ ├── IconWithName.jsx │ │ ├── MobileAppGrid.jsx │ │ ├── Sections.jsx │ │ ├── SwitcherDialog.jsx │ │ ├── SwitcherPopover.jsx │ │ ├── amman │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── aura │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── bubblegum-v2 │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── bubblegum │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── candyMachine │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── cli │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── core │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── coreCandyMachine │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── das-api │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── fusion │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── global │ │ ├── Hero.jsx │ │ ├── Logo.jsx │ │ └── index.js │ │ ├── guides │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── hydra │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── index.js │ │ ├── inscription │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── legacyDocumentation │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── mpl-hybrid │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── sugar │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── tokenAuthRules │ │ ├── Hero.jsx │ │ └── index.js │ │ ├── tokenMetadata │ │ ├── Hero.jsx │ │ └── index.js │ │ └── umi │ │ ├── Hero.jsx │ │ └── index.js ├── images │ ├── blur-cyan.png │ ├── blur-indigo.png │ ├── core-banner.jpg │ ├── holo-code.jpg │ └── logos │ │ ├── discord-mark-white.png │ │ ├── github-mark-white.png │ │ ├── github-mark.png │ │ └── x-black.png ├── lib │ └── api │ │ ├── aura │ │ ├── das │ │ │ ├── getAssestByAuthority.js │ │ │ ├── getAsset.js │ │ │ ├── getAssetBatch.js │ │ │ ├── getAssetProof.js │ │ │ ├── getAssetProofBatch.js │ │ │ ├── getAssetsByCreator.js │ │ │ ├── getAssetsByGroup.js │ │ │ ├── getAssetsByOwner.js │ │ │ ├── getSignaturesForAsset.js │ │ │ ├── getTokenAccounts.js │ │ │ └── searchAssest.js │ │ ├── methods.js │ │ └── template.js │ │ ├── renderRequestBody.js │ │ └── template.js ├── middleware.js ├── pages │ ├── 404.md │ ├── _app.jsx │ ├── _document.jsx │ ├── amman │ │ ├── cli-commands.md │ │ ├── configuration.md │ │ ├── getting-started.md │ │ ├── index.md │ │ └── pre-made-configs.md │ ├── aura │ │ ├── api │ │ │ └── v1 │ │ │ │ ├── das │ │ │ │ ├── get-asset-batch.md │ │ │ │ ├── get-asset-proof-batch.md │ │ │ │ ├── get-asset-proof.md │ │ │ │ ├── get-asset.md │ │ │ │ ├── get-assets-by-authority.md │ │ │ │ ├── get-assets-by-creator.md │ │ │ │ ├── get-assets-by-group.md │ │ │ │ ├── get-assets-by-owner.md │ │ │ │ ├── get-signatures-for-asset.md │ │ │ │ ├── get-token-accounts.md │ │ │ │ └── search-assets.md │ │ │ │ └── testApiMethod.md │ │ ├── blockchains │ │ │ ├── eclipse.md │ │ │ └── solana.md │ │ ├── faq.md │ │ ├── index.md │ │ └── reading-solana-and-svm-data.md │ ├── bubblegum-v2 │ │ ├── burn-cnfts.md │ │ ├── collections.md │ │ ├── concurrent-merkle-trees.md │ │ ├── create-trees.md │ │ ├── delegate-cnfts.md │ │ ├── delegate-trees.md │ │ ├── faq.md │ │ ├── fetch-cnfts.md │ │ ├── freeze-cnfts.md │ │ ├── hashed-nft-data.md │ │ ├── index.md │ │ ├── merkle-tree-canopy.md │ │ ├── mint-cnfts.md │ │ ├── sdk │ │ │ ├── index.md │ │ │ ├── javascript.md │ │ │ └── rust.md │ │ ├── stored-nft-data.md │ │ ├── transfer-cnfts.md │ │ ├── update-cnfts.md │ │ └── verify-creators.md │ ├── bubblegum │ │ ├── burn-cnfts.md │ │ ├── create-trees.md │ │ ├── decompress-cnfts.md │ │ ├── delegate-cnfts.md │ │ ├── delegate-trees.md │ │ ├── guides │ │ │ ├── index.md │ │ │ └── javascript │ │ │ │ ├── how-to-create-1000000-nfts-on-solana.md │ │ │ │ └── how-to-interact-with-cnfts-on-other-svms.md │ │ ├── index.md │ │ ├── mint-cnfts.md │ │ ├── sdk │ │ │ ├── index.md │ │ │ ├── javascript.md │ │ │ └── rust.md │ │ ├── transfer-cnfts.md │ │ ├── update-cnfts.md │ │ ├── verify-collections.md │ │ └── verify-creators.md │ ├── candy-machine │ │ ├── custom-guards │ │ │ └── generating-client.md │ │ ├── getting-started │ │ │ ├── index.md │ │ │ ├── js.md │ │ │ └── rust.md │ │ ├── guard-groups.md │ │ ├── guard-route.md │ │ ├── guards.md │ │ ├── guards │ │ │ ├── address-gate.md │ │ │ ├── allocation.md │ │ │ ├── allow-list.md │ │ │ ├── bot-tax.md │ │ │ ├── end-date.md │ │ │ ├── freeze-sol-payment.md │ │ │ ├── freeze-token-payment.md │ │ │ ├── gatekeeper.md │ │ │ ├── mint-limit.md │ │ │ ├── nft-burn.md │ │ │ ├── nft-gate.md │ │ │ ├── nft-payment.md │ │ │ ├── program-gate.md │ │ │ ├── redeemed-amount.md │ │ │ ├── sol-payment.md │ │ │ ├── start-date.md │ │ │ ├── third-party-signer.md │ │ │ ├── token-burn.md │ │ │ ├── token-gate.md │ │ │ ├── token-payment.md │ │ │ └── token2022-payment.md │ │ ├── guides │ │ │ ├── airdrop-mint-to-another-wallet.md │ │ │ ├── create-an-nft-collection-on-solana-with-candy-machine.md │ │ │ ├── index.md │ │ │ └── mint-to-another-wallet.md │ │ ├── index.md │ │ ├── insert-items.md │ │ ├── manage.md │ │ ├── mint.md │ │ ├── pnfts.md │ │ ├── references │ │ │ └── index.md │ │ ├── settings.md │ │ └── sugar │ │ │ ├── bring-your-own-uploader.md │ │ │ ├── cache.md │ │ │ ├── commands │ │ │ ├── airdrop.md │ │ │ ├── bundlr.md │ │ │ ├── collection.md │ │ │ ├── config.md │ │ │ ├── deploy.md │ │ │ ├── freeze.md │ │ │ ├── guard.md │ │ │ ├── hash.md │ │ │ ├── launch.md │ │ │ ├── mint.md │ │ │ ├── reveal.md │ │ │ ├── show.md │ │ │ ├── sign.md │ │ │ ├── update.md │ │ │ ├── upload.md │ │ │ ├── validate.md │ │ │ ├── verify.md │ │ │ └── withdraw.md │ │ │ ├── configuration.md │ │ │ ├── getting-started.md │ │ │ ├── index.md │ │ │ └── installation.md │ ├── cli │ │ ├── config │ │ │ ├── explorer.md │ │ │ ├── rpcs.md │ │ │ └── wallets.md │ │ ├── core │ │ │ ├── create-asset.md │ │ │ ├── create-collection.md │ │ │ ├── fetch.md │ │ │ ├── plugins.md │ │ │ └── update-asset.md │ │ ├── index.md │ │ ├── installation.md │ │ └── toolbox │ │ │ ├── sol-airdrop.md │ │ │ ├── sol-balance.md │ │ │ ├── sol-transfer.md │ │ │ ├── token-create.md │ │ │ └── token-transfer.md │ ├── community-guides.md │ ├── contact.md │ ├── core-candy-machine │ │ ├── create.md │ │ ├── custom-guards │ │ │ └── generating-client.md │ │ ├── fetching-a-candy-machine.md │ │ ├── guard-groups.md │ │ ├── guard-route.md │ │ ├── guards.md │ │ ├── guards │ │ │ ├── address-gate.md │ │ │ ├── allocation.md │ │ │ ├── allow-list.md │ │ │ ├── asset-burn-multi.md │ │ │ ├── asset-burn.md │ │ │ ├── asset-gate.md │ │ │ ├── asset-mint-limit.md │ │ │ ├── asset-payment-multi.md │ │ │ ├── asset-payment.md │ │ │ ├── bot-tax.md │ │ │ ├── edition.md │ │ │ ├── end-date.md │ │ │ ├── freeze-sol-payment.md │ │ │ ├── freeze-token-payment.md │ │ │ ├── gatekeeper.md │ │ │ ├── mint-limit.md │ │ │ ├── nft-burn.md │ │ │ ├── nft-gate.md │ │ │ ├── nft-mint-limit.md │ │ │ ├── nft-payment.md │ │ │ ├── program-gate.md │ │ │ ├── redeemed-amount.md │ │ │ ├── sol-fixed-fee.md │ │ │ ├── sol-payment.md │ │ │ ├── start-date.md │ │ │ ├── third-party-signer.md │ │ │ ├── token-burn.md │ │ │ ├── token-gate.md │ │ │ ├── token-payment.md │ │ │ ├── token2022-payment.md │ │ │ └── vanity-mint.md │ │ ├── guides │ │ │ ├── create-a-core-candy-machine-ui.md │ │ │ ├── create-a-core-candy-machine-with-hidden-settings.md │ │ │ └── index.md │ │ ├── index.md │ │ ├── insert-items.md │ │ ├── mint.md │ │ ├── overview.md │ │ ├── preparing-assets.md │ │ ├── references │ │ │ └── index.md │ │ ├── sdk │ │ │ ├── index.md │ │ │ ├── javascript.md │ │ │ └── rust.md │ │ ├── update.md │ │ └── withdrawing-a-candy-machine.md │ ├── core │ │ ├── burn.md │ │ ├── collections.md │ │ ├── core-js-sdk-v1-0.md │ │ ├── create-asset.md │ │ ├── deserialization.md │ │ ├── ecosystem-support.md │ │ ├── execute-asset-signing.md │ │ ├── external-plugins │ │ │ ├── adding-external-plugins.md │ │ │ ├── app-data.md │ │ │ ├── oracle.md │ │ │ ├── overview.md │ │ │ └── removing-external-plugins.md │ │ ├── faq.md │ │ ├── fetch.md │ │ ├── guides │ │ │ ├── anchor │ │ │ │ ├── anchor-staking-example.md │ │ │ │ ├── how-to-create-a-core-collection-with-anchor.md │ │ │ │ └── how-to-create-a-core-nft-asset-with-anchor.md │ │ │ ├── create-soulbound-nft-asset.md │ │ │ ├── immutability.md │ │ │ ├── index.md │ │ │ ├── javascript │ │ │ │ ├── how-to-create-a-core-collection-with-javascript.md │ │ │ │ ├── how-to-create-a-core-nft-asset-with-javascript.md │ │ │ │ └── web2-typescript-staking-example.md │ │ │ ├── loyalty-card-concept-guide.md │ │ │ ├── onchain-ticketing-with-appdata.md │ │ │ ├── oracle-plugin-example.md │ │ │ └── print-editions.md │ │ ├── helpers.md │ │ ├── index.md │ │ ├── json-schema.md │ │ ├── plugins │ │ │ ├── addBlocker.md │ │ │ ├── adding-plugins.md │ │ │ ├── attribute.md │ │ │ ├── autograph.md │ │ │ ├── bubblegum.md │ │ │ ├── burn-delegate.md │ │ │ ├── delegating-and-revoking-plugins.md │ │ │ ├── edition.md │ │ │ ├── freeze-delegate.md │ │ │ ├── immutableMetadata.md │ │ │ ├── index.md │ │ │ ├── master-edition.md │ │ │ ├── permanent-burn-delegate.md │ │ │ ├── permanent-freeze-delegate.md │ │ │ ├── permanent-transfer-delegate.md │ │ │ ├── removing-plugins.md │ │ │ ├── royalties.md │ │ │ ├── transfer-delegate.md │ │ │ ├── update-delegate.md │ │ │ └── verified-creators.md │ │ ├── sdk │ │ │ ├── index.md │ │ │ ├── javascript.md │ │ │ └── rust.md │ │ ├── tm-differences.md │ │ ├── transfer.md │ │ ├── update.md │ │ ├── using-core-in-anchor.md │ │ └── what-is-an-asset.md │ ├── das-api │ │ ├── core-extension │ │ │ ├── convert-das-asset-to-core.md │ │ │ ├── index.md │ │ │ ├── methods │ │ │ │ ├── get-asset.md │ │ │ │ ├── get-assets-by-authority.md │ │ │ │ ├── get-assets-by-collection.md │ │ │ │ ├── get-assets-by-owner.md │ │ │ │ ├── get-collection.md │ │ │ │ ├── search-assets.md │ │ │ │ └── search-collections.md │ │ │ └── plugin-derivation.md │ │ ├── getting-started.md │ │ ├── index.md │ │ └── methods │ │ │ ├── get-asset-by-authority.md │ │ │ ├── get-asset-by-creator.md │ │ │ ├── get-asset-by-group.md │ │ │ ├── get-asset-by-owner.md │ │ │ ├── get-asset-proof.md │ │ │ ├── get-asset-proofs.md │ │ │ ├── get-asset-signatures.md │ │ │ ├── get-asset.md │ │ │ ├── get-assets.md │ │ │ ├── index.md │ │ │ └── search-assets.md │ ├── developer-tools.md │ ├── fusion │ │ ├── constraint-types.md │ │ ├── getting-started.md │ │ ├── index.md │ │ └── transfer-effects.md │ ├── guides │ │ ├── general │ │ │ ├── create-deterministic-metadata-with-turbo.md │ │ │ ├── how-to-diagnose-solana-transaction-errors.md │ │ │ ├── payer-authority-pattern.md │ │ │ └── spl-token-claim-airdrop-using-gumdrop.md │ │ ├── index.md │ │ ├── javascript │ │ │ ├── how-to-add-metadata-to-spl-tokens.md │ │ │ ├── how-to-create-a-solana-token.md │ │ │ ├── how-to-create-an-nft-on-solana.md │ │ │ ├── how-to-transfer-sol-on-solana.md │ │ │ └── how-to-transfer-spl-tokens-on-solana.md │ │ ├── rpcs-and-das.md │ │ ├── rust │ │ │ ├── getting-started-with-rust.md │ │ │ ├── how-to-cpi-into-a-metaplex-program.md │ │ │ ├── metaplex-rust-sdks.md │ │ │ └── working-with-rust.md │ │ ├── setup-a-local-validator.md │ │ ├── solana-programs.md │ │ ├── templates │ │ │ └── metaplex-nextjs-tailwind-template.md │ │ ├── translated │ │ │ └── japanese.md │ │ ├── understanding-pdas.md │ │ ├── validators.md │ │ ├── what-is-solana.md │ │ └── where-do-i-start.md │ ├── hydra │ │ ├── index.md │ │ └── quick-start.md │ ├── index.md │ ├── inscription │ │ ├── authority.md │ │ ├── clear.md │ │ ├── close.md │ │ ├── faq.md │ │ ├── fetch.md │ │ ├── getting-started │ │ │ ├── cli.md │ │ │ ├── index.md │ │ │ ├── js.md │ │ │ └── rust.md │ │ ├── index.md │ │ ├── initialize.md │ │ ├── sharding.md │ │ └── write.md │ ├── legacy-documentation │ │ ├── auction-house │ │ │ ├── auctioneer.md │ │ │ ├── buyer-escrow.md │ │ │ ├── faq.md │ │ │ ├── find.md │ │ │ ├── getting-started.md │ │ │ ├── index.md │ │ │ ├── manage-using-cli.md │ │ │ ├── manage.md │ │ │ ├── receipts.md │ │ │ ├── settings.md │ │ │ └── trading-assets.md │ │ ├── developer-tools │ │ │ ├── beet.md │ │ │ ├── cusper.md │ │ │ ├── rust-bin.md │ │ │ ├── shank.md │ │ │ └── solita.md │ │ ├── fixed-price-sale │ │ │ ├── index.md │ │ │ └── tech-description.md │ │ ├── gumdrop.md │ │ ├── index.md │ │ ├── mobile-sdks │ │ │ ├── android.md │ │ │ └── ios.md │ │ └── token-entangler.md │ ├── mpl-hybrid │ │ ├── create-escrow.md │ │ ├── escrow.md │ │ ├── faq.md │ │ ├── fetch-escrow.md │ │ ├── funding-escrow.md │ │ ├── guides │ │ │ ├── create-your-first-hybrid-collection.md │ │ │ ├── index.md │ │ │ └── mpl-404-hybrid-ui-template.md │ │ ├── index.md │ │ ├── initializeNFTData.md │ │ ├── preparation.md │ │ ├── sdk │ │ │ ├── index.md │ │ │ └── javascript.md │ │ ├── swapping-nfts-to-tokens.md │ │ ├── swapping-tokens-to-nfts.md │ │ ├── swapping.md │ │ └── update-escrow.md │ ├── official-links.md │ ├── programs-and-tools.md │ ├── protocol-fees.md │ ├── rpc-providers.md │ ├── security.md │ ├── sitemap.xml.js │ ├── stability-index.md │ ├── storage-providers.md │ ├── token-auth-rules │ │ ├── buffers.md │ │ ├── composite-rules │ │ │ ├── all.md │ │ │ ├── any.md │ │ │ └── not.md │ │ ├── create-or-update.md │ │ ├── index.md │ │ ├── mplx-rule-sets.md │ │ ├── primitive-rules │ │ │ ├── additional-signer.md │ │ │ ├── amount.md │ │ │ ├── namespace.md │ │ │ ├── pass.md │ │ │ ├── pda-match.md │ │ │ ├── program-owned.md │ │ │ └── pubkey-match.md │ │ ├── references │ │ │ └── index.md │ │ └── validate.md │ ├── token-metadata │ │ ├── burn.md │ │ ├── collections.md │ │ ├── creators.md │ │ ├── delegates.md │ │ ├── escrow.md │ │ ├── faq.md │ │ ├── fetch.md │ │ ├── getting-started │ │ │ ├── index.md │ │ │ ├── js.md │ │ │ └── rust.md │ │ ├── guides │ │ │ ├── account-size-reduction.md │ │ │ ├── anchor │ │ │ │ └── token-claimer-smart-contract.md │ │ │ ├── get-by-collection.md │ │ │ ├── index.md │ │ │ └── javascript │ │ │ │ └── create-an-nft.md │ │ ├── index.md │ │ ├── lock.md │ │ ├── mint.md │ │ ├── pnfts.md │ │ ├── print.md │ │ ├── token-2022.md │ │ ├── token-standard.md │ │ ├── transfer.md │ │ └── update.md │ ├── umi │ │ ├── accounts.md │ │ ├── getting-started │ │ │ └── index.md │ │ ├── guides │ │ │ ├── index.md │ │ │ ├── optimal-transactions-with-compute-units-and-priority-fees.md │ │ │ └── serializing-and-deserializing-transactions.md │ │ ├── helpers.md │ │ ├── http-requests.md │ │ ├── implementations.md │ │ ├── index.md │ │ ├── interfaces.md │ │ ├── kinobi.md │ │ ├── metaplex-umi-plugins.md │ │ ├── plugins.md │ │ ├── programs.md │ │ ├── public-keys-and-signers.md │ │ ├── rpc.md │ │ ├── serializers.md │ │ ├── storage.md │ │ ├── toolbox │ │ │ ├── address-lookup-table.md │ │ │ ├── create-account.md │ │ │ ├── index.md │ │ │ ├── priority-fees-and-compute-managment.md │ │ │ ├── token-managment.md │ │ │ ├── transaction-memo.md │ │ │ └── transfer-sol.md │ │ ├── transactions.md │ │ └── web3js-differences-and-adapters.md │ └── understanding-programs.md ├── shared │ ├── sections.js │ ├── useAccentClass.js │ ├── useLightense.js │ └── usePage.js └── styles │ ├── accent.css │ ├── docsearch.css │ ├── extra.css │ ├── fonts.css │ ├── prism.css │ ├── react-flow.css │ ├── scrollbar.css │ ├── tailwind.css │ └── totem.css └── tailwind.config.js /.env.example: -------------------------------------------------------------------------------- 1 | NEXT_PUBLIC_DOCSEARCH_APP_ID=R2IYF7ETH7 2 | NEXT_PUBLIC_DOCSEARCH_API_KEY=599cec31baffa4868cae4e79f180729b 3 | NEXT_PUBLIC_DOCSEARCH_INDEX_NAME=docsearch 4 | NEXT_PUBLIC_HOTJAR_ID=3793483 5 | NEXT_PUBLIC_HOTJAR_VERSION=6 -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.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 | .pnpm-debug.log* 27 | 28 | # local env files 29 | .env*.local 30 | .env 31 | 32 | # vercel 33 | .vercel 34 | 35 | .vscode/settings.json 36 | 37 | -------------------------------------------------------------------------------- /.vscode/ltex.dictionary.en-US.txt: -------------------------------------------------------------------------------- 1 | Umi 2 | Solana 3 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "Arweave", 4 | "bincode", 5 | "blockhash", 6 | "Blocktime", 7 | "Bundlr", 8 | "callout", 9 | "composability", 10 | "Datas", 11 | "Devnet", 12 | "disciminant", 13 | "eddsa", 14 | "gamification", 15 | "hashlist", 16 | "Hookable", 17 | "Irys", 18 | "Keypair", 19 | "Kinobi", 20 | "lamports", 21 | "Localnet", 22 | "Memecoin", 23 | "memecoins", 24 | "Merkle", 25 | "metadata", 26 | "metaplex", 27 | "Meteora", 28 | "mintable", 29 | "MPLX", 30 | "msgpack", 31 | "nonblocking", 32 | "offchain", 33 | "pdas", 34 | "performantly", 35 | "Preconfigured", 36 | "println", 37 | "Pubkey", 38 | "publickey", 39 | "Raydium", 40 | "rpcs", 41 | "seperator", 42 | "serde", 43 | "Shdw", 44 | "Solana", 45 | "Solflare", 46 | "Solscan", 47 | "SPACEBAR", 48 | "Struct", 49 | "unverify", 50 | "usize" 51 | ], 52 | "editor.codeActionsOnSave": { 53 | "source.sortImports": "explicit" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Metaplex Developer Hub 2 | 3 | ## Getting started 4 | 5 | To get started with this app, first install the npm dependencies: 6 | 7 | ```bash 8 | pnpm install 9 | cp .env.example .env.local 10 | ``` 11 | 12 | Next, run the development server: 13 | 14 | ```bash 15 | pnpm run dev 16 | ``` 17 | 18 | Finally, open [http://localhost:3000](http://localhost:3000) in your browser to view the website. 19 | 20 | ## Customizing 21 | 22 | You can start editing the app by modifying the files in the `/src` folder. The site will auto-update as you edit these files. 23 | 24 | ## Global search 25 | 26 | By default this template uses [Algolia DocSearch](https://docsearch.algolia.com) for the global search. DocSearch is free for open-source projects, and you can sign up for an account on their website. Once your DocSearch account is ready, update the following [environment variables](https://nextjs.org/docs/basic-features/environment-variables) in your project with the values provided by Algolia: 27 | 28 | ``` 29 | NEXT_PUBLIC_DOCSEARCH_APP_ID= 30 | NEXT_PUBLIC_DOCSEARCH_API_KEY= 31 | NEXT_PUBLIC_DOCSEARCH_INDEX_NAME= 32 | ``` 33 | ## Note 34 | 35 | This repo is made available pursuant to the Tailwind UI License (https://tailwindui.com/license). Please carefully review the terms of the Tailwind UI License if you are considering forking this repo. 36 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "@/*": ["src/*"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /markdoc/nodes.js: -------------------------------------------------------------------------------- 1 | import { nodes as defaultNodes } from '@markdoc/markdoc' 2 | 3 | import { Fence } from '@/components/Fence' 4 | 5 | const nodes = { 6 | document: { 7 | render: undefined, 8 | }, 9 | table: { 10 | ...defaultNodes.table, 11 | render: (props) => { 12 | const Table = defaultNodes.table.render 13 | return ( 14 |
15 | 16 | 17 | ) 18 | }, 19 | }, 20 | th: { 21 | ...defaultNodes.th, 22 | attributes: { 23 | ...defaultNodes.th.attributes, 24 | scope: { 25 | type: String, 26 | default: 'col', 27 | }, 28 | }, 29 | }, 30 | fence: { 31 | render: Fence, 32 | attributes: { 33 | language: { 34 | type: String, 35 | }, 36 | }, 37 | }, 38 | } 39 | 40 | export default nodes 41 | -------------------------------------------------------------------------------- /markdoc/partials/token-standard-full.md: -------------------------------------------------------------------------------- 1 | {% table %} 2 | 3 | - Field 4 | - Type 5 | - Description 6 | 7 | --- 8 | 9 | - **name** 10 | - string 11 | - Name of the asset. 12 | 13 | --- 14 | 15 | 20 | 21 | - **description** 22 | - string 23 | - Description of the asset. 24 | 25 | --- 26 | 27 | - **image** 28 | - string 29 | - URI pointing to the asset's logo. 30 | 31 | --- 32 | 33 | - **animation_url** 34 | - string 35 | - URI pointing to the asset's animation. 36 | 37 | --- 38 | 39 | - **external_url** 40 | - string 41 | - URI pointing to an external URL defining the asset — e.g. the game's main site. 42 | 43 | --- 44 | 45 | - **attributes** 46 | - array 47 | - Array of attributes defining the characteristics of the asset. 48 | - **trait_type** (string): The type of attribute. 49 | - **value** (string): The value for that attribute. 50 | 51 | --- 52 | 53 | - **properties** 54 | - object 55 | - Additional properties that define the asset. 56 | - **files** (array): Additional files to include with the asset. 57 | - **uri** (string): The file's URI. 58 | - **type** (string): The file's type. E.g. `image/png`, `video/mp4`, etc. 59 | - **cdn** (boolean, optional): Whether the file is served from a CDN. 60 | - **category** (string): A media category for the asset. E.g. `video`, `image`, etc. 61 | 62 | {% /table %} 63 | -------------------------------------------------------------------------------- /markdoc/partials/token-standard-short.md: -------------------------------------------------------------------------------- 1 | {% table %} 2 | 3 | - Field 4 | - Type 5 | - Description 6 | 7 | --- 8 | 9 | - **name** 10 | - string 11 | - Name of the asset. 12 | 13 | --- 14 | 15 | - **symbol** 16 | - string 17 | - Symbol of the asset. 18 | 19 | --- 20 | 21 | - **description** 22 | - string 23 | - Description of the asset. 24 | 25 | --- 26 | 27 | - **image** 28 | - string 29 | - URI pointing to the asset's logo. 30 | 31 | {% /table %} 32 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | const withMarkdoc = require('@markdoc/next.js') 2 | 3 | /** @type {import('next').NextConfig} */ 4 | const nextConfig = { 5 | reactStrictMode: true, 6 | pageExtensions: ['js', 'jsx', 'md'], 7 | experimental: { 8 | scrollRestoration: true, 9 | }, 10 | } 11 | 12 | module.exports = withMarkdoc({ 13 | tokenizerOptions: { allowComments: true }, 14 | })(nextConfig) 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tailwindui-syntax", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint", 10 | "sitemap": "node generate-sitemap.mjs" 11 | }, 12 | "browserslist": "defaults, not ie <= 11", 13 | "dependencies": { 14 | "@docsearch/react": "^3.8.0", 15 | "@headlessui/react": "2.2.0", 16 | "@heroicons/react": "^2.2.0", 17 | "@hotjar/browser": "^1.0.9", 18 | "@markdoc/markdoc": "0.3.0", 19 | "@markdoc/next.js": "0.2.3", 20 | "@sindresorhus/slugify": "^2.2.1", 21 | "@tailwindcss/typography": "^0.5.15", 22 | "autoprefixer": "^10.4.20", 23 | "clsx": "^1.2.1", 24 | "focus-visible": "^5.2.1", 25 | "html-to-image": "^1.11.11", 26 | "lightense-images": "^1.0.17", 27 | "next": "13.4.7", 28 | "postcss-focus-visible": "^6.0.4", 29 | "postcss-import": "^14.1.0", 30 | "prism-react-renderer": "^1.3.5", 31 | "prismjs": "^1.29.0", 32 | "react": "18.2.0", 33 | "react-dom": "18.2.0", 34 | "reactflow": "^11.11.4", 35 | "tailwindcss": "^3.4.16" 36 | }, 37 | "devDependencies": { 38 | "eslint": "8.26.0", 39 | "eslint-config-next": "13.0.2", 40 | "prettier": "^2.8.8", 41 | "prettier-plugin-tailwindcss": "^0.2.8", 42 | "sharp": "^0.32.6" 43 | }, 44 | "packageManager": "pnpm@9.1.4+sha512.9df9cf27c91715646c7d675d1c9c8e41f6fce88246f1318c1aa6a1ed1aeb3c4f032fcdf4ba63cc69c4fe6d634279176b5358727d8f2cc1e65b65f43ce2f8bfb0" 45 | } 46 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | 'postcss-import', 4 | 'tailwindcss/nesting', 5 | 'tailwindcss', 6 | 'autoprefixer', 7 | ] 8 | } -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | singleQuote: true, 3 | semi: false, 4 | plugins: [require('prettier-plugin-tailwindcss')], 5 | } 6 | -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/assets/banners/touch-screen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/assets/banners/touch-screen.jpg -------------------------------------------------------------------------------- /public/assets/candy-machine/candy-machine-photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/assets/candy-machine/candy-machine-photo.png -------------------------------------------------------------------------------- /public/assets/candy-machine/core-cm-v3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/assets/candy-machine/core-cm-v3.jpg -------------------------------------------------------------------------------- /public/assets/candy-machine/creator-studio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/assets/candy-machine/creator-studio.png -------------------------------------------------------------------------------- /public/assets/social/dev-hub-preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/assets/social/dev-hub-preview.jpg -------------------------------------------------------------------------------- /public/assets/token-metadata/test-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/assets/token-metadata/test-image.png -------------------------------------------------------------------------------- /public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #00aba9 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/favicon.ico -------------------------------------------------------------------------------- /public/fonts/Inter-italic.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/fonts/Inter-italic.var.woff2 -------------------------------------------------------------------------------- /public/fonts/Inter-roman.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/fonts/Inter-roman.var.woff2 -------------------------------------------------------------------------------- /public/fonts/lexend.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/fonts/lexend.woff2 -------------------------------------------------------------------------------- /public/images/hybrid-ui-template-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/images/hybrid-ui-template-image.jpg -------------------------------------------------------------------------------- /public/images/metaplex-next-js-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/images/metaplex-next-js-template.png -------------------------------------------------------------------------------- /public/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/mstile-144x144.png -------------------------------------------------------------------------------- /public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/mstile-150x150.png -------------------------------------------------------------------------------- /public/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/mstile-310x150.png -------------------------------------------------------------------------------- /public/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/mstile-310x310.png -------------------------------------------------------------------------------- /public/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metaplex-foundation/developer-hub/80ace8d9f8359296fb8ef0d0a64fd33c25db5fc5/public/mstile-70x70.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | 4 | Sitemap: https://developers.metaplex.com/sitemap.xml -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Metaplex", 3 | "short_name": "Metaplex", 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 | -------------------------------------------------------------------------------- /src/components/Button.jsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | import clsx from 'clsx' 3 | 4 | const styles = { 5 | primary: 6 | 'rounded-md bg-accent-300 py-2 px-4 text-sm font-semibold text-slate-900 hover:bg-accent-200 focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-300/50 active:bg-accent-500', 7 | secondary: 8 | 'rounded-md py-2 px-4 text-sm font-medium text-white hover:bg-slate-800 focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white/50 active:text-slate-400', 9 | } 10 | 11 | export function Button({ variant = 'primary', className, href, ...props }) { 12 | className = clsx(styles[variant], className) 13 | 14 | return href ? ( 15 | 16 | ) : ( 17 |