diff --git a/apps/dashboard/redirects.js b/apps/dashboard/redirects.js index 183b713be18..8a7bad906d0 100644 --- a/apps/dashboard/redirects.js +++ b/apps/dashboard/redirects.js @@ -284,6 +284,43 @@ function redirects() { destination: "/explore", permanent: false, }, + + // framer redirects + { + source: "/deploy", + destination: "/contracts/deployment-tool", + permanent: false, + }, + { + source: "/publish", + destination: "/contracts/deployment-tool", + permanent: false, + }, + { + source: "/smart-contracts", + destination: "/contracts/explore", + permanent: false, + }, + { + source: "/build", + destination: "/contracts/modular-contracts", + permanent: false, + }, + { + source: "/ui-components", + destination: "/sdk", + permanent: false, + }, + { + source: "/interact", + destination: "/sdk", + permanent: false, + }, + { + source: "/sponsored-transactions", + destination: "/account-abstraction", + permanent: false, + }, ]; } diff --git a/apps/dashboard/src/components/landing-pages/hero.tsx b/apps/dashboard/src/components/landing-pages/hero.tsx deleted file mode 100644 index 93fcb21dca4..00000000000 --- a/apps/dashboard/src/components/landing-pages/hero.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { Box, Container, Flex } from "@chakra-ui/react"; -import { ChakraNextImage } from "components/Image"; -import type { StaticImageData } from "next/image"; -import { Heading, Text } from "tw-components"; -import { LandingCTAButtons } from "./cta-buttons"; -import { LandingDesktopMobileImage } from "./desktop-mobile-image"; - -interface LandingHeroProps { - title: string; - titleWithGradient: string; - subtitle: string; - inPartnershipWith?: StaticImageData; - trackingCategory: string; - ctaText?: string; - ctaLink?: string; - gradient: string; - image?: StaticImageData; - mobileImage?: StaticImageData; - noCta?: boolean; - contactUsTitle?: string; - contactUsLink?: string; -} - -export const LandingHero: React.FC = ({ - title, - titleWithGradient, - subtitle, - inPartnershipWith, - trackingCategory, - ctaText, - ctaLink, - gradient, - image, - mobileImage, - noCta, - contactUsTitle, - contactUsLink, -}) => { - return ( - - - - - {inPartnershipWith && ( - - - In partnership with - - - - )} - - {title}{" "} - - {titleWithGradient} - - - - - {subtitle} - - - - - - - ); -}; diff --git a/apps/dashboard/src/components/landing-pages/option-selector.tsx b/apps/dashboard/src/components/landing-pages/option-selector.tsx deleted file mode 100644 index 9188bbd3a73..00000000000 --- a/apps/dashboard/src/components/landing-pages/option-selector.tsx +++ /dev/null @@ -1,175 +0,0 @@ -import { Flex, GridItem, SimpleGrid } from "@chakra-ui/react"; -import { ChakraNextImage } from "components/Image"; -import { - PRODUCTS, - type ProductLabel, -} from "components/product-pages/common/nav/data"; -import { useTrack } from "hooks/analytics/useTrack"; -import type { StaticImageData } from "next/image"; -import { useState } from "react"; -import { Card, Heading, Link, Text } from "tw-components"; -import { LandingDesktopMobileImage } from "./desktop-mobile-image"; -import { LandingSectionHeading } from "./section-heading"; -import type { LandingSectionHeadingProps } from "./types"; - -interface OptionItem { - title: string; - description: string; - products?: ProductLabel[]; - steps: string[]; - image?: StaticImageData; - mobileImage?: StaticImageData; -} - -interface LandingOptionSelectorProps extends LandingSectionHeadingProps { - items: OptionItem[]; - TRACKING_CATEGORY: string; -} - -export const LandingOptionSelector: React.FC = ({ - items, - title, - TRACKING_CATEGORY, - blackToWhiteTitle, -}) => { - const firstItem = items[0]; - - const [selectedItemTitle, setSelectedItemTitle] = useState(firstItem?.title); - const trackEvent = useTrack(); - - if (!firstItem) { - return null; - } - - const selectedItem = - items.find((item) => item.title === selectedItemTitle) || firstItem; - - return ( - - - - {items.map((item) => ( - { - trackEvent({ - category: TRACKING_CATEGORY, - action: "select", - label: item.title, - }); - setSelectedItemTitle(item.title); - }} - py={1} - px={3} - cursor="pointer" - transition="border-color 200ms ease, box-shadow 200ms ease, transform 200ms ease" - _hover={{ - borderColor: "blue.500", - boxShadow: "0 0 16px hsl(215deg 100% 60% / 30%)", - transform: "scale(1.01)", - }} - borderColor={ - item.title === selectedItem.title ? "blue.500" : "inherit" - } - > - {item.title} - - ))} - - - - - - {selectedItem.title} - - {selectedItem.description} - {selectedItem.products && ( - - - PRODUCTS - - - {selectedItem.products.map((product) => { - const prd = PRODUCTS.find((p) => p.label === product) || { - name: "", - description: "", - link: "", - icon: "", - }; - return ( - - - {prd?.icon && ( - - )} - - {prd.name} - - - - ); - })} - - - )} - - - - - {selectedItem?.image && ( - - )} - - {selectedItem.steps.map((step, idx) => ( - - - - {idx + 1} - - - {step} - - ))} - - - - - - ); -}; diff --git a/apps/dashboard/src/components/product-pages/common/SolutionsTextImage.tsx b/apps/dashboard/src/components/product-pages/common/SolutionsTextImage.tsx deleted file mode 100644 index 9e3b8928bb5..00000000000 --- a/apps/dashboard/src/components/product-pages/common/SolutionsTextImage.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { ChakraNextImage } from "components/Image"; -import { Heading } from "tw-components"; -import type { ComponentWithChildren } from "types/component-with-children"; -import { ProductSection } from "./ProductSection"; - -interface SolutionsTextImageProps { - image: string; - title: string; -} - -export const SolutionsTextImage: ComponentWithChildren< - SolutionsTextImageProps -> = ({ image, title, children }) => { - return ( - -
- - -
- - {title} - - {children} -
-
-
- ); -}; diff --git a/apps/dashboard/src/components/product-pages/common/nav/data.ts b/apps/dashboard/src/components/product-pages/common/nav/data.ts index c8eb8a7a509..0c378607442 100644 --- a/apps/dashboard/src/components/product-pages/common/nav/data.ts +++ b/apps/dashboard/src/components/product-pages/common/nav/data.ts @@ -78,16 +78,6 @@ export const PRODUCTS: SectionItemProps[] = [ section: "contracts", inLandingPage: true, }, - { - name: "Interact", - label: "interact", - description: "Integrate smart contract interactions directly into your app", - link: "/interact", - dashboardLink: "https://portal.thirdweb.com/contracts/interact/overview", - icon: require("../../../../../public/assets/product-icons/interact.png"), - section: "contracts", - inLandingPage: true, - }, { name: "Explore", label: "explore", @@ -171,14 +161,6 @@ export const PRODUCTS: SectionItemProps[] = [ icon: require("../../../../../public/assets/product-icons/rpc-edge.png"), section: "infrastructure", }, - { - name: "Sponsored Transactions", - label: "sponsored-transactions", - description: "Remove all user friction with invisible transactions", - link: "/sponsored-transactions", - icon: require("../../../../../public/assets/product-icons/sponsored-transactions.png"), - section: "payments", - }, { name: "Engine", label: "engine", @@ -191,9 +173,6 @@ export const PRODUCTS: SectionItemProps[] = [ }, ]; -const PRODUCT_LABELS = PRODUCTS.map((product) => product.label); -export type ProductLabel = (typeof PRODUCT_LABELS)[number]; - export const SOLUTIONS: SectionItemProps[] = [ { name: "Gaming", @@ -211,14 +190,6 @@ export const SOLUTIONS: SectionItemProps[] = [ icon: require("../../../../../public/assets/solutions-icons/chains.svg"), section: "solutions", }, - { - name: "Minting", - label: "minting", - description: "Build and mint NFTs at scale easily", - link: "/solutions/minting", - icon: require("../../../../../public/assets/solutions-icons/minting.svg"), - section: "solutions", - }, ]; export const COMPANY: SectionItemProps[] = [ diff --git a/apps/dashboard/src/components/video-embed/YoutubeEmbed.tsx b/apps/dashboard/src/components/video-embed/YoutubeEmbed.tsx deleted file mode 100644 index e7535ae5d1a..00000000000 --- a/apps/dashboard/src/components/video-embed/YoutubeEmbed.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { Box } from "@chakra-ui/react"; - -interface YoutubeEmbedProps { - maxWidth: number; - aspectRatio: number; - videoId: string; - title: string; -} - -export const YoutubeEmbed: React.FC = (props) => { - return ( - - ); -}; diff --git a/apps/dashboard/src/page-id.ts b/apps/dashboard/src/page-id.ts index 33fcaf68b84..ca9025ca052 100644 --- a/apps/dashboard/src/page-id.ts +++ b/apps/dashboard/src/page-id.ts @@ -36,12 +36,6 @@ export enum PageId { // thirdweb.com/account-abstraction SmartWalletLanding = "smart-wallet-landing", - // thirdweb.com/build - BuildLanding = "build-landing", - - // thirdweb.com/explore - ExploreLanding = "explore-landing", - // thirdweb.com/embedded-wallets EmbeddedWalletsLanding = "embedded-wallets-landing", @@ -51,30 +45,15 @@ export enum PageId { // thirdweb.com/interact InteractLanding = "interact-landing", - // thirdweb.com/sponsored-transactions - SponsoredTransactionsLanding = "sponsored-transactions-landing", - // thirdweb.com/auth AuthLanding = "auth-landing", - // thirdweb.com/publish - PublishLanding = "publish-landing", - - // thirdweb.com/deploy - DeployLanding = "deploy-landing", - // thirdweb.com/rpc-edge RPCEdgeLanding = "rpc-edge-landing", - // thirdweb.com/web3-dashboard - DashboardLanding = "dashboard-landing", - // thirdweb.com/cointracts ContractsLanding = "contracts-landing", - // thirdweb.com/ui-components - UIComponentsLanding = "ui-components-landing", - // thirdweb.com/hackathon/earn HackathonEarnLanding = "earn-thirdweb-hacakthon", // thirdweb.com/grant/superchain @@ -137,12 +116,7 @@ export enum PageId { // --------------------------------------------------------------------------- // solutions pages // --------------------------------------------------------------------------- - SolutionsCommerce = "solutions-commerce", - SolutionsGaming = "solutions-gaming", - SolutionsMinting = "solutions-minting", - SolutionsMarketplace = "solutions-marketplace", SolutionsChains = "solutions-chains", - SolutionsWeb2Onboarding = "solutions-web2-onboarding", // --------------------------------------------------------------------------- // "publish" product pages @@ -166,7 +140,6 @@ export enum PageId { // --------------------------------------------------------------------------- // community pages // --------------------------------------------------------------------------- - Learn = "learn", Ambassadors = "ambassadors", Community = "community", StartupProgram = "startup-program", diff --git a/apps/dashboard/src/pages/build.tsx b/apps/dashboard/src/pages/build.tsx deleted file mode 100644 index 91d76b1609d..00000000000 --- a/apps/dashboard/src/pages/build.tsx +++ /dev/null @@ -1,256 +0,0 @@ -import { Container, Flex } from "@chakra-ui/react"; -import { LandingEndCTA } from "components/landing-pages/end-cta"; -import { LandingGridSection } from "components/landing-pages/grid-section"; -import { LandingGuidesShowcase } from "components/landing-pages/guide-showcase"; -import { LandingHeroWithSideImage } from "components/landing-pages/hero-with-side-image"; -import { LandingIconSectionItem } from "components/landing-pages/icon-section-item"; -import { LandingLayout } from "components/landing-pages/layout"; -import { LandingSectionHeading } from "components/landing-pages/section-heading"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Card, TrackedLink } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "build-landing"; - -const GUIDES = [ - { - title: "Build An ERC721A NFT Collection using Solidity", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/08/thumbnail-19.png", - link: "https://blog.thirdweb.com/guides/get-started-with-the-contracts-sdk/", - }, - { - title: "Create A Generative Art NFT Collection Using Solidity & JavaScript", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/03/Create-A-Generative-Art-NFT-Collection-with-Solidity-and-JavaScript-2.png", - link: "https://blog.thirdweb.com/guides/create-a-generative-art-nft-collection-using-solidity-javascript/", - }, - { - title: "Build a Blockchain Game using our Solidity SDK", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/03/Build-a-Blockchain-Game-using-ContractKit.png", - link: "https://blog.thirdweb.com/guides/build-a-blockchain-game-using-contractkit/", - }, -]; - -const CASE_STUDIES = [ - { - title: "Layer 3", - description: - "Rewarded millions of users with NFTs for participating in crypto, powered by thirdweb's NFT smart contracts.", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/12/Layer3--2-.png", - link: "https://blog.thirdweb.com/case-studies/layer3-powers-web3-adoption-through-gamified-experiences-nft-rewards/", - }, - { - title: "EVEN", - description: - 'Built a custom smart contract solution to enable innovative "pay what you want" NFTs. ', - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/12/EVEN-Empowers-Fans-to-Support-their-Favorite-Music-Artists-through-NFTs.png", - link: "https://blog.thirdweb.com/case-studies/even-empowers-fans-to-support-their-favorite-music-artists-through-nfts/", - }, - { - title: "Dreamworks", - description: - "Released playable digital collectibles for one of their world's most beloved movie franchises.", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/10/DreamWorks-Launches-NFT-Avatars-with-Gala-s-VOX---thirdweb-Case-Study-2.png", - link: "https://blog.thirdweb.com/case-studies/dreamworks-launches-nft-avatars-for-web3-games-with-gala-and-the-sims-creators-voxverse/", - }, -]; - -const BuildLanding: ThirdwebNextPage = () => { - return ( - - - - - - - - - Keep your user's accounts and funds secure with audited and - battle-tested contracts. Every pre-built contract has undergone - a full audit by our security partners,{" "} - - 0xMacro - - . - - } - /> - - - - - - - - - - - - - - - } - > - - - Launch collections of NFTs that bring you closer to your - audiences & grow your brand's digital presence. Create - custom mint experiences for any customer with allowlists, - dynamic pricing, delayed artwork reveal, and more custom - features. ( - - NFT Contracts - - ). - - } - /> - - - - Build your own fully-customizable marketplace — where you can - sell directly to your audiences, create auctions that users - can bid on, and enable anyone to trade digital assets. ( - - Marketplace Contracts - - ). - - } - /> - - - - - - - - - - - - - - ); -}; - -BuildLanding.pageId = PageId.BuildLanding; - -export default BuildLanding; diff --git a/apps/dashboard/src/pages/dashboards.tsx b/apps/dashboard/src/pages/dashboards.tsx deleted file mode 100644 index d0ca36d420c..00000000000 --- a/apps/dashboard/src/pages/dashboards.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import { Flex, SimpleGrid } from "@chakra-ui/react"; -import { Hero } from "components/product-pages/common/Hero"; -import { ProductCard } from "components/product-pages/common/ProductCard"; -import { ProductPage } from "components/product-pages/common/ProductPage"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Heading } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; -import { GuidesShowcase } from "../components/product-pages/common/GuideShowcase"; -import { ProductSection } from "../components/product-pages/common/ProductSection"; -import { YoutubeEmbed } from "../components/video-embed/YoutubeEmbed"; - -const GUIDES = [ - { - title: "How to verify a Custom Contract on Etherscan using the dashboard", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/12/verification.png", - link: "https://blog.thirdweb.com/guides/how-to-verify-a-custom-contract-on-etherscan/", - }, - { - title: "How to Add Permissions to Your Smart Contract in Solidity", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/10/This-is-the-one--13-.png", - link: "https://blog.thirdweb.com/guides/how-to-add-permissions-to-your-smart-contract-contractkit/", - }, -]; - -const TRACKING_CATEGORY = "dashboards"; - -const Dashboard: ThirdwebNextPage = () => { - return ( - - - - - Get fast insights into your contract activity. Unlock features in - Dashboard for each extension implemented in your contract. (e.g. - view all NFTs that have been minted so far) - - - Fine-tune contract behavior with quick access to contract - configurations (e.g. royalty, primary sale fee, etc.) - - - Share contract management access with your team members. Control - team access to contracts with permissions. Safe is supported. - - - - - - Build contracts for your web3 apps and games - - - - - - {/* Guides */} - - - - ); -}; - -Dashboard.pageId = PageId.DashboardLanding; - -export default Dashboard; diff --git a/apps/dashboard/src/pages/deploy.tsx b/apps/dashboard/src/pages/deploy.tsx deleted file mode 100644 index 6d3d32855ae..00000000000 --- a/apps/dashboard/src/pages/deploy.tsx +++ /dev/null @@ -1,217 +0,0 @@ -import { Container, Flex } from "@chakra-ui/react"; -import { LandingEndCTA } from "components/landing-pages/end-cta"; -import { LandingGridSection } from "components/landing-pages/grid-section"; -import { LandingGuidesShowcase } from "components/landing-pages/guide-showcase"; -import { LandingHeroWithSideImage } from "components/landing-pages/hero-with-side-image"; -import { LandingIconSectionItem } from "components/landing-pages/icon-section-item"; -import { LandingLayout } from "components/landing-pages/layout"; -import { LandingSectionHeading } from "components/landing-pages/section-heading"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Card } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "deploy-landing"; - -const GUIDES = [ - { - title: "How to Deploy Any Smart Contract Using the thirdweb CLI", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/10/This-is-the-one-10.png", - link: "https://blog.thirdweb.com/guides/how-to-deploy-any-smart-contract-using-thirdweb-cli/", - }, - { - title: "How to deploy an NFT Marketplace", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/09/How-to-Create-an-NFT-Marketplace---Step-by-Step-Tutorial-Guide.png", - link: "https://blog.thirdweb.com/guides/how-to-create-an-nft-marketplace/", - }, - { - title: "How to build a Token Bound Account (ERC 6551)", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/06/How-to-Create-Token-Bound-Accounts--ERC-6551-.png", - link: "https://blog.thirdweb.com/guides/create-token-bound-accounts-erc6551/", - }, -]; - -const CASE_STUDIES = [ - { - title: - "Base Launches its First Builder Quest & Brings New Developers Onchain", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/05/Base-Launches-its-First-Builder-Quest-and-Brings-New-Developers-Onchain---thirdweb-Case-Study-1.png", - link: "https://blog.thirdweb.com/case-studies/base-builder-quest-brings-developers-onchain/", - }, - { - title: "Pixels Builds an On-Chain Ecosystem for its Open-World Web3 Game", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/04/Pixels-Builds-an-Onchain-Ecosystem-for-its-Web3-Game-thirdweb-Case-Study.png", - link: "https://blog.thirdweb.com/case-studies/pixels-builds-an-onchain-ecosystem-for-its-web3-game/", - }, - { - title: - "Layer3 Powers Web3 Adoption through Gamified Experiences & NFT Rewards", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/12/Layer3--2-.png", - link: "https://blog.thirdweb.com/case-studies/layer3-powers-web3-adoption-through-gamified-experiences-nft-rewards/", - }, -]; - -const DeployLanding: ThirdwebNextPage = () => { - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - } - desktopColumns={4} - > - - - - - - - - - - - - - - - - - - - - - - ); -}; - -DeployLanding.pageId = PageId.DeployLanding; - -export default DeployLanding; diff --git a/apps/dashboard/src/pages/interact.tsx b/apps/dashboard/src/pages/interact.tsx deleted file mode 100644 index 71ddfccea0c..00000000000 --- a/apps/dashboard/src/pages/interact.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import { Container, Flex } from "@chakra-ui/react"; -import { LandingEndCTA } from "components/landing-pages/end-cta"; -import { LandingGridSection } from "components/landing-pages/grid-section"; -import { LandingGuidesShowcase } from "components/landing-pages/guide-showcase"; -import { LandingHeroWithSideImage } from "components/landing-pages/hero-with-side-image"; -import { LandingIconSectionItem } from "components/landing-pages/icon-section-item"; -import { LandingLayout } from "components/landing-pages/layout"; -import { LandingSectionHeading } from "components/landing-pages/section-heading"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Card } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "interact-landing"; - -const CASE_STUDIES = [ - { - title: - "Base Launches its First Builder Quest & Brings New Developers Onchain", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/05/Base-Launches-its-First-Builder-Quest-and-Brings-New-Developers-Onchain---thirdweb-Case-Study-1.png", - link: "https://blog.thirdweb.com/case-studies/base-builder-quest-brings-developers-onchain/", - }, - { - title: - "Mirror Empowers Creators to Build Engaged Audiences with Subscriber NFTs", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/02/Mirror-case-study.png", - link: "https://blog.thirdweb.com/case-studies/mirror-creators-build-loyal-audiences-with-subscriber-nfts/", - }, - { - title: - "Layer3 Powers Web3 Adoption through Gamified Experiences & NFT Rewards", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/12/Layer3--2-.png", - link: "https://blog.thirdweb.com/case-studies/layer3-powers-web3-adoption-through-gamified-experiences-nft-rewards/", - }, -]; - -const InteractLanding: ThirdwebNextPage = () => { - return ( - - - - - - - - - - - - - - - - - - - - - - - } - > - - - - - - - - - - - - - - - - - ); -}; - -InteractLanding.pageId = PageId.InteractLanding; - -export default InteractLanding; diff --git a/apps/dashboard/src/pages/learn/index.tsx b/apps/dashboard/src/pages/learn/index.tsx deleted file mode 100644 index e60fedfa165..00000000000 --- a/apps/dashboard/src/pages/learn/index.tsx +++ /dev/null @@ -1,250 +0,0 @@ -import { useForceDarkTheme } from "@/components/theme-provider"; -import { Box, Flex, LightMode, SimpleGrid } from "@chakra-ui/react"; -import { ChakraNextImage } from "components/Image"; -import { HomepageFooter } from "components/footer/Footer"; -import { NewsletterSection } from "components/homepage/sections/NewsletterSection"; -import { Hero } from "components/product-pages/common/Hero"; -import { ProductCard } from "components/product-pages/common/ProductCard"; -import { ProductSection } from "components/product-pages/common/ProductSection"; -import { HomepageTopNav } from "components/product-pages/common/Topnav"; -import { HomepageSection } from "components/product-pages/homepage/HomepageSection"; -import { useTrack } from "hooks/analytics/useTrack"; -import { ZapIcon } from "lucide-react"; -import { NextSeo } from "next-seo"; -import { PageId } from "page-id"; -import { Heading, LinkButton } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; -import WhiteLogo from "../../../public/assets/landingpage/white-logo.png"; -import HeroImage from "../../../public/assets/learn/hero.png"; - -const TRACKING_CATEGORY = "learn"; - -const SEO = { - title: "Learn Web3 Development | Web3 Course", - description: - "Learn everything you need to know about web3 development — whether you're a beginner or a full-stack developer. Get started with thirdweb.", -}; - -const Learn: ThirdwebNextPage = () => { - const trackEvent = useTrack(); - useForceDarkTheme(); - - return ( - <> - - - - {/* pull it up by as much as the topnav is tall */} - - - Accelerate your journey to become a web3 developer with our - expert-led program. -
-
- Join the waitlist now! We are working on tailoring the - experience best for you. - - } - trackingCategory={TRACKING_CATEGORY} - buttonText="Join waitlist" - type="Learn" - buttonLink="https://forms.gle/7WfLNoFJ7dp67HeKA" - gradient="linear-gradient(145.96deg, rgb(142 14 255) 5.07%, #16bdf0 100%)" - image={HeroImage} - /> - - - Program Benefits - - - - - Our program will help you enhance your technical skills and - knowledge, enabling you to excel in web3 development and become - a master in the field. - - - Connect with a network of web3 developers and content matter - experts through our program. Build lasting relationships and - gain valuable insights to help you grow your career in web3. - - - Get access to valuable resources to help you find your next job - or start your own web3 company. - - - Learn essential web3 concepts and gain in-depth knowledge of the - thirdweb SDK that empowers you to build secure decentralized - applications. - - - Learn from industry-leading web3 developers who bring real-world - experience and insights into the classroom. - - - Choose from a range of program formats, including self-paced - courses, virtual workshops, or live bootcamps, to suit your - goals. - - - - - - Pick a Path - - - - - Learn how to create, manage, and integrate NFTs and other - digital assets into dApps and platforms using thirdweb - technologies. - - - For both front and back-end engineers to learn how to build - secure and scalable dApps using the thirdweb SDK and relevant - programming languages. - - - Gain expertise in developing web3 services by reviewing common - server-side workflows as well as creating and integrating smart - contracts using thirdweb's Solidity SDK. - - - - - - - - -
-
- - - -
-
- - Ready to learn more? - - - - } - color="black" - px={20} - py={{ base: 5, md: 7 }} - onClick={() => - trackEvent({ - category: "cta-button", - action: "click", - label: "start", - title: "Join the waitlist", - }) - } - textAlign="center" - variant="gradient" - fromcolor="#1D64EF" - tocolor="#E0507A" - size="lg" - borderRadius="md" - href="https://forms.gle/7WfLNoFJ7dp67HeKA" - > - - Join waitlist - - - -
-
- - -
- - ); -}; - -Learn.pageId = PageId.Learn; - -export default Learn; diff --git a/apps/dashboard/src/pages/publish.tsx b/apps/dashboard/src/pages/publish.tsx deleted file mode 100644 index dfecbde2a90..00000000000 --- a/apps/dashboard/src/pages/publish.tsx +++ /dev/null @@ -1,158 +0,0 @@ -import { Container, Flex } from "@chakra-ui/react"; -import { LandingEndCTA } from "components/landing-pages/end-cta"; -import { LandingGridSection } from "components/landing-pages/grid-section"; -import { LandingGuidesShowcase } from "components/landing-pages/guide-showcase"; -import { LandingHeroWithSideImage } from "components/landing-pages/hero-with-side-image"; -import { LandingIconSectionItem } from "components/landing-pages/icon-section-item"; -import { LandingLayout } from "components/landing-pages/layout"; -import { LandingSectionHeading } from "components/landing-pages/section-heading"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Card } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "publish-landing"; - -const GUIDES = [ - { - title: "Introducing thirdweb Publish", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/02/publish-ogimage.png", - link: "https://blog.thirdweb.com/thirdweb-release/", - }, - { - title: "Share your smart contracts with thirdweb Publish", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/03/Publish-your-smart-contracts-to-all-of-web3-2.png", - link: "https://blog.thirdweb.com/guides/register-your-contract-using-thirdweb-release/", - }, -]; - -const PublishLanding: ThirdwebNextPage = () => { - return ( - - - - - - - - - - - - - - - - - - - - - - - } - desktopColumns={2} - > - - - - - - - - - - - - - - ); -}; - -PublishLanding.pageId = PageId.PublishLanding; - -export default PublishLanding; diff --git a/apps/dashboard/src/pages/smart-contracts.tsx b/apps/dashboard/src/pages/smart-contracts.tsx deleted file mode 100644 index aaec0455fb2..00000000000 --- a/apps/dashboard/src/pages/smart-contracts.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import { Container, Flex } from "@chakra-ui/react"; -import { LandingEndCTA } from "components/landing-pages/end-cta"; -import { LandingGridSection } from "components/landing-pages/grid-section"; -import { LandingGuidesShowcase } from "components/landing-pages/guide-showcase"; -import { LandingHeroWithSideImage } from "components/landing-pages/hero-with-side-image"; -import { LandingIconSectionItem } from "components/landing-pages/icon-section-item"; -import { LandingLayout } from "components/landing-pages/layout"; -import { LandingSectionHeading } from "components/landing-pages/section-heading"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Card } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "explore-landing"; - -const GUIDES = [ - { - title: "Build a Web3 Customer Loyalty Program (Loyalty Card)", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/09/Build-a-Loyalty-Program-using-the-Loyalty-Card-Contract--1-.png", - link: "https://blog.thirdweb.com/guides/loyalty-card-contract/", - }, - { - title: "Build an NFT Subscription App (Unlock Protocol Membership)", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/03/Create-a-subscription-using-Unlock-2.png", - link: "https://blog.thirdweb.com/guides/build-a-subscription-with-unlock/", - }, - { - title: "Build a Gas-Optimized NFT Drop (ERC721A)", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/08/thumbnail-19.png", - link: "https://blog.thirdweb.com/guides/get-started-with-the-contracts-sdk/", - }, -]; - -const ExploreLanding: ThirdwebNextPage = () => { - return ( - - - - - - - - - - - - - - - - - - - - - - - } - > - - - - - - - - - - - - - - - - - ); -}; - -ExploreLanding.pageId = PageId.ExploreLanding; - -export default ExploreLanding; diff --git a/apps/dashboard/src/pages/solutions/commerce.tsx b/apps/dashboard/src/pages/solutions/commerce.tsx deleted file mode 100644 index 8f3a6395000..00000000000 --- a/apps/dashboard/src/pages/solutions/commerce.tsx +++ /dev/null @@ -1,284 +0,0 @@ -import { Box, Flex, SimpleGrid } from "@chakra-ui/react"; -import { ChakraNextImage } from "components/Image"; -import { GuidesShowcase } from "components/product-pages/common/GuideShowcase"; -import { Hero } from "components/product-pages/common/Hero"; -import { ProductCard } from "components/product-pages/common/ProductCard"; -import { ProductLearnMoreCard } from "components/product-pages/common/ProductLearnMoreCard"; -import { ProductPage } from "components/product-pages/common/ProductPage"; -import { ProductSection } from "components/product-pages/common/ProductSection"; -import { SolutionsTextImage } from "components/product-pages/common/SolutionsTextImage"; -import { PageId } from "page-id"; -import { Heading, Link, Text, TrackedLink } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "commerce_kit"; - -const SHOPIFY_GUIDES = [ - { - title: "Create a Shopify theme with thirdweb", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/02/This-is-the-one--1-.png", - link: "https://blog.thirdweb.com/guides/create-a-shopify-theme-with-thirdweb/", - }, - { - title: "How to Create a Token Gated Website on Shopify using thirdweb", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/11/create-token-gated-website-with-shopify-storefront-and-thirdweb.png", - link: "https://blog.thirdweb.com/guides/token-nft-gated-shopify-website-thirdweb/", - }, - { - title: "Distribute NFTs on a Shopify Store", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/10/This-is-the-one--11-.png", - link: "https://blog.thirdweb.com/guides/shopify-selling-an-nft-as-a-digital-asset-on-shopify-store/", - }, -]; - -const Commerce: ThirdwebNextPage = () => { - return ( - - - - In partnership with - - - - - - } - secondaryButton={{ - text: "Get In Touch", - link: "/contact-us", - }} - > - - - Distribute NFTs to your most loyal customers and create new customer - segments for future campaigns. - - - Reward your customers and collab with other brands by tokengating - your storefront. Give token holders exclusive access to products, - discounts, and more when they connect their wallet to your store. - - - Create additional revenue streams with NFT sales. Sell NFTs directly - through your storefront as a new product category or bundle with a - physical product. - - - - - - - - - - - - - - - - - - Build web3 commerce apps with CommerceKit across multiple use cases - - - - - Distribute membership passes with contracts from{" "} - - Explore - {" "} - or using{" "} - - Solidity SDK - - . Reward your customers at different stages of their journey, - from initial free “drops” to claiming rewards at checkout. - - - - - Merchants can sell digital collectibles direct from e-commerce - store and collect royalties from secondary sales. (e.g. - One-of-One’s, Open Editions, Trading packs) - - - - - Sell digital tickets with exclusive access to online and offline - events. Enable customers to redeem virtual items for real world - items. - - - - - Authenticate web3 users using{" "} - - Auth - - . Merge data into existing CRM data stores. Get metrics and - analytics around transactions and owners of digital assets and - collections. - - - - - - - - - - - - "On platforms like Shopify, thirdweb has made building web3 - e-commerce features and apps extremely simple and quick. We can - now worry less about the development nuances of web3 and focus - more on what merchants/users want and find valuable." - -
-
- Zain,{" "} - - Lazer Technologies - - . -
-
-
- -
- ); -}; - -Commerce.pageId = PageId.SolutionsCommerce; - -export default Commerce; diff --git a/apps/dashboard/src/pages/solutions/loyalty.tsx b/apps/dashboard/src/pages/solutions/loyalty.tsx deleted file mode 100644 index 61585d4063b..00000000000 --- a/apps/dashboard/src/pages/solutions/loyalty.tsx +++ /dev/null @@ -1,317 +0,0 @@ -import { Container, Flex } from "@chakra-ui/react"; -import { LandingEndCTA } from "components/landing-pages/end-cta"; -import { LandingGridSection } from "components/landing-pages/grid-section"; -import { LandingGuidesShowcase } from "components/landing-pages/guide-showcase"; -import { LandingHero } from "components/landing-pages/hero"; -import { LandingIconSectionItem } from "components/landing-pages/icon-section-item"; -import { LandingLayout } from "components/landing-pages/layout"; -import { LandingOptionSelector } from "components/landing-pages/option-selector"; -import { LandingShowcaseImage } from "components/landing-pages/showcase-image"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "loyalty"; - -const CASE_STUDIES = [ - { - title: - "EVEN Empowers Fans to Support Their Favorite Music Artists — and Get Rewarded for It", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/12/EVEN-Empowers-Fans-to-Support-their-Favorite-Music-Artists-through-NFTs.png", - link: "https://blog.thirdweb.com/case-studies/even-empowers-fans-to-support-their-favorite-music-artists-through-nfts/", - }, - { - title: - "Mirror Empowers Creators to Build Engaged Audiences with Subscriber NFTs", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/02/Mirror-case-study.png", - link: "https://blog.thirdweb.com/case-studies/mirror-creators-build-loyal-audiences-with-subscriber-nfts/", - }, - { - title: - "Layer3 Powers Web3 Adoption through Gamified Experiences & NFT Rewards", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/12/Layer3--2-.png", - link: "https://blog.thirdweb.com/case-studies/layer3-powers-web3-adoption-through-gamified-experiences-nft-rewards/", - }, -]; - -const GUIDES = [ - { - title: "Build a Loyalty Program using the Loyalty Card Contract", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/09/Build-a-Loyalty-Program-using-the-Loyalty-Card-Contract--1-.png", - link: "https://blog.thirdweb.com/guides/loyalty-card-contract/", - }, - { - title: "How to accept credit card payments for your NFT drop", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/08/thumbnail-3.png", - link: "https://blog.thirdweb.com/guides/accept-credit-card-payments/", - }, - { - title: "Getting Started with Paper Wallet", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/05/How-to-Add-Paper-Wallet-to-your-Connect-Wallet-Button.png", - link: "https://blog.thirdweb.com/guides/how-to-use-paper-wallet/", - }, -]; - -const SELECTOR_ITEMS = [ - { - title: "Frictionless onboarding experience", - description: - "Get users onboarded quickly with familiar email and social log-ins— we create wallets on behalf of users. Non-custodial wallets to give users a better authentication experience with more security and privacy.", - steps: [ - "User sign-in to app with their email or social log-in", - "Wallet is created on behalf of the user abstracting away crypto entirely", - "User interacts with app seamlessly— without disruptive transaction pop-ups", - ], - products: [ - "connect", - "embedded-wallets", - "sponsored-transactions", - "smart-wallet", - ], - image: require("../../../public/assets/solutions-pages/loyalty/frictionless-onboarding-experience-desktop.png"), - mobileImage: require("../../../public/assets/solutions-pages/loyalty/frictionless-onboarding-experience-mobile.png"), - }, - { - title: "Cross-brand Collaborations", - description: - "Acquire new high-value customers through cross-brand collaborations. Tap into other brands' communities by inviting other brands’ token holders to join your brand and vice versa. Unlock the power of communities.", - steps: [ - "Brand A partners with Brand Bt", - "Brand A whitelists Brand B's loyalty token holders to airdrop them Brand A loyalty tokens (and vice versa)", - "Brand A & B acquires new customers from each other's communities", - ], - products: ["explore", "smart-wallet", "connect", "interact", "engine"], - image: require("../../../public/assets/solutions-pages/loyalty/cross-brand-activations-desktop.png"), - mobileImage: require("../../../public/assets/solutions-pages/loyalty/cross-brand-activations-mobile.png"), - }, - { - title: "Personalized loyalty programs", - description: - "Airdrop digital rewards directly to users. Give users a sense of digital ownership of your brand. Token-gate exclusive products to reward your most loyal customers.", - steps: [ - "Airdrop Loyalty NFTs to registered users", - "Reward Loyalty NFT holders with token-gated exclusive products / premium features", - "Airdrop Reward NFT which dynamically updates Loyalty Membership NFT", - ], - products: [ - "auth", - "smart-wallet", - "embedded-wallets", - "connect", - "interact", - "engine", - "storage", - "sponsored-transactions", - ], - }, - { - title: "Gamified reward-based quests", - description: - "Leverage game design elements to motivate your customers to earn their way to rewards— both online and in the physical world.", - steps: [ - "Launch gamified quests and allow users to earn their way through rewards, e.g. 100 loyalty points for in-store visit", - "Distribute Reward NFTs after users completes quests", - "Users receives Rewards NFTs in their wallet", - ], - products: [ - "auth", - "smart-wallet", - "embedded-wallets", - "connect", - "interact", - "engine", - "sponsored-transactions", - ], - }, - { - title: "Subscription membership passes", - description: - "Unlock new recurring revenue streams by offering monthly member subscription passes in exchange for special brand offers.", - steps: [ - "Create a membership program that offers special offers to monthly subscribers, e.g 10% discount code on all purchases if you have a monthly subscription pass", - "Users pay for monthly subscription pass", - "User receives on-chain discount code can be redeemed", - ], - products: ["auth", "smart-wallet", "embedded-wallets", "connect", "engine"], - }, - { - title: "Sell digital assets", - description: "Sell NFT digital assets to complement physical assets.", - steps: [ - "Developers use Interact or Engine to upload and manage NFT digital assets", - "Users interested in purchasing digital assets access the platform can use Connect for easy onboarding with just their email address", - "Users purchases NFT with credit card using Checkout", - ], - products: [ - "auth", - "smart-wallet", - "embedded-wallets", - "interact", - "engine", - "connect", - "storage", - "rpc-edge", - ], - }, - { - title: "Multi-alliance loyalty marketplaces", - description: - "Give your users more flexible and control- allow them to trade loyalty points and membership accounts on secondary marketplaces. Collect royalty fees on traded loyalty points and accounts.", - steps: [ - "Developer deploys a marketplace using the prebuilt contract found in Explore", - "Sellers use the marketplace to list their loyalty points or membership accounts, set their desired trade terms, and manage transactions", - "Buyers can smoothly complete their purchases using their credit card with Checkout", - ], - products: [ - "auth", - "explore", - "smart-wallet", - "embedded-wallets", - "interact", - "engine", - "connect", - "sponsored-transactions", - "rpc-edge", - ], - }, - { - title: "Customer Analytics", - description: - "Gather insightful data on customer behaviors— unique wallet addresses interacting with contract, user engagement with contract, and more.", - steps: [ - "Developer deploys contract from Explore", - "Onchain activity is tracked every time user interacts with contract (e.g. receives a Reward NFT everytime they spend $100)", - "Developer views Dashboard analytics per contract: Unique Wallets, Total Transactions, Total Events, and more.", - ], - products: ["interact"], - }, -]; - -const SolutionsGaming: ThirdwebNextPage = () => { - return ( - - - - - - - - - - - - - - - - - - - - - - - - - ); -}; - -SolutionsGaming.pageId = PageId.SolutionsGaming; - -export default SolutionsGaming; diff --git a/apps/dashboard/src/pages/solutions/marketplace.tsx b/apps/dashboard/src/pages/solutions/marketplace.tsx deleted file mode 100644 index b889060825c..00000000000 --- a/apps/dashboard/src/pages/solutions/marketplace.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import { Container, Flex } from "@chakra-ui/react"; -import { LandingEndCTA } from "components/landing-pages/end-cta"; -import { LandingGridSection } from "components/landing-pages/grid-section"; -import { LandingHero } from "components/landing-pages/hero"; -import { LandingIconSectionItem } from "components/landing-pages/icon-section-item"; -import { LandingLayout } from "components/landing-pages/layout"; -import { LandingOptionSelector } from "components/landing-pages/option-selector"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Card } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "marketplace-landing"; - -const SELECTOR_ITEMS = [ - { - title: "Primary sales", - description: - "Allow your users to list, buy, and sell items, e.g. digital assets or loyalty memberships.", - steps: [ - "Deploy Marketplace contract from Explore to any EVM chain (900+ supported).", - "Create an ecosystem for collectors to Configure Marketplace contract, e.g. % platform fee collected on any sale.", - "Integrate Marketplace contract into your apps and games using SDK in multiple languages.", - ], - products: ["explore", "interact"], - }, - { - title: "Secondary marketplaces", - description: - "Sell NFTs on your own marketplace with flexible listing options, e.g. fixed price, auctions, and best offer.", - steps: [ - "Deploy Marketplace contract from Explore to any EVM chain (900+ supported)", - "Configure Marketplace contract, e.g. % platform fee collected on any sale", - "Integrate Marketplace contract into your apps and games using SDK in multiple languages.", - ], - products: ["explore", "interact"], - }, -]; - -const SolutionsMarketplace: ThirdwebNextPage = () => { - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - ); -}; - -SolutionsMarketplace.pageId = PageId.SolutionsMarketplace; - -export default SolutionsMarketplace; diff --git a/apps/dashboard/src/pages/solutions/minting.tsx b/apps/dashboard/src/pages/solutions/minting.tsx deleted file mode 100644 index 2ff7f0b0cc4..00000000000 --- a/apps/dashboard/src/pages/solutions/minting.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import { Container, Flex } from "@chakra-ui/react"; -import { LandingDesktopMobileImage } from "components/landing-pages/desktop-mobile-image"; -import { LandingEndCTA } from "components/landing-pages/end-cta"; -import { LandingGridSection } from "components/landing-pages/grid-section"; -import { LandingGuidesShowcase } from "components/landing-pages/guide-showcase"; -import { LandingHero } from "components/landing-pages/hero"; -import { LandingIconSectionItem } from "components/landing-pages/icon-section-item"; -import { LandingLayout } from "components/landing-pages/layout"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Card, TrackedLink } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "minting_kit"; - -const CASE_STUDIES = [ - { - title: - "Base Launches its First Builder Quest & Brings New Developers Onchain", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/05/Base-Launches-its-First-Builder-Quest-and-Brings-New-Developers-Onchain---thirdweb-Case-Study-1.png", - link: "https://blog.thirdweb.com/case-studies/base-builder-quest-brings-developers-onchain/", - }, - { - title: - "Mirror Empowers Creators to Build Engaged Audiences with Subscriber NFTs", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/02/Mirror-case-study.png", - link: "https://blog.thirdweb.com/case-studies/mirror-creators-build-loyal-audiences-with-subscriber-nfts/", - }, - { - title: - "Layer3 Powers Web3 Adoption through Gamified Experiences & NFT Rewards", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/12/Layer3--2-.png", - link: "https://blog.thirdweb.com/case-studies/layer3-powers-web3-adoption-through-gamified-experiences-nft-rewards/", - }, -]; - -const SolutionsMinting: ThirdwebNextPage = () => { - return ( - - - - - - - - - - - - - - - A broad set of options for{" "} - - distributing NFTs - {" "} - including claimable drops, private/public sales, airdrops, - open editions, delayed reveals. - - } - /> - - - - Integrate minting into applications using a variety of web3 - API configurations including as an{" "} - - distributing NFTs - {" "} - , self-hosted via a web3 REST API or as a managed service. - - } - /> - - - - - - - - - - - - ); -}; - -SolutionsMinting.pageId = PageId.SolutionsMinting; - -export default SolutionsMinting; diff --git a/apps/dashboard/src/pages/solutions/web2-onboarding.tsx b/apps/dashboard/src/pages/solutions/web2-onboarding.tsx deleted file mode 100644 index b210d13da1a..00000000000 --- a/apps/dashboard/src/pages/solutions/web2-onboarding.tsx +++ /dev/null @@ -1,226 +0,0 @@ -import { Container, Flex } from "@chakra-ui/react"; -import { LandingEndCTA } from "components/landing-pages/end-cta"; -import { LandingGridSection } from "components/landing-pages/grid-section"; -import { LandingGuidesShowcase } from "components/landing-pages/guide-showcase"; -import { LandingHero } from "components/landing-pages/hero"; -import { LandingIconSectionItem } from "components/landing-pages/icon-section-item"; -import { LandingLayout } from "components/landing-pages/layout"; -import { LandingOptionSelector } from "components/landing-pages/option-selector"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Card } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "web2-onboarding-landing"; - -const GUIDES = [ - { - title: "Set Up Gasless Transactions with OpenZeppelin Defender", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/03/Learn-how-to--set-up-gasless-transactions-2.png", - link: "https://blog.thirdweb.com/guides/setup-gasless-transactions/", - }, - { - title: "How to accept credit card payments for your NFT drop", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/08/thumbnail-3.png", - link: "https://blog.thirdweb.com/guides/accept-credit-card-payments/", - }, -]; - -const SELECTOR_ITEMS = [ - { - title: "Fiat on and off ramp", - description: - "Enable users to easily purchase NFTs and tokens with their credit card.", - steps: [ - "Developer registers the contract to make it payment-enabled.", - "Developer has the option of creating either a shareable checkout link, one-time checkout link, or build their own flow using checkout elements.", - "Users can make purchases using fiat currency (e.g., USD, EUR) directly with their credit card or bank account.", - ], - products: [], - }, - { - title: "Email log-ins that abstract away crypto", - description: - "Give any user the keys to web3 with familiar web2 login flows. Choose from non-custodial or custodial solutions & enable users to sign in with an email, phone number, or social account (without having to see or deal with complex key management).", - steps: [ - "Dev uses the SDK to enable email and social based authentication in their web3 apps using In-App Wallets or Account Abstraction.", - "User authenticates using just their email address and one-time passcode, or their Google account.", - "A wallet is created on the user behalf without the user having to see or deal with complex key management.", - ], - products: ["smart-wallet", "embedded-wallets"], - }, - { - title: "Gasless transactions", - description: - "Create seamless web3 UX by sponsoring users' gas fees — for any & all transactions. No more disruptive transaction popups or bridging & swapping funds.", - steps: [ - "Developer can either opt to use thirdweb managed service to cover gas fees and be billed monthly, or set up their own relayer or paymaster.", - "User interacts with app seamlessly without worrying about gas costs or any other crypto-related barriers.", - ], - products: ["embedded-wallets", "smart-wallet", "sponsored-transactions"], - }, - { - title: "Custom transaction signing", - description: - "Transaction signing with your own custom messaging or remove entirely.", - steps: [ - "Dev deploys either an NFT contract for primary sales or Marketplace contract for secondary sales.", - "Implement Account Abstraction, setting your app's backend wallet as an Admin.", - "When a transaction occurs, the signing occurs with the backend Admin wallet, so you can choose to surface any of the transaction's details to the end user.", - ], - products: ["smart-wallet"], - }, - { - title: "Fully white-labelled UI components", - description: - "Fully customizable UI components to match seamlessly with your brand.", - steps: [ - "Install the thirdweb SDK.", - "Import the desired UI components.", - "Customize using built-in parameters of styling overrides.", - ], - products: ["connect", "embedded-wallets", "interact"], - }, - { - title: "Bring your own Auth", - description: - "Connect existing auth systems so that users don't need to authenticate twice.", - steps: [ - "A Developer implements any authentication system, to handle user identities.", - "After authentication, create a wallet for the user using Smart or In-App Wallets", - "Associate the newly created wallet with the user's profile.", - ], - products: ["smart-wallet", "embedded-wallets"], - }, - { - title: "Continue as Guest Upgrade Path", - description: - "Our “Continue as Guest” local wallet feature spins up a wallet that is stored locally in user's browser. However, users will not be able to access this wallet if they try to login from a different device. Allow users to convert their local wallet to an MPC wallet.", - steps: [ - "Developer integrates local wallet into a game so that user can enjoy uninterrupted game play.", - "User onboards onto app without being aware that local wallet is created on backend.", - "After reaching a level playing game, the user has acquired enough in-game assets to justify exporting wallet. Developer displays a pop-up outlining what a local wallet is and how the Player can upgrade wallet into an in-app wallet.", - ], - products: ["smart-wallet", "embedded-wallets"], - }, -]; - -const SolutionsWeb2Onboarding: ThirdwebNextPage = () => { - return ( - - - - - - - - - - - - - - - - - - - - {/* - - */} - - - - - - - - - - - ); -}; - -SolutionsWeb2Onboarding.pageId = PageId.SolutionsWeb2Onboarding; - -export default SolutionsWeb2Onboarding; diff --git a/apps/dashboard/src/pages/sponsored-transactions.tsx b/apps/dashboard/src/pages/sponsored-transactions.tsx deleted file mode 100644 index 389de912dea..00000000000 --- a/apps/dashboard/src/pages/sponsored-transactions.tsx +++ /dev/null @@ -1,163 +0,0 @@ -import { Container, Flex } from "@chakra-ui/react"; -import { LandingEndCTA } from "components/landing-pages/end-cta"; -import { LandingGridSection } from "components/landing-pages/grid-section"; -import { LandingGuidesShowcase } from "components/landing-pages/guide-showcase"; -import { LandingHeroWithSideImage } from "components/landing-pages/hero-with-side-image"; -import { LandingIconSectionItem } from "components/landing-pages/icon-section-item"; -import { LandingLayout } from "components/landing-pages/layout"; -import { LandingSectionHeading } from "components/landing-pages/section-heading"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Card } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; - -const TRACKING_CATEGORY = "sponsored-transactions-landing"; - -const GUIDES = [ - { - title: "Setup Gasless Transactions In Your Unity Game", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/03/Set-Up-Gasless-Transactions-in-Unity-2.png", - link: "https://blog.thirdweb.com/guides/setup-gasless-transactions-in-your-unity-game/", - }, - { - title: "Set Up Gasless Transactions with OpenZeppelin Defender", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/03/Learn-how-to--set-up-gasless-transactions-2.png", - link: "https://blog.thirdweb.com/guides/setup-gasless-transactions/", - }, - { - title: "Create an NFT Drop with Gasless Transactions using Biconomy", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2023/03/Create-a-gasless-NFT-Drop--using-Biconomy-2.png", - link: "https://blog.thirdweb.com/guides/biconomy-gasless-guide/", - }, -]; - -const SponsoredTransactionsLanding: ThirdwebNextPage = () => { - return ( - - - - - - - - - - - - - - - - - - - - } - > - - - - - - - - - - - - - - - - - ); -}; - -SponsoredTransactionsLanding.pageId = PageId.SponsoredTransactionsLanding; - -export default SponsoredTransactionsLanding; diff --git a/apps/dashboard/src/pages/ui-components.tsx b/apps/dashboard/src/pages/ui-components.tsx deleted file mode 100644 index cccf22fbb1c..00000000000 --- a/apps/dashboard/src/pages/ui-components.tsx +++ /dev/null @@ -1,159 +0,0 @@ -import { Flex, SimpleGrid } from "@chakra-ui/react"; -import { Hero } from "components/product-pages/common/Hero"; -import { ProductCard } from "components/product-pages/common/ProductCard"; -import { ProductPage } from "components/product-pages/common/ProductPage"; -import { getAbsoluteUrl } from "lib/vercel-utils"; -import { PageId } from "page-id"; -import { Heading } from "tw-components"; -import type { ThirdwebNextPage } from "utils/types"; -import { GuidesShowcase } from "../components/product-pages/common/GuideShowcase"; -import { ProductLearnMoreCard } from "../components/product-pages/common/ProductLearnMoreCard"; -import { ProductSection } from "../components/product-pages/common/ProductSection"; -import { YoutubeEmbed } from "../components/video-embed/YoutubeEmbed"; - -const TRACKING_CATEGORY = "ui_components"; - -const GUIDES = [ - { - title: "Add a Connect Wallet Button to Your Website", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2022/08/thumbnail-4.png", - link: "https://portal.thirdweb.com/typescript/v5/react/components/ConnectButton", - }, - { - title: "Seamless Onchain Payments with thirdweb Pay", - image: - "https://blog.thirdweb.com/content/images/size/w2000/2024/05/Introducing-thirdweb-Pay-1.png", - link: "https://blog.thirdweb.com/introducing-thirdweb-pay/", - }, -]; - -const UIComponents: ThirdwebNextPage = () => { - return ( - - - - - Utilities for common web3 frontend use cases, e.g. enable connect - wallet, render NFTs metadata, and more. Faster development cycles - because you do not have to reinvent the wheel every time. - - - We have thorough developer documentation on following best - practices. No need to worry about configuring for each partner - provider, handling file-type inconsistencies, etc. - - - All of our UI components are fully customizable which you can - fine-tune for your specific use case. - - - - - - - Build the Best Web3 Onboarding - - {/* https://www.youtube.com/watch?v=GOxcsEZzy6g */} - - - - - - - - - - - - - - - - - ); -}; - -UIComponents.pageId = PageId.UIComponentsLanding; - -export default UIComponents;