From 17f85e8ea9f10e2a7aa016d90991f9989fc57948 Mon Sep 17 00:00:00 2001 From: fran-ink <171171801+fran-ink@users.noreply.github.com> Date: Tue, 18 Feb 2025 09:24:37 -0500 Subject: [PATCH] feat: fully migrate to new layout --- public/featured-apps/icons/ionic.webp | Bin 0 -> 3778 bytes scripts/dl-featured-apps-img.js | 2 +- src/actions/submit-your-app.ts | 5 +- .../_components/AddYourAppButton.tsx | 23 - .../_components/AppMainnetToggle.tsx | 51 -- .../_components/AppsCategoryFilter.tsx | 65 --- .../dashboard/_components/AppsContent.scss | 11 - .../dashboard/_components/AppsContent.tsx | 510 ------------------ .../dashboard/_components/AppsSideBar.tsx | 50 -- .../dashboard/_components/AppsTable.tsx | 104 ---- .../dashboard/_components/AppsTagsFilter.tsx | 102 ---- .../dashboard/_components/TableRowPill.tsx | 11 - .../[locale]/(dashboard)/dashboard/layout.tsx | 32 -- .../(dashboard)/dashboard/not-found.tsx | 3 - .../[locale]/(dashboard)/dashboard/page.tsx | 37 -- src/app/[locale]/(home)/HomeShortcuts.tsx | 87 --- src/app/[locale]/(home)/RedirectNewNav.tsx | 27 - src/app/[locale]/(home)/bridge/page.tsx | 5 - src/app/[locale]/(home)/layout.tsx | 39 -- src/app/[locale]/(home)/not-found.tsx | 3 - src/app/[locale]/(home)/page.tsx | 104 ---- src/app/[locale]/(info)/layout.tsx | 25 +- .../(info)/privacy/privacy-after-mainnet.tsx | 3 +- .../(info)/privacy/privacy-before-mainnet.tsx | 3 +- .../(info)/terms/terms-after-mainnet.tsx | 3 +- .../_components/AboutContent/AboutContent.tsx | 202 ------- .../_components/AboutContent/WaitlistForm.tsx | 33 -- .../_components/AboutContent/index.ts | 1 - .../_components/BuildersDropdownContent.tsx | 173 ------ .../ContactContent/ContactContent.tsx | 58 -- .../_components/ContactUsHeaderButton.tsx | 25 - .../DeveloperContent/DeveloperContent.tsx | 264 --------- .../DeveloperContent/DeveloperUpdates.tsx | 26 - .../_components/EventContent/EventContent.tsx | 175 ------ .../_components/EventContent/GlossyPill.tsx | 21 - .../_components/HeaderFaucetButton.tsx | 25 - .../{new => }/_components/Home/HomeApps.tsx | 2 +- .../{new => }/_components/Home/HomeEvent.tsx | 10 +- .../_components/Home/HomeTagLine.tsx | 2 +- .../{new => }/_components/Home/HomeTitle.tsx | 10 +- src/app/[locale]/_components/HomeHeader.tsx | 135 ----- .../{new => }/_components/InkLogo.tsx | 2 +- .../_components/MailButton/MailButton.tsx | 37 -- .../_components/MainCallToActionButton.tsx | 166 ------ .../_components/MainContent/Countdown.tsx | 149 ----- .../MainContent/FloatingButtons.tsx | 91 ---- .../_components/MainContent/MainContent.tsx | 139 ----- .../[locale]/_components/MainContent/index.ts | 2 - .../_components/MainPageBackground.tsx | 2 +- .../{new => }/_components/MobileNav.tsx | 28 +- .../[locale]/_components/MobileNavItems.tsx | 238 -------- .../NewsletterForm/RoutedNewsletterForm.tsx | 65 --- .../StandaloneNewsletterForm.tsx | 32 -- .../_components/NewsletterForm/index.ts | 2 - .../{new => }/_components/PageHeader.tsx | 0 .../apps => }/_components/RoutedLayout.tsx | 8 +- .../{new => }/_components/SideNav.tsx | 28 +- .../SubscribeButton/SubscribeButton.tsx | 27 - src/app/[locale]/_components/WalletHeader.tsx | 22 - .../about/_components/AboutContent.tsx | 3 +- .../_components/PartnerCard.tsx | 0 src/app/[locale]/{new => }/about/page.tsx | 0 .../{new => }/apps/[category]/page.tsx | 0 .../_components/AppCard.tsx | 0 .../_components/AppLinks.tsx | 0 .../apps/_components/AppMainnetToggle.tsx | 0 .../apps/_components/AppsCategoryFilter.tsx | 2 +- .../apps/_components/AppsContent.tsx | 2 +- .../{new => }/apps/_components/AppsGrid.tsx | 0 .../apps/_components/AppsTagsFilter.tsx | 0 .../_components/FeaturedAppPill.tsx | 0 .../dashboard => apps}/_components/InkApp.ts | 0 .../apps/_components/SubmitAppButton.css | 0 .../apps/_components/SubmitAppButton.tsx | 0 .../_components/apps-data.json | 2 +- .../_components/categories.tsx | 0 src/app/[locale]/{new => }/apps/page.tsx | 0 src/app/[locale]/{new => }/bridge/page.tsx | 3 +- .../builders/_components/DeveloperContent.tsx | 0 src/app/[locale]/{new => }/builders/page.tsx | 0 .../_components/CommunityBrandKit.tsx | 58 +- .../community/_components/CommunityEvents.tsx | 9 +- .../community/_components/LetsGetSocial.tsx | 26 +- src/app/[locale]/community/layout.tsx | 31 -- src/app/[locale]/community/page.tsx | 36 +- .../faucet/_components/Faucet.tsx | 2 +- .../_components/FaucetRequestButton.tsx | 0 src/app/[locale]/{(home) => }/faucet/page.tsx | 15 +- .../_components/VerificationContent.tsx | 0 .../_components/VerificationHero.tsx | 0 .../{(home) => }/get-verified/page.tsx | 23 +- src/app/[locale]/layout.tsx | 20 +- .../[locale]/new/apps/_components/AppCard.tsx | 113 ---- .../new/apps/_components/AppLinks.tsx | 1 - .../[locale]/new/apps/_components/InkApp.ts | 1 - .../new/apps/_components/categories.tsx | 52 -- .../_components/CommunityBrandKit.tsx | 52 -- .../community/_components/CommunityEvents.tsx | 1 - .../community/_components/LetsGetSocial.tsx | 1 - src/app/[locale]/new/community/page.tsx | 24 - src/app/[locale]/new/layout.tsx | 34 -- .../new/verify/_components/Verifications.tsx | 1 - .../new/verify/_components/VerifyContent.tsx | 1 - .../_components/VerifyHaveASuggestion.tsx | 1 - .../new/verify/_components/VerifyInfoCard.tsx | 1 - src/app/[locale]/new/verify/page.tsx | 33 -- src/app/[locale]/not-found.tsx | 13 +- src/app/[locale]/{new => }/page.tsx | 0 .../smart-wallet/_components/LoginButton.tsx | 0 .../_components/RegisterButton.tsx | 0 .../smart-wallet/_components/SendUserOp.tsx | 0 .../_components/SmartAccountAddress.tsx | 0 .../smart-wallet/_components/SmartWallet.tsx | 0 .../smart-wallet/_components/Spinner.tsx | 0 .../_components/UsernameInput.tsx | 0 .../smart-wallet/context/UsernameContext.tsx | 0 .../smart-wallet/context/ZerodevContext.tsx | 0 .../{(home) => }/smart-wallet/lib/viem.ts | 0 .../{(home) => }/smart-wallet/lib/zerodev.ts | 0 .../{(home) => }/smart-wallet/page.tsx | 25 +- .../smart-wallet/utils/constants.ts | 0 .../_components/BlockExplorerButton.tsx | 0 .../testnet-bridge/_components/Bridge.tsx | 4 +- .../BridgeTransactionModal.tsx | 0 .../BridgeTransactionModalContext.tsx | 0 .../BroadcastSent-checkMark.json | 0 .../BridgeTransactionModal/index.ts | 0 .../{(home) => }/testnet-bridge/page.tsx | 19 +- .../verify/_components/Verifications.tsx | 3 +- src/app/[locale]/verify/layout.tsx | 41 -- src/app/[locale]/verify/page.tsx | 28 +- .../ConnectWalletButton.tsx | 0 .../ContactUsPrivacyButton.tsx | 0 .../CookieSettingsButton.tsx | 0 src/components/EventCard.tsx | 99 ++++ src/components/Footer/FooterContent.tsx | 2 +- src/components/Header/HeaderConnectWallet.tsx | 2 +- src/components/Header/HeaderContent.tsx | 2 +- .../HomeAppsToggle/HomeAppsToggle.tsx | 6 +- .../MailIconButton/MailIconButton.tsx | 0 src/components/MobileHeader/MobileHeader.tsx | 2 +- .../NewsletterForm/NewsletterForm.tsx | 2 +- .../NewsletterForm/NewsletterFormContext.tsx | 0 .../NewsletterForm}/SuccessState.tsx | 0 src/components/Providers.tsx | 2 +- .../_components => components}/RelayKitUI.tsx | 0 src/components/SocialLinksRow.tsx | 2 +- src/routing.ts | 19 +- src/util/feature-flags.ts | 1 - 149 files changed, 280 insertions(+), 4045 deletions(-) create mode 100644 public/featured-apps/icons/ionic.webp delete mode 100644 src/app/[locale]/(dashboard)/dashboard/_components/AddYourAppButton.tsx delete mode 100644 src/app/[locale]/(dashboard)/dashboard/_components/AppMainnetToggle.tsx delete mode 100644 src/app/[locale]/(dashboard)/dashboard/_components/AppsCategoryFilter.tsx delete mode 100644 src/app/[locale]/(dashboard)/dashboard/_components/AppsContent.scss delete mode 100644 src/app/[locale]/(dashboard)/dashboard/_components/AppsContent.tsx delete mode 100644 src/app/[locale]/(dashboard)/dashboard/_components/AppsSideBar.tsx delete mode 100644 src/app/[locale]/(dashboard)/dashboard/_components/AppsTable.tsx delete mode 100644 src/app/[locale]/(dashboard)/dashboard/_components/AppsTagsFilter.tsx delete mode 100644 src/app/[locale]/(dashboard)/dashboard/_components/TableRowPill.tsx delete mode 100644 src/app/[locale]/(dashboard)/dashboard/layout.tsx delete mode 100644 src/app/[locale]/(dashboard)/dashboard/not-found.tsx delete mode 100644 src/app/[locale]/(dashboard)/dashboard/page.tsx delete mode 100644 src/app/[locale]/(home)/HomeShortcuts.tsx delete mode 100644 src/app/[locale]/(home)/RedirectNewNav.tsx delete mode 100644 src/app/[locale]/(home)/bridge/page.tsx delete mode 100644 src/app/[locale]/(home)/layout.tsx delete mode 100644 src/app/[locale]/(home)/not-found.tsx delete mode 100644 src/app/[locale]/(home)/page.tsx delete mode 100644 src/app/[locale]/_components/AboutContent/AboutContent.tsx delete mode 100644 src/app/[locale]/_components/AboutContent/WaitlistForm.tsx delete mode 100644 src/app/[locale]/_components/AboutContent/index.ts delete mode 100644 src/app/[locale]/_components/BuildersDropdownContent.tsx delete mode 100644 src/app/[locale]/_components/ContactContent/ContactContent.tsx delete mode 100644 src/app/[locale]/_components/ContactUsHeaderButton.tsx delete mode 100644 src/app/[locale]/_components/DeveloperContent/DeveloperContent.tsx delete mode 100644 src/app/[locale]/_components/DeveloperContent/DeveloperUpdates.tsx delete mode 100644 src/app/[locale]/_components/EventContent/EventContent.tsx delete mode 100644 src/app/[locale]/_components/EventContent/GlossyPill.tsx delete mode 100644 src/app/[locale]/_components/HeaderFaucetButton.tsx rename src/app/[locale]/{new => }/_components/Home/HomeApps.tsx (92%) rename src/app/[locale]/{new => }/_components/Home/HomeEvent.tsx (66%) rename src/app/[locale]/{new => }/_components/Home/HomeTagLine.tsx (94%) rename src/app/[locale]/{new => }/_components/Home/HomeTitle.tsx (74%) delete mode 100644 src/app/[locale]/_components/HomeHeader.tsx rename src/app/[locale]/{new => }/_components/InkLogo.tsx (93%) delete mode 100644 src/app/[locale]/_components/MailButton/MailButton.tsx delete mode 100644 src/app/[locale]/_components/MainCallToActionButton.tsx delete mode 100644 src/app/[locale]/_components/MainContent/Countdown.tsx delete mode 100644 src/app/[locale]/_components/MainContent/FloatingButtons.tsx delete mode 100644 src/app/[locale]/_components/MainContent/MainContent.tsx delete mode 100644 src/app/[locale]/_components/MainContent/index.ts rename src/app/[locale]/{new => }/_components/MainPageBackground.tsx (93%) rename src/app/[locale]/{new => }/_components/MobileNav.tsx (80%) delete mode 100644 src/app/[locale]/_components/MobileNavItems.tsx delete mode 100644 src/app/[locale]/_components/NewsletterForm/RoutedNewsletterForm.tsx delete mode 100644 src/app/[locale]/_components/NewsletterForm/StandaloneNewsletterForm.tsx delete mode 100644 src/app/[locale]/_components/NewsletterForm/index.ts rename src/app/[locale]/{new => }/_components/PageHeader.tsx (100%) rename src/app/[locale]/{new/apps => }/_components/RoutedLayout.tsx (65%) rename src/app/[locale]/{new => }/_components/SideNav.tsx (78%) delete mode 100644 src/app/[locale]/_components/SubscribeButton/SubscribeButton.tsx delete mode 100644 src/app/[locale]/_components/WalletHeader.tsx rename src/app/[locale]/{new => }/about/_components/AboutContent.tsx (98%) rename src/app/[locale]/{_components/AboutContent => about}/_components/PartnerCard.tsx (100%) rename src/app/[locale]/{new => }/about/page.tsx (100%) rename src/app/[locale]/{new => }/apps/[category]/page.tsx (100%) rename src/app/[locale]/{(dashboard)/dashboard => apps}/_components/AppCard.tsx (100%) rename src/app/[locale]/{(dashboard)/dashboard => apps}/_components/AppLinks.tsx (100%) rename src/app/[locale]/{new => }/apps/_components/AppMainnetToggle.tsx (100%) rename src/app/[locale]/{new => }/apps/_components/AppsCategoryFilter.tsx (97%) rename src/app/[locale]/{new => }/apps/_components/AppsContent.tsx (99%) rename src/app/[locale]/{new => }/apps/_components/AppsGrid.tsx (100%) rename src/app/[locale]/{new => }/apps/_components/AppsTagsFilter.tsx (100%) rename src/app/[locale]/{(dashboard)/dashboard => apps}/_components/FeaturedAppPill.tsx (100%) rename src/app/[locale]/{(dashboard)/dashboard => apps}/_components/InkApp.ts (100%) rename src/app/[locale]/{new => }/apps/_components/SubmitAppButton.css (100%) rename src/app/[locale]/{new => }/apps/_components/SubmitAppButton.tsx (100%) rename src/app/[locale]/{(dashboard)/dashboard => apps}/_components/apps-data.json (99%) rename src/app/[locale]/{(dashboard)/dashboard => apps}/_components/categories.tsx (100%) rename src/app/[locale]/{new => }/apps/page.tsx (100%) rename src/app/[locale]/{new => }/bridge/page.tsx (72%) rename src/app/[locale]/{new => }/builders/_components/DeveloperContent.tsx (100%) rename src/app/[locale]/{new => }/builders/page.tsx (100%) delete mode 100644 src/app/[locale]/community/layout.tsx rename src/app/[locale]/{(home) => }/faucet/_components/Faucet.tsx (97%) rename src/app/[locale]/{(home) => }/faucet/_components/FaucetRequestButton.tsx (100%) rename src/app/[locale]/{(home) => }/faucet/page.tsx (76%) rename src/app/[locale]/{(home) => }/get-verified/_components/VerificationContent.tsx (100%) rename src/app/[locale]/{(home) => }/get-verified/_components/VerificationHero.tsx (100%) rename src/app/[locale]/{(home) => }/get-verified/page.tsx (67%) delete mode 100644 src/app/[locale]/new/apps/_components/AppCard.tsx delete mode 100644 src/app/[locale]/new/apps/_components/AppLinks.tsx delete mode 100644 src/app/[locale]/new/apps/_components/InkApp.ts delete mode 100644 src/app/[locale]/new/apps/_components/categories.tsx delete mode 100644 src/app/[locale]/new/community/_components/CommunityBrandKit.tsx delete mode 100644 src/app/[locale]/new/community/_components/CommunityEvents.tsx delete mode 100644 src/app/[locale]/new/community/_components/LetsGetSocial.tsx delete mode 100644 src/app/[locale]/new/community/page.tsx delete mode 100644 src/app/[locale]/new/layout.tsx delete mode 100644 src/app/[locale]/new/verify/_components/Verifications.tsx delete mode 100644 src/app/[locale]/new/verify/_components/VerifyContent.tsx delete mode 100644 src/app/[locale]/new/verify/_components/VerifyHaveASuggestion.tsx delete mode 100644 src/app/[locale]/new/verify/_components/VerifyInfoCard.tsx delete mode 100644 src/app/[locale]/new/verify/page.tsx rename src/app/[locale]/{new => }/page.tsx (100%) rename src/app/[locale]/{(home) => }/smart-wallet/_components/LoginButton.tsx (100%) rename src/app/[locale]/{(home) => }/smart-wallet/_components/RegisterButton.tsx (100%) rename src/app/[locale]/{(home) => }/smart-wallet/_components/SendUserOp.tsx (100%) rename src/app/[locale]/{(home) => }/smart-wallet/_components/SmartAccountAddress.tsx (100%) rename src/app/[locale]/{(home) => }/smart-wallet/_components/SmartWallet.tsx (100%) rename src/app/[locale]/{(home) => }/smart-wallet/_components/Spinner.tsx (100%) rename src/app/[locale]/{(home) => }/smart-wallet/_components/UsernameInput.tsx (100%) rename src/app/[locale]/{(home) => }/smart-wallet/context/UsernameContext.tsx (100%) rename src/app/[locale]/{(home) => }/smart-wallet/context/ZerodevContext.tsx (100%) rename src/app/[locale]/{(home) => }/smart-wallet/lib/viem.ts (100%) rename src/app/[locale]/{(home) => }/smart-wallet/lib/zerodev.ts (100%) rename src/app/[locale]/{(home) => }/smart-wallet/page.tsx (67%) rename src/app/[locale]/{(home) => }/smart-wallet/utils/constants.ts (100%) rename src/app/[locale]/{(home) => }/testnet-bridge/_components/BlockExplorerButton.tsx (100%) rename src/app/[locale]/{(home) => }/testnet-bridge/_components/Bridge.tsx (98%) rename src/app/[locale]/{(home) => }/testnet-bridge/_components/BridgeTransactionModal/BridgeTransactionModal.tsx (100%) rename src/app/[locale]/{(home) => }/testnet-bridge/_components/BridgeTransactionModal/BridgeTransactionModalContext.tsx (100%) rename src/app/[locale]/{(home) => }/testnet-bridge/_components/BridgeTransactionModal/BroadcastSent-checkMark.json (100%) rename src/app/[locale]/{(home) => }/testnet-bridge/_components/BridgeTransactionModal/index.ts (100%) rename src/app/[locale]/{(home) => }/testnet-bridge/page.tsx (73%) delete mode 100644 src/app/[locale]/verify/layout.tsx rename src/{app/[locale]/_components => components}/ConnectWalletButton.tsx (100%) rename src/{app/[locale]/_components => components}/ContactUsPrivacyButton.tsx (100%) rename src/{app/[locale]/_components => components}/CookieSettingsButton.tsx (100%) create mode 100644 src/components/EventCard.tsx rename src/{app/[locale]/_components => components}/MailIconButton/MailIconButton.tsx (100%) rename src/{app/[locale]/_components => components}/NewsletterForm/NewsletterForm.tsx (98%) rename src/{app/[locale]/_components => components}/NewsletterForm/NewsletterFormContext.tsx (100%) rename src/{app/[locale]/_components/MainContent => components/NewsletterForm}/SuccessState.tsx (100%) rename src/{app/[locale]/(dashboard)/dashboard/_components => components}/RelayKitUI.tsx (100%) diff --git a/public/featured-apps/icons/ionic.webp b/public/featured-apps/icons/ionic.webp new file mode 100644 index 0000000000000000000000000000000000000000..4254d574df9736cb22106c7ebf95458d52027e14 GIT binary patch literal 3778 zcmV;z4n6TwNk&Gx4gdgGMM6+kP&gp24gdf!Q~;d;Dpmnj0X}UunMkA~BB3Rf$Vh+< ziDhp5S9qh!zPxCuJ97WkpX2viU(W&k^Y*8l%XRz>`2o%>ggt%u)ApZqe>eRWeya8n z{tx{#{Xg}tydGx1X1`+n;SN;S-ECvGH1=4BdoiiG`6G8IB*F=7tX|zJ2t! z+3MQ{LrJD{LpNavQI|=(TD$8aD`}(^4J-4n5g=ve;%E!{P)xm-1RC+C5XRVhR7@)B zGF2UY&*Jr$%v^~XkjMZLzx}W=7HJi+MQRXUOAQyJmT0|~K<%nQyR{aXbh15HTU|V@ zetOb9oL&VdK!x~g66~`$plDjC@7Mvy`o{aiNjs|Lql%9QmM$**^_GX%x^UW; zopWY98KNhpD;kiR%Mlcl>WzfXMpu~I4|4+#A8L6V_`AZ2zwqg!-kuk_)=y{-CT_wR zg2A@NpI&-m&rIO75vPTR5yF>L9XjS41#*8MpBO7tRH^R(xz|{CX`a(KjY$!YT@dHC z;{KG&`IqpdghflkvNqdZqRE@EjT*o8T}QOPcd1pG)|(0Xzx99W|8uC;IQ5NYAD}#T zKCTq8!W z{aEN+;{z{v4>ItdJe*(BnSV0MZW+i17k;z;(0b(%0ykkAHGk)uJXKEamNtqL>^T>B zcmGdF^$V{B<^0R}m-8_(Y35HfYX8;$tN&O2ul-;7&;b7Uxu5_bM0|Au5)fLFTXXWm4WqBo6Y=qSvM z4&#s0d=%^b4g3HJm*^9V!&a^Y znwL2Sf|I)n(E z#m_DC?$Adx5%Tz&i5OFoo!uph9p!&x2pTR`?8L6YjaxSn6MR~nk7K-dNTw7{r1-T4 zvo-7jjRd7nyO4)})|4}@pU1&NVJ;V(iX}=>*d9BXgq&PtNqS4m$*}KX?U#CgpQ9dT zIF~#;0#DPL-?o`Bj0q7Q0Ai62>rOXOWD3`zOw-`doTiZVno2)_1Ugx>+^Euh#XAH4 z$7{qc06bk5f;8hW!3O+$a7HZrexL2K-3ZHpa)fJoqJh95n2r79ur~ct*x@_R_7WTb z9ohVJuHoKxGCT7!`r$A>%80b-bU=;4D*^8d*|r3noBWh;tQT4GmkNAQFbK3 zvSu+)nA{7Lco8J$5&BQU7WTODu%%JdUl6iV=#9=H@;0~l3V*n zJG=*-${&1Uh-F%2mcKdp{I4TUmDW-HS_2t$V<(sKsIyeVsWt^$eGZ;;=I`lJ(;qT^ zHD3N3Ro^y$#3z(h{8HL~3t~<8m0GzdTdma&HW=fzY|p5`M2_x7We=T+vUY|cK^E*i zn1u&V6Sl;6@Wxu9_^4heVy9SL;qKj=TonK}WPan#YCmp%HV}*ky@jFiAMU7+cSKS| zFi!nf#4VR?q%N+S8NAVT2nS`(KxFoUb!fDd;ob`2$k;Bhk_r&)PaEg6ei*P4rwp}W z_YJ(ghGu{-PXeD4JFF^EgMFdoLF3sBsu$}^shcdgP#=sADr3Mu2AN8+rM%oXaj)U) zj!tn#o;~TAipK1#K22+>&?m#`DOq5nD|23aCZ%L3MoA63@uX#t5*c%JO91s`%JEpt zsEsOY7q6gw6n;dR|4c3gktL0s8>26;Z&;AWgR=3x@^N446w71WW}qM{&&ulz)T7LZ z1Jz_!9Z0Iy218H83MA+p8O@>oipBka>}HRntlUeTC+z#-$_b$bYy&*^u+ah72r@Lz z$aYW5-2oLEzv--ESq=)-KK6GUX#{~IODY=4i?ILjBt7uuAvF4eLR-b10HW@Q?;`F;Uk=8%GXXrw%}?N^Xqs z=ysjl+Q2{S&WQqo(o`41M7Cq=hY~rFrF9m0&a5-k5TGp4H@2SK|93`RSBK@uXP=ko z0m@6zQUVvGJ1RAwxMW|*P1oS_F;QTjh_wG!Qma%)(BS=qtPUF9;X-Zw12Nve<`fy{ zcAFyaa3{Lsc5u9li2Xv;$-;6!ZBE&U+LQORL;&X0Pl4 z2fQ4;q*ALGQQ^vXe?4q);sNvg=S*ePK}f~Rx@iwVxElxrap32zm!gL`($Z;SM0UDn z3(Wh1fK1r)TjA#)-(`Xf{oVc$**7dcPWsV~N8{8z74A5abxCkJ`0 zvqd5kSJv%&Kr>bV%AlK`kqNYoLwCNyup%}hcfYbI5D>coxx0KpzavKn2>{LcS|1A zQ=jFc@CkozgfV+|Fld0^khQbrnJnpRx=Y|;q~FSpim;czz=)Q?1mbzibbQWlpd>2w z?R*=H0^|vs-T^IxNq($afcFjyYhB_{ybq6TakewQ! z6KI`;qSE3o?Wyxd{B6-O%FZNJ!ib-Ntp)I{1Q@7(R|5w~*Uh(reEQBVh_B_iz4@4EG!a(_>U3VW;|EA@qh`d_<1H(LMT?+aI#mMp#|ej--W0AqR+9M^7O^`t)=X@lQS;2d8VXC@5lX z7DEp_^eFZ!N1L+0CkcvC+E(Ntr@lWkg(Ex_3;>Vib-aa~FXQ>*pX**-l)9~cn|I|P zwcWleN)z^j`$76LP(PFaTOOvFK;O;ebhaP{W*tYmABRwW0F0`sd6JQT!ak8f#_4zs z7pb2GulIs33Y5#AC(`%f#Q}z`WnEz>Or_0a#H@ zYpc8fiv=+Z>&2X0$`bQDEs-@z;QwjPfExT8{W1bdhE|#ZSLwO*kYi2MqZEyz#B(JF*N~rCF#W#=xmJ#Lwi%}(c*Wi>kuyItbjgIN!fF>P}`g~8A|9)NvJ>yHH15} z`=JkY;wtosK%H1l$2a+|^zP}zn zABERBaNC?uIP0J9{P$m26qC;#7_csNXitLIUdr;;acGB7T`{u174y3*JAryd8v>U; zCp_8yI=sx2k>5ZU5J30^@{aB)fczE!3%!`hFt02?!Fwpua!dUv3=ep%wL$;NOrB#) zwN_}f5Q(yWYpJ@<(fFTXx`QyYsxxsesE|rtr!GHVecOol5(>?`z}t5pfZBqC{~xrW z-vc-K4HD(HMo~3qp^^}Mnulkv2(rygDXig66K0{1YDOa!q8*KmzY*L;GKrHAf}Erp sXVM=ITTY{CbNh@ck3X>+Y*bU?ey6FFI)2+^E3aRt;s5{u0000003nt>qyPW_ literal 0 HcmV?d00001 diff --git a/scripts/dl-featured-apps-img.js b/scripts/dl-featured-apps-img.js index 34f198f..88aeed6 100644 --- a/scripts/dl-featured-apps-img.js +++ b/scripts/dl-featured-apps-img.js @@ -12,7 +12,7 @@ const exceptions = ["Kraken", "Kraken Wallet"]; const run = async () => { const appsDataFile = path.join( ROOT, - "src/app/[locale]/(dashboard)/dashboard/_components/apps-data.json" + "src/app/[locale]/apps/_components/apps-data.json" ); const appsDataRaw = await fs.readFile(appsDataFile, "utf8"); const appsData = JSON.parse(appsDataRaw); diff --git a/src/actions/submit-your-app.ts b/src/actions/submit-your-app.ts index 8d5941b..20aec4a 100644 --- a/src/actions/submit-your-app.ts +++ b/src/actions/submit-your-app.ts @@ -5,7 +5,7 @@ import { Octokit } from "@octokit/rest"; import { WebClient } from "@slack/web-api"; import sharp from "sharp"; -import { InkApp } from "@/app/[locale]/(dashboard)/dashboard/_components/InkApp"; +import { InkApp } from "@/app/[locale]/apps/_components/InkApp"; import { env } from "@/env"; import { validateCaptcha } from "@/lib/hcaptcha"; import { @@ -39,8 +39,7 @@ const slackClient = new WebClient(INK_APP_SUBMISSION_SLACK_BOT_TOKEN); const GITHUB_CONFIG = { OWNER: INK_APP_SUBMISSION_TARGET_ORG, REPO: INK_APP_SUBMISSION_TARGET_REPO, - FILE_PATH: - "src/app/[locale]/(dashboard)/dashboard/_components/apps-data.json", + FILE_PATH: "src/app/[locale]/apps/_components/apps-data.json", BRANCH: INK_APP_SUBMISSION_TARGET_BRANCH, } as const; diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/AddYourAppButton.tsx b/src/app/[locale]/(dashboard)/dashboard/_components/AddYourAppButton.tsx deleted file mode 100644 index 8565cc1..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/_components/AddYourAppButton.tsx +++ /dev/null @@ -1,23 +0,0 @@ -"use client"; -import { Button } from "@inkonchain/ink-kit"; - -import { useAppSubmissionModalContext } from "@/components/AppSubmissionModal/AppSubmissionModalContext"; - -export function AddYourAppButton() { - const { setIsOpen } = useAppSubmissionModalContext(); - - return ( - - ); -} diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/AppMainnetToggle.tsx b/src/app/[locale]/(dashboard)/dashboard/_components/AppMainnetToggle.tsx deleted file mode 100644 index 849befa..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/_components/AppMainnetToggle.tsx +++ /dev/null @@ -1,51 +0,0 @@ -"use client"; - -import { - Listbox, - ListboxButton, - ListboxOption, - ListboxOptions, -} from "@inkonchain/ink-kit"; - -import { classNames } from "@/util/classes"; - -import { InkAppNetwork } from "./InkApp"; - -interface AppMainnetToggleProps { - value: InkAppNetwork; - onChange: (value: InkAppNetwork) => void; -} - -const items = [ - { label: "All networks", value: "Both" }, - { label: "Mainnet", value: "Mainnet" }, - { label: "Testnet", value: "Testnet" }, -] satisfies { label: string; value: InkAppNetwork }[]; - -export function AppMainnetToggle({ value, onChange }: AppMainnetToggleProps) { - const selectedItem = items.find((item) => item.value === value) || items[0]; - - return ( - onChange(option.value)}> - - - {selectedItem.label} - - - - {items.map((item) => ( - - {item.label} - - ))} - - - ); -} diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/AppsCategoryFilter.tsx b/src/app/[locale]/(dashboard)/dashboard/_components/AppsCategoryFilter.tsx deleted file mode 100644 index b6aa821..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/_components/AppsCategoryFilter.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { - Listbox, - ListboxButton, - ListboxOption, - ListboxOptions, -} from "@inkonchain/ink-kit"; - -import { useRouterQuery } from "@/hooks/useRouterQuery"; -import { Link } from "@/routing"; - -import { appCategories } from "./categories"; - -interface AppsCategoryFilterProps { - selected: string | undefined; - setSelected: (value: string | undefined) => void; - newLayout?: boolean; -} - -export const AppsCategoryFilter = ({ - selected, - setSelected, - newLayout, -}: AppsCategoryFilterProps) => { - const query = useRouterQuery(); - const selectedItem = - appCategories.find((item) => item.value === selected) || appCategories[0]; - return ( - setSelected(option.value ?? undefined)} - > - - {selectedItem.label} - - - {appCategories.map((item) => ( - - {newLayout ? ( - - {item.label} - - ) : ( - item.label - )} - - ))} - - - ); -}; diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/AppsContent.scss b/src/app/[locale]/(dashboard)/dashboard/_components/AppsContent.scss deleted file mode 100644 index 8db90c9..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/_components/AppsContent.scss +++ /dev/null @@ -1,11 +0,0 @@ -.hide-on-very-narrow-screen { - @media (max-height: 800px) and (min-width: 1024px) { - display: none !important; - } -} - -.show-on-very-narrow-screen { - @media (max-height: 800px) and (min-width: 1024px) { - display: block !important; - } -} diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/AppsContent.tsx b/src/app/[locale]/(dashboard)/dashboard/_components/AppsContent.tsx deleted file mode 100644 index da0898d..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/_components/AppsContent.tsx +++ /dev/null @@ -1,510 +0,0 @@ -"use client"; - -import { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import Carousel from "react-multi-carousel"; -import { Button } from "@inkonchain/ink-kit"; -import { useSearchParams } from "next/navigation"; - -import { ColoredText } from "@/components/ColoredText"; -import { InfiniteScrollContainer } from "@/components/InfiniteScrollContainer"; -import { SearchInput } from "@/components/SearchBar/SearchInput"; -import { useOnWindowSize } from "@/hooks/useOnWindowSize"; -import { useRouter } from "@/routing"; -import { classNames } from "@/util/classes"; -import { isMobileUserAgent } from "@/util/detection"; - -import { AddYourAppButton } from "./AddYourAppButton"; -import { AppCard } from "./AppCard"; -import { AppMainnetToggle } from "./AppMainnetToggle"; -import { AppsCategoryFilter } from "./AppsCategoryFilter"; -import { AppsSideBar } from "./AppsSideBar"; -import { AppsTable } from "./AppsTable"; -import { AppsTagsFilter } from "./AppsTagsFilter"; -import { - InkAppFilters, - InkAppNetwork, - inkApps, - inkFeaturedApps, -} from "./InkApp"; -import { RelayKitUI } from "./RelayKitUI"; - -import "react-multi-carousel/lib/styles.css"; -import "./AppsContent.scss"; - -interface AppsContentProps { - currentCategory?: string; -} - -export function AppsContent({ currentCategory }: AppsContentProps) { - const router = useRouter(); - const searchParams = useSearchParams(); - const network = getNetwork(searchParams.get("network")); - const category = currentCategory || searchParams.get("category"); - const tags = searchParams.get("tags"); - - const [page, setPage] = useState(0); - const [search, setSearch] = useState(""); - const [filters, setFilters] = useState>({ - categories: category ? category.split(",") : [], - tags: tags ? tags.split(",") : [], - network: network ? network : "Mainnet", - }); - - const filteredAppsWithoutSearchTerms = useMemo( - () => - inkApps.filter((app) => { - if ( - filters.network === "Mainnet" && - app.network !== "Mainnet" && - app.network !== "Both" - ) - return false; - if ( - filters.network === "Testnet" && - app.network !== "Testnet" && - app.network !== "Both" - ) - return false; - - if ( - filters.categories.length > 0 && - !app.category.some((category) => - filters.categories.includes(category.toLowerCase()) - ) - ) - return false; - - if ( - filters.tags.length > 0 && - !app.tags.some((tag) => filters.tags.includes(tag)) - ) - return false; - - return true; - }), - [filters] - ); - - const filteredApps = useMemo( - () => - filteredAppsWithoutSearchTerms.filter((app) => { - const searchTerm = search.toLowerCase(); - if ( - searchTerm && - !app.name.toLowerCase().includes(searchTerm) && - !app.description.toLowerCase().includes(searchTerm) && - !app.category.some((category) => - category.toLowerCase().includes(searchTerm) - ) && - !app.tags.some((tag) => tag.toLowerCase().includes(searchTerm)) - ) - return false; - return true; - }), - [filteredAppsWithoutSearchTerms, search] - ); - - const carouselRef = useRef(null); - const isMobileWindowSize = useOnWindowSize({ size: "sm" }); - const isUnderDesktopWindowSize = useOnWindowSize({ size: "xl" }); - - // If some variables change and we are scrolled, we sometimes get stuck on a slide that is not visible. - useEffect(() => { - if (carouselRef.current) { - carouselRef.current.goToSlide(0); - } - }, [filteredApps, isMobileWindowSize]); - const updateSearchParams = useCallback( - (newParams: Record) => { - const { network, category, tags, ...params } = Object.fromEntries( - searchParams.entries() - ); - const queryParams = new URLSearchParams({ - ...params, - ...newParams, - }); - window.history.pushState(null, "", `/dashboard?${queryParams}`); - }, - [searchParams] - ); - const updateFilters = useCallback( - (newFilters: Partial) => { - setFilters((prevFilters) => { - const mergedFilters = { ...prevFilters, ...newFilters }; - - updateSearchParams({ - ...(mergedFilters.network && mergedFilters.network !== "Mainnet" - ? { network: mergedFilters.network } - : {}), - ...(mergedFilters.tags && mergedFilters.tags.length > 0 - ? { tags: mergedFilters.tags.join(",") } - : {}), - ...(mergedFilters.categories && mergedFilters.categories.length > 0 - ? { category: mergedFilters.categories[0] } - : {}), - }); - - setPage(0); - return mergedFilters; - }); - }, - [updateSearchParams] - ); - - const isMobile = isMobileUserAgent(); - - const categoryLabels: Record = { - bridge: "Bridge to Ink", - defi: "Discover the best DeFi apps on Ink", - explorers: "Discover the best explorers on Ink", - infra: "Discover the best infrastructure on Ink", - social: "Discover the best social apps on Ink", - "on-ramps": "Discover the best on-ramps on Ink", - other: "Discover the best on-ramps on Ink", - }; - - const title = - filters.categories.length === 1 - ? categoryLabels[filters.categories[0]] - : `Discover the best on Ink`; - - const hasActiveFilters = (filters: InkAppFilters): boolean => { - return ( - !!search || - (filters.network && filters.network !== "Mainnet") || - (filters.categories && filters.categories.length > 0) || - (filters.tags && filters.tags.length > 0) - ); - }; - - const appsToDisplay = useMemo( - () => filteredApps.slice(0, (page + 1) * 10), - [filteredApps, page] - ); - - return ( - <> - {/* Floating section on desktop */} -
-
- -
-
- { - updateFilters({ - network: value, - }); - }} - /> -
-
- { - updateFilters({ - categories: value ? [value] : [], - }); - }} - /> -
-
- { - updateFilters({ - tags: value || [], - }); - }} - /> -
-
- -
-
- { - updateFilters({ - categories: value ? [value] : [], - }); - }} - /> -
-
- { - updateFilters({ - categories: value ? [value] : [], - }); - }} - /> -
-
-
- -
-
-
- -
-
-
- { - updateFilters({ - categories: value ? [value] : [], - }); - }} - /> -
-
- { - updateFilters({ - tags: value, - }); - }} - /> -
-
- -
-
-
- -
-
- { - updateFilters({ - network: value, - }); - }} - /> -
-
- { - updateFilters({ - tags: value, - }); - }} - /> -
-
-
- -
-
-
- Dashboard -
- - {title} - -
-
- - {/* Main flexbox */} -
- {/* Apps carousel & table */} -
- {!search && ( -
-
- - {inkFeaturedApps.map((app) => ( - - ))} - -
-
- )} - -
- setPage(page + 1)} - hasMore={page < Math.floor(filteredApps.length / 10)} - > - setSearch("")} - hasActiveFilters={hasActiveFilters(filters)} - resetFilters={() => { - updateFilters({ - network: "Mainnet", - categories: [], - tags: [], - }); - }} - /> - } - network={network} - /> - -
- -
- -
-
- - {/* Bridge Widget */} -
-
- -
-
-
-
-
- - ); -} - -function getNetwork(networkSearchParam: string | null): InkAppNetwork { - if (networkSearchParam === "Both" || networkSearchParam === "Testnet") { - return networkSearchParam; - } - - return "Mainnet"; -} - -function AddYourAppSection({ className }: { className?: string }) { - return ( -
-
-
Submit your app
-
- Have an app on Ink you want to share with the world? Add your app and - get more Ink flowing your way. -
-
-
- -
-
- ); -} - -function NoAppsFound({ - hasSearch, - hasActiveFilters, - resetFilters, - resetSearch, -}: { - hasSearch: boolean; - hasActiveFilters: boolean; - resetFilters: () => void; - resetSearch: () => void; -}) { - return ( -
-
-
- No matches found -
-
- {`Please change your keywords${ - hasActiveFilters ? " or reset your filters" : "" - } and try again`} -
-
- {(hasActiveFilters || hasSearch) && ( - - )} -
- ); -} diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/AppsSideBar.tsx b/src/app/[locale]/(dashboard)/dashboard/_components/AppsSideBar.tsx deleted file mode 100644 index 7195cb0..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/_components/AppsSideBar.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { ListItem } from "@inkonchain/ink-kit"; - -import { useRouterQuery } from "@/hooks/useRouterQuery"; -import { Link } from "@/routing"; -import { classNames } from "@/util/classes"; - -import { appCategories } from "./categories"; - -interface AppsSideBarProps { - selected: string | null; - setSelected: (value: string | null) => void; - newLayout?: boolean; -} - -export const AppsSideBar = ({ - selected, - setSelected, - newLayout, -}: AppsSideBarProps) => { - const query = useRouterQuery(); - return ( -
- {appCategories.map((filter, index) => ( - setSelected(filter.value)} - > - {newLayout ? ( - - {filter.label} - - ) : ( - filter.label - )} - - ))} -
- ); -}; diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/AppsTable.tsx b/src/app/[locale]/(dashboard)/dashboard/_components/AppsTable.tsx deleted file mode 100644 index f645f2e..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/_components/AppsTable.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import React, { useCallback, useState } from "react"; -import Image from "next/image"; - -import { NoisyContainer } from "@/components/Noisy"; -import { ScrollWithGradient } from "@/components/ScrollWithGradient"; - -import { AppLinks } from "./AppLinks"; -import { InkApp, InkAppNetwork, mainUrl } from "./InkApp"; -import { TableRowPill } from "./TableRowPill"; - -export const AppsTable: React.FC<{ - apps: InkApp[]; - noAppsFound: React.ReactNode; - network: InkAppNetwork; -}> = ({ apps, noAppsFound, network }) => { - const [maskViaPercent, setMaskViaPercent] = useState(0); - - const onScrollPercent = useCallback((pct: number, px: number) => { - setMaskViaPercent(px > 0 ? px + 16 : px); - }, []); - - return ( -
- {apps.length === 0 ? ( -
- {noAppsFound} -
- ) : ( -
- - - - - - - - - - - {apps.length === 0 && ( - - - - )} - {apps.map((app) => ( - { - window.open(mainUrl(app, network), "_blank"); - }} - > - - - - - - ))} - -
- App - - TagsLinks
- - {"dapps - - -
-
{app.name}
-
- {app.description} -
-
-
-
- {app.tags.map((tag) => ( - {tag} - ))} -
-
-
- -
-
-
-
- )} -
- ); -}; diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/AppsTagsFilter.tsx b/src/app/[locale]/(dashboard)/dashboard/_components/AppsTagsFilter.tsx deleted file mode 100644 index 7f56b77..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/_components/AppsTagsFilter.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import React, { useMemo } from "react"; -import { - Checkbox, - Listbox, - ListboxButton, - ListboxOption, - ListboxOptions, -} from "@inkonchain/ink-kit"; - -import { inkTags } from "./InkApp"; - -interface AppsTagsFilterProps { - selected: string[] | undefined; - setSelected: (value: string[] | undefined) => void; -} - -function capitalizeFirstLetter(value: string) { - return value.charAt(0).toUpperCase() + value.slice(1); -} - -const tags = inkTags - .map((tag) => ({ - value: tag, - label: capitalizeFirstLetter(tag), - })) - .sort((a, b) => a.label.localeCompare(b.label)); - -export const AppsTagsFilter: React.FC = ({ - selected, - setSelected, -}) => { - const selectedTags = useMemo( - () => tags.filter((tag) => selected?.includes(tag.value)), - [selected] - ); - - const toggleAll = React.useCallback( - (e: React.MouseEvent) => { - e.preventDefault(); - e.stopPropagation(); - - if (selectedTags.length > 0) { - setSelected([]); - } else { - setSelected(tags.map((t) => t.value)); - } - }, - [selectedTags, setSelected] - ); - - return ( - - -
-
- {selectedTags.length === 0 ? ( - All Tags - ) : ( - Tags - )} -
- {selectedTags.length > 0 && ( -
- {selectedTags.length} -
- )} -
-
- - 0 && selectedTags.length < tags.length - ? true - : undefined - } - /> - } - iconRight={<>} - > - Select all - - {tags.map((tag) => ( - }> -
- {tag.label} -
-
- ))} -
-
- ); -}; diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/TableRowPill.tsx b/src/app/[locale]/(dashboard)/dashboard/_components/TableRowPill.tsx deleted file mode 100644 index 68695b3..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/_components/TableRowPill.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { PropsWithChildren } from "react"; - -export const TableRowPill: React.FC = ({ children }) => { - return ( -
- {children} -
- ); -}; - -TableRowPill.displayName = "TableRowPill"; diff --git a/src/app/[locale]/(dashboard)/dashboard/layout.tsx b/src/app/[locale]/(dashboard)/dashboard/layout.tsx deleted file mode 100644 index 7ee935c..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/layout.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { InkLayout } from "@inkonchain/ink-kit"; -import { NextIntlClientProvider } from "next-intl"; -import { getMessages } from "next-intl/server"; - -import { HeaderContent } from "@/components/Header/HeaderContent"; -import { LogoLink } from "@/components/LogoLink"; -import { ToggleThemeShortcut } from "@/components/ToggleThemeShortcut"; -import { routing } from "@/routing"; - -export function generateStaticParams() { - return routing.locales.map((locale) => ({ locale })); -} - -export default async function HomeLayout({ - children, - params, -}: { - children: React.ReactNode; - params: Promise<{ locale: string }>; -}) { - const { locale } = await params; - const messages = await getMessages(); - - return ( - - - } headerContent={}> - {children} - - - ); -} diff --git a/src/app/[locale]/(dashboard)/dashboard/not-found.tsx b/src/app/[locale]/(dashboard)/dashboard/not-found.tsx deleted file mode 100644 index ab16a3c..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/not-found.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function NotFoundPage() { - return
This page is not available.
; -} diff --git a/src/app/[locale]/(dashboard)/dashboard/page.tsx b/src/app/[locale]/(dashboard)/dashboard/page.tsx deleted file mode 100644 index 3c1dff0..0000000 --- a/src/app/[locale]/(dashboard)/dashboard/page.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { Metadata } from "next"; - -import { AppSubmissionModal } from "@/components/AppSubmissionModal/AppSubmissionModal"; -import { AppSubmissionModalProvider } from "@/components/AppSubmissionModal/AppSubmissionModalContext"; -import { JsonLd } from "@/components/JsonLd"; -import { OnlyWithFeatureFlag } from "@/components/OnlyWithFeatureFlag"; -import { PageView } from "@/components/PageView"; - -import { AppsContent } from "./_components/AppsContent"; - -export const metadata: Metadata = { - title: "Ink Apps - Discover DeFi Applications on the Superchain", - description: - "Explore a curated collection of DeFi applications built on Ink, Kraken's Layer 2 blockchain. Find innovative financial tools, protocols, and services powered by the Superchain.", -}; - -export default function AppsPage() { - return ( - - - <> - - - - - - - - ); -} diff --git a/src/app/[locale]/(home)/HomeShortcuts.tsx b/src/app/[locale]/(home)/HomeShortcuts.tsx deleted file mode 100644 index f0a0e96..0000000 --- a/src/app/[locale]/(home)/HomeShortcuts.tsx +++ /dev/null @@ -1,87 +0,0 @@ -"use client"; -import { useFeatureFlag } from "@/hooks/useFeatureFlag"; -import { useCallbackOnKey } from "@/hooks/useGlobalKey"; -import { useRouterQuery } from "@/hooks/useRouterQuery"; -import { useRouter } from "@/routing"; - -export const HomeShortcuts = () => { - const router = useRouter(); - const query = useRouterQuery(); - const isMainnet = useFeatureFlag("mainnet"); - - const scrollToHash = (hash: string) => { - if (typeof window === "undefined") return false; - - const element = - hash === "#" ? document.documentElement : document.querySelector(hash); - - if (!element) return false; - - // If we're already at this hash, just scroll - if (window.location.hash === hash) { - element.scrollIntoView({ behavior: "smooth" }); - return true; - } - - // Update URL first without scrolling - router.push(hash as any, { scroll: false }); - - // Wait for next frame to ensure DOM update - requestAnimationFrame(() => { - // And then wait one more frame for safety - requestAnimationFrame(() => { - element.scrollIntoView({ behavior: "smooth" }); - }); - }); - - return true; - }; - - useCallbackOnKey({ - key: "q", - handler: () => scrollToHash("#"), - }); - - useCallbackOnKey({ - key: "a", - handler: () => scrollToHash("#about"), - }); - - useCallbackOnKey({ - key: "b", - handler: () => { - router.push( - isMainnet - ? { - pathname: "/dashboard", - query: { - ...Object.fromEntries(new URLSearchParams(query) || {}), - category: "bridge", - }, - } - : "/testnet-bridge" - ); - return true; - }, - }); - - useCallbackOnKey({ - key: "e", - handler: () => scrollToHash("#event"), - }); - - useCallbackOnKey({ - key: "h", - handler: () => { - router.push({ - pathname: "/community", - query: { - ...Object.fromEntries(new URLSearchParams(query) || {}), - }, - }); - return true; - }, - }); - - return null; -}; diff --git a/src/app/[locale]/(home)/RedirectNewNav.tsx b/src/app/[locale]/(home)/RedirectNewNav.tsx deleted file mode 100644 index 55d5a1c..0000000 --- a/src/app/[locale]/(home)/RedirectNewNav.tsx +++ /dev/null @@ -1,27 +0,0 @@ -"use client"; - -import { useEffect } from "react"; -import { useSearchParams } from "next/navigation"; - -import { useRouterQuery } from "@/hooks/useRouterQuery"; -import { routing, useRouter } from "@/routing"; - -export const RedirectNewNav = () => { - const searchParams = useSearchParams(); - const router = useRouter(); - const query = useRouterQuery(); - - useEffect(() => { - if (searchParams.get("newNav")) { - router.replace({ - pathname: routing.pathnames["/new"], - query: { - ...Object.fromEntries(new URLSearchParams(query) || {}), - newNav: "true", - }, - }); - } - }, [query, searchParams, router]); - - return null; -}; diff --git a/src/app/[locale]/(home)/bridge/page.tsx b/src/app/[locale]/(home)/bridge/page.tsx deleted file mode 100644 index 7c25541..0000000 --- a/src/app/[locale]/(home)/bridge/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { redirect } from "next/navigation"; - -export default function BridgePage() { - redirect("/dashboard?category=bridge"); -} diff --git a/src/app/[locale]/(home)/layout.tsx b/src/app/[locale]/(home)/layout.tsx deleted file mode 100644 index 0be681c..0000000 --- a/src/app/[locale]/(home)/layout.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { NextIntlClientProvider } from "next-intl"; -import { getMessages } from "next-intl/server"; - -import { Footer } from "@/components/Footer"; -import { MainBackground } from "@/components/MainBackground/MainBackground"; -import { routing } from "@/routing"; -import { getFeatureFlags } from "@/util/feature-flags"; - -import { HomeHeader } from "../_components/HomeHeader"; - -export function generateStaticParams() { - return routing.locales.map((locale) => ({ locale })); -} - -export default async function HomeLayout({ - children, - params, -}: { - children: React.ReactNode; - params: Promise<{ locale: string }>; -}) { - const { locale } = await params; - const messages = await getMessages(); - const featureFlags = await getFeatureFlags(); - const morpheus = featureFlags.morpheus; - - return ( - - -
-
{children}
-
-
-
-
- -
- ); -} diff --git a/src/app/[locale]/(home)/not-found.tsx b/src/app/[locale]/(home)/not-found.tsx deleted file mode 100644 index ab16a3c..0000000 --- a/src/app/[locale]/(home)/not-found.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function NotFoundPage() { - return
This page is not available.
; -} diff --git a/src/app/[locale]/(home)/page.tsx b/src/app/[locale]/(home)/page.tsx deleted file mode 100644 index 9ffd04f..0000000 --- a/src/app/[locale]/(home)/page.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { Metadata } from "next"; - -import { AnchorIntoView } from "@/components/AnchorIntoView"; -import { FlyWhenIntoView } from "@/components/FlyWhenIntoView"; -import { JsonLd } from "@/components/JsonLd"; -import { PageView } from "@/components/PageView"; -import { containerClasses } from "@/components/styles/container"; -import { classNames } from "@/util/classes"; - -import { AboutContent } from "../_components/AboutContent"; -import { ContactContent } from "../_components/ContactContent/ContactContent"; -import { DeveloperContent } from "../_components/DeveloperContent/DeveloperContent"; -import { EventContent } from "../_components/EventContent/EventContent"; -import { FloatingButtons, MainContent } from "../_components/MainContent"; - -import { HomeShortcuts } from "./HomeShortcuts"; -import { RedirectNewNav } from "./RedirectNewNav"; - -export const metadata: Metadata = { - metadataBase: new URL("https://inkonchain.com"), - title: "Ink - DeFi unleashed by Kraken, built on the Superchain", - description: - "Ink is a cutting-edge Layer 2 (L2) blockchain built on Optimism's Superchain and released by Kraken. As a natural evolution of our mission, Ink will serve as a seamless bridge to DeFi, empowering users to move onchain with confidence and ease. Join the community today.", - openGraph: { - url: "/", - images: [ - { - url: "/goodbye-chaos-hello-ink.png", - width: 1200, - height: 630, - alt: "Ink Logo", - }, - ], - }, - twitter: { - card: "summary_large_image", - images: ["/goodbye-chaos-hello-ink.png"], - }, -}; - -export default async function HomePage() { - return ( -
- - - - -
- -
- - -
-
- - -
- - - -
-
- - -
- -
-
- - -
- - - -
-
- -
-
- -
-
-
-
- ); -} diff --git a/src/app/[locale]/(info)/layout.tsx b/src/app/[locale]/(info)/layout.tsx index d092997..1ff9ab5 100644 --- a/src/app/[locale]/(info)/layout.tsx +++ b/src/app/[locale]/(info)/layout.tsx @@ -1,6 +1,4 @@ -import { Footer } from "@/components/Footer"; -import { AnimatedInkLogoIcon } from "@/components/icons/InkLogo"; -import { Link, routing } from "@/routing"; +import { routing } from "@/routing"; export async function generateStaticParams() { return routing.locales.map((locale) => ({ locale })); @@ -12,23 +10,8 @@ export default async function InfoLayout({ children: React.ReactNode; }) { return ( - <> -
- - - -
- -
-
-
-
{children}
-
-
-
-
-
-
- +
+
{children}
+
); } diff --git a/src/app/[locale]/(info)/privacy/privacy-after-mainnet.tsx b/src/app/[locale]/(info)/privacy/privacy-after-mainnet.tsx index 3c7727c..b9d575d 100644 --- a/src/app/[locale]/(info)/privacy/privacy-after-mainnet.tsx +++ b/src/app/[locale]/(info)/privacy/privacy-after-mainnet.tsx @@ -1,9 +1,8 @@ import { ColoredText } from "@/components/ColoredText"; +import { ContactUsPrivacyButton } from "@/components/ContactUsPrivacyButton"; import { containerClasses } from "@/components/styles/container"; import { EXTERNAL_LINKS, Link } from "@/routing"; -import { ContactUsPrivacyButton } from "../../_components/ContactUsPrivacyButton"; - export default function PrivacyAfterMainnet() { return ( <> diff --git a/src/app/[locale]/(info)/privacy/privacy-before-mainnet.tsx b/src/app/[locale]/(info)/privacy/privacy-before-mainnet.tsx index 19224dd..8ca4f9b 100644 --- a/src/app/[locale]/(info)/privacy/privacy-before-mainnet.tsx +++ b/src/app/[locale]/(info)/privacy/privacy-before-mainnet.tsx @@ -1,9 +1,8 @@ import { ColoredText } from "@/components/ColoredText"; +import { ContactUsPrivacyButton } from "@/components/ContactUsPrivacyButton"; import { containerClasses } from "@/components/styles/container"; import { EXTERNAL_LINKS, Link } from "@/routing"; -import { ContactUsPrivacyButton } from "../../_components/ContactUsPrivacyButton"; - export default function PrivacyBeforeMainnet() { return ( <> diff --git a/src/app/[locale]/(info)/terms/terms-after-mainnet.tsx b/src/app/[locale]/(info)/terms/terms-after-mainnet.tsx index 3695d32..fd6d7c0 100644 --- a/src/app/[locale]/(info)/terms/terms-after-mainnet.tsx +++ b/src/app/[locale]/(info)/terms/terms-after-mainnet.tsx @@ -1,9 +1,8 @@ import { ColoredText } from "@/components/ColoredText"; +import { ContactUsPrivacyButton } from "@/components/ContactUsPrivacyButton"; import { containerClasses } from "@/components/styles/container"; import { EXTERNAL_LINKS, Link } from "@/routing"; -import { ContactUsPrivacyButton } from "../../_components/ContactUsPrivacyButton"; - export default function TermsAfterMainnet() { return ( <> diff --git a/src/app/[locale]/_components/AboutContent/AboutContent.tsx b/src/app/[locale]/_components/AboutContent/AboutContent.tsx deleted file mode 100644 index 6e350d4..0000000 --- a/src/app/[locale]/_components/AboutContent/AboutContent.tsx +++ /dev/null @@ -1,202 +0,0 @@ -"use client"; - -import React from "react"; -import Image from "next/image"; -import { useTranslations } from "next-intl"; - -import { BulletCard } from "@/components/BulletCard"; -import { ColoredText } from "@/components/ColoredText"; -import { FlyWhenIntoView } from "@/components/FlyWhenIntoView"; -import { AboutBulletIcon } from "@/components/icons/bullets/About"; -import { KeyboardShortcut } from "@/components/KeyboardShortcut"; -import { PillLink } from "@/components/PillLink/PillLink"; -import { SpotlightSection } from "@/components/SpotlightSection"; -import { useOnWindowSize } from "@/hooks/useOnWindowSize"; - -import { MainCallToActionButton } from "../MainCallToActionButton"; - -import { PartnerCard } from "./_components/PartnerCard"; - -export const AboutContent = () => { - const t = useTranslations("Landing"); - - const isMobile = useOnWindowSize({ size: "sm" }); - - return ( - - - } - imagePosition="right" - title={

DeFi expectations

} - description={ -
-
- - } - title="Sub-second block times" - > - 1s block times Day 1, sub-second blocks coming soon. - - - } - title="Smol Gas" - > - Ape more, pay less. - - - } - title="Security" - > - Sequencer-level security to protect users from malicious intents - and exploits. - - - } - title="Interoperability" - > - A commitment to the seamless flow of capital across the - Superchain and beyond. - - - } - title="Unleashed by Kraken" - > - Ink will leverage Kraken{"'"}s security and crypto expertise to - support builders and users alike as they move towards - independent financial sovereignty. - - - } - title="Scaling Ethereum" - > - Ink is dedicated to scaling Ethereum with a powerful L2 that - enhances performance and accessibility. - -
-
- -
-
- } - pill={ - - -
- About -
-
- } - /> - - - -

- Unleashed by -
- Kraken -

-
- - -

Unlock onchain financial sovereignty

-
-
- -
-
- - } - heading="Built on the Superchain" - text="Built on the OP stack, one of the most trusted, scalable, and interoperable blockchains. Selected due to their commitment to building a better decentralized future for everyone." - /> - - } - heading="From the team behind Kraken" - text="A market-leading exchange built on trust, experience and innovation with over 10 million users. One of the key voices in taking crypto to the world over the last 10+ years." - /> -
-
-
- ); -}; diff --git a/src/app/[locale]/_components/AboutContent/WaitlistForm.tsx b/src/app/[locale]/_components/AboutContent/WaitlistForm.tsx deleted file mode 100644 index 95ed86f..0000000 --- a/src/app/[locale]/_components/AboutContent/WaitlistForm.tsx +++ /dev/null @@ -1,33 +0,0 @@ -"use client"; - -import { useActionState } from "react"; - -import { subscribeToGeneralWaitlist } from "@/actions/subscribe-to-braze"; -import { FormStatus } from "@/components/FormStatus"; -import { EmailIcon } from "@/components/icons/Email"; -import { InputWithSubmit } from "@/components/InputWithSubmit"; - -export const WaitlistForm: React.FC = () => { - const [state, formAction] = useActionState(subscribeToGeneralWaitlist, { - success: false, - error: undefined, - }); - - return ( -
- } - placeholder="Subscribe for Updates" - /> - - {state.error?.form && ( -
- -
- )} - - ); -}; diff --git a/src/app/[locale]/_components/AboutContent/index.ts b/src/app/[locale]/_components/AboutContent/index.ts deleted file mode 100644 index a2d238e..0000000 --- a/src/app/[locale]/_components/AboutContent/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./AboutContent"; diff --git a/src/app/[locale]/_components/BuildersDropdownContent.tsx b/src/app/[locale]/_components/BuildersDropdownContent.tsx deleted file mode 100644 index d9de3ec..0000000 --- a/src/app/[locale]/_components/BuildersDropdownContent.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import { HTMLAttributeAnchorTarget } from "react"; -import Image from "next/image"; -import { useTranslations } from "next-intl"; - -import { ArrowRightIcon } from "@/components/icons/ArrowRight"; -import { CommunityBulletIcon } from "@/components/icons/bullets/Community"; -import { DocsBulletIcon } from "@/components/icons/bullets/Docs"; -import { FaucetBulletIcon } from "@/components/icons/bullets/Faucet"; -import { GitHubBulletIcon } from "@/components/icons/bullets/GitHub"; -import { StatusBulletIcon } from "@/components/icons/bullets/Status"; -import { TestnetBulletIcon } from "@/components/icons/bullets/Testnet"; -import { ParallaxedHoverImage } from "@/components/ParallaxedHoverImage"; -import { useFeatureFlag } from "@/hooks/useFeatureFlag"; -import { useRouterQuery } from "@/hooks/useRouterQuery"; -import { EXTERNAL_LINKS, HrefProp, Link } from "@/routing"; - -export const BuildersDropdownContent = () => { - const query = useRouterQuery(); - const isMainnet = useFeatureFlag("mainnet"); - const t = useTranslations("Menu"); - - return ( -
-
- {/* Left side - Links */} -
- } - label={t("documentation")} - href={EXTERNAL_LINKS.documentation} - target="_blank" - /> - } - label={t("inkkit")} - href={EXTERNAL_LINKS.inkKit} - target="_blank" - /> - } - label={t("statusPage")} - href={EXTERNAL_LINKS.status} - target="_blank" - /> - } - label={t("explorer")} - href={ - isMainnet - ? EXTERNAL_LINKS.mainnetExplorerBlockscout - : EXTERNAL_LINKS.testnetExplorerBlockscout - } - target="_blank" - /> -
- {isMainnet ? ( - <> - - } - label={t("blockscout")} - href={EXTERNAL_LINKS.mainnetExplorerBlockscout} - target="_blank" - /> - - } - label={t("okx")} - href={EXTERNAL_LINKS.mainnetExplorerOkx} - target="_blank" - /> - - ) : ( - <> - - } - label={t("blockscout")} - href={EXTERNAL_LINKS.testnetExplorerBlockscout} - target="_blank" - /> - - } - label={t("routescan")} - href={EXTERNAL_LINKS.testnetExplorerRoutescan} - target="_blank" - /> - - )} -
- } - label={t("testnetFaucet")} - href={{ - pathname: "/faucet", - query: query, - }} - target="_blank" - /> - } - label={t("community")} - href={{ - pathname: "/community", - query: query, - }} - /> - } - label={t("github")} - href={{ - pathname: "https://github.com/inkonchain", - }} - target="_blank" - /> -
- - {/* Right side - Image */} -
- -
-
-
- ); -}; - -interface BuildersLinkProps { - icon: React.ReactNode; - label: React.ReactNode; - href: HrefProp; - target?: HTMLAttributeAnchorTarget; -} - -const BuildersLink = ({ icon, label, href, target }: BuildersLinkProps) => { - return ( - - {icon} -
- {label} - -
- - ); -}; diff --git a/src/app/[locale]/_components/ContactContent/ContactContent.tsx b/src/app/[locale]/_components/ContactContent/ContactContent.tsx deleted file mode 100644 index 82c8487..0000000 --- a/src/app/[locale]/_components/ContactContent/ContactContent.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from "react"; -import { useTranslations } from "next-intl"; - -import { Button } from "@/components/Button/Button"; -import { FlyWhenIntoView } from "@/components/FlyWhenIntoView"; -import { TwitterIcon } from "@/components/icons/Twitter"; -import { PurpleSpotlightSection } from "@/components/PurpleSpotlightSection"; -import { EXTERNAL_LINKS, Link } from "@/routing"; - -import { MainCallToActionButton } from "../MainCallToActionButton"; - -export interface ContactContentProps {} - -export const ContactContent: React.FC = ({}) => { - const t = useTranslations("Landing"); - return ( - - - The future isn't written, -
- it's waiting to be inked. - - } - callToAction={ - <> -
- -
- - - - - } - /> -
- ); -}; diff --git a/src/app/[locale]/_components/ContactUsHeaderButton.tsx b/src/app/[locale]/_components/ContactUsHeaderButton.tsx deleted file mode 100644 index a8238ef..0000000 --- a/src/app/[locale]/_components/ContactUsHeaderButton.tsx +++ /dev/null @@ -1,25 +0,0 @@ -"use client"; -import React from "react"; -import { useTranslations } from "next-intl"; - -import { ArrowOnHover } from "@/components/ArrowOnHover"; -import { useContactUsModalContext } from "@/components/ContactUsModal/ContactUsModalContext"; -import { KeyboardShortcut } from "@/components/KeyboardShortcut"; - -export interface ContactUsHeaderButtonProps { - className: string; -} - -export const ContactUsHeaderButton: React.FC = ({ - className, -}) => { - const t = useTranslations("Menu"); - const { setIsOpen } = useContactUsModalContext(); - return ( - - ); -}; diff --git a/src/app/[locale]/_components/DeveloperContent/DeveloperContent.tsx b/src/app/[locale]/_components/DeveloperContent/DeveloperContent.tsx deleted file mode 100644 index aa25e59..0000000 --- a/src/app/[locale]/_components/DeveloperContent/DeveloperContent.tsx +++ /dev/null @@ -1,264 +0,0 @@ -"use client"; -import Image from "next/image"; -import { useTranslations } from "next-intl"; - -import { ButtonLink } from "@/components/Button/ButtonLink"; -import { ColoredText } from "@/components/ColoredText"; -import { ArrowRightIcon } from "@/components/icons/ArrowRight"; -import { BridgeBulletIcon } from "@/components/icons/bullets/Bridge"; -import { BuildersBulletIcon } from "@/components/icons/bullets/Builders"; -import { DocsBulletIcon } from "@/components/icons/bullets/Docs"; -import { FaucetBulletIcon } from "@/components/icons/bullets/Faucet"; -import { GitHubBulletIcon } from "@/components/icons/bullets/GitHub"; -import { StatusBulletIcon } from "@/components/icons/bullets/Status"; -import { TestnetBulletIcon } from "@/components/icons/bullets/Testnet"; -import { KeyboardShortcut } from "@/components/KeyboardShortcut"; -import { PillLink } from "@/components/PillLink/PillLink"; -import { SpotlightSection } from "@/components/SpotlightSection"; -import { useFeatureFlag } from "@/hooks/useFeatureFlag"; -import { useOnWindowSize } from "@/hooks/useOnWindowSize"; -import { EXTERNAL_LINKS } from "@/routing"; - -import { MailButton } from "../MailButton/MailButton"; -import { MainCallToActionButton } from "../MainCallToActionButton"; -import { SubscribeButton } from "../SubscribeButton/SubscribeButton"; - -export const DeveloperContent = () => { - const t = useTranslations("Landing"); - const isMainnet = useFeatureFlag("mainnet"); - - const isMobile = useOnWindowSize({ size: "sm" }); - - return ( - <> -
- Write your code with Ink} - image={ - ink - } - imagePosition="left" - description={ -
-
-

- The next chapter of DeFi will be written with Ink. Ink is the - bridge between users and the builders shaping DeFi. Powered by - the Superchain and fortified by over a decade of crypto - expertise, this is where visionary builders turn code into - financial revolutions. -

-

- Our commitment to builders: Ink will provide you with a world- - class development environment, complete with the tools, - support, and users you need to bring your ideas to life. -

-

- {isMainnet ? ( - <> - Ink mainnet has now been unleashed! To stay updated, join - below. - - ) : ( - <> - Ink's testnet will be released soon. To stay updated, - join below. - - )} -

-
-
-
-
- -
- - - Docs - -
- -
-
-
- -
- - - Ink Kit - -
- -
-
-
- -
- - - Status - -
- -
-
-
- -
- - - Explorer - -
- -
-
-
- -
- - - Testnet Faucet - -
- -
-
-
- -
- - - Github - -
- -
-
- {!isMainnet && ( -
- -
- - - Bridge - -
- -
-
- )} -
-
-
-
-
- -
-
- -
-
- -
-
-
-
- } - pill={ - - -
- Builders{" "} - -
-
- } - /> -
- - ); -}; diff --git a/src/app/[locale]/_components/DeveloperContent/DeveloperUpdates.tsx b/src/app/[locale]/_components/DeveloperContent/DeveloperUpdates.tsx deleted file mode 100644 index 9ea888e..0000000 --- a/src/app/[locale]/_components/DeveloperContent/DeveloperUpdates.tsx +++ /dev/null @@ -1,26 +0,0 @@ -"use client"; - -import { useActionState } from "react"; - -import { subscribeToDeveloperWaitlist } from "@/actions/subscribe-to-braze"; -import { MailIcon } from "@/components/icons/Mail"; -import { InputWithSubmit } from "@/components/InputWithSubmit"; - -export const DeveloperUpdates = () => { - const [_, formAction] = useActionState(subscribeToDeveloperWaitlist, { - success: false, - error: undefined, - }); - - return ( -
- } - /> - - ); -}; diff --git a/src/app/[locale]/_components/EventContent/EventContent.tsx b/src/app/[locale]/_components/EventContent/EventContent.tsx deleted file mode 100644 index e0492e5..0000000 --- a/src/app/[locale]/_components/EventContent/EventContent.tsx +++ /dev/null @@ -1,175 +0,0 @@ -import { PropsWithChildren } from "react"; -import { Card, CardContent, Tag } from "@inkonchain/ink-kit"; -import Image from "next/image"; -import { useTranslations } from "next-intl"; - -import { ButtonLink } from "@/components/Button/ButtonLink"; -import { ColoredText } from "@/components/ColoredText"; -import { CalendarIcon } from "@/components/icons/Calendar"; -import { DotsInCircleIcon } from "@/components/icons/DotsInCircle"; -import { LocationIcon } from "@/components/icons/Location"; -import { MailIcon } from "@/components/icons/Mail"; -import { ParallaxedHoverImage } from "@/components/ParallaxedHoverImage"; -import { EXTERNAL_LINKS, HrefProp } from "@/routing"; -import { classNames } from "@/util/classes"; - -export const EventContent = () => { - const t = useTranslations("events.ethdenver"); - return ( -
-
- {"Moose"} -
-
-
- Event -
- }> - {t("date")} - - }> - {t("location")} - -
-
-
- -

{t("title")}

-
-

{t("description")}

-
-
- - } - > - {t("cta")} - -
-
-
- ); -}; - -export interface EventPillProps { - icon?: React.ReactNode; -} - -export const EventPill: React.FC = ({ - icon = , - children, -}) => { - return ( -
- - {icon} - {children} - -
- ); -}; - -export interface SpecificEventCardProps { - title: string; - description: string; - cta: string; - link: HrefProp; - date: string; - location: string; - image: string; - imageAlt: string; - className?: string; - layout: "horizontal" | "vertical"; - color?: "purple" | "purple-dark"; -} - -export const SpecificEventCard = ({ - title, - description, - cta, - link, - date, - location, - image, - imageAlt, - layout = "vertical", - color = "purple", - className, -}: SpecificEventCardProps) => { - return ( - - - - {date} - - - - {location} - - - } - > - - - } - imageLocation={layout === "horizontal" ? "left" : "top"} - variant={color === "purple" ? "light-purple" : "secondary"} - > - - - } - > - {cta} - -
- } - /> - - ); -}; diff --git a/src/app/[locale]/_components/EventContent/GlossyPill.tsx b/src/app/[locale]/_components/EventContent/GlossyPill.tsx deleted file mode 100644 index bd33ecd..0000000 --- a/src/app/[locale]/_components/EventContent/GlossyPill.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from "react"; - -import { IconProps } from "@/components/icons/types"; - -export interface GlossyPillProps { - Icon: React.FC; - text: string; -} - -export const GlossyPill = ({ Icon, text }: GlossyPillProps) => { - return ( -
- - {} - {text} - -
- ); -}; - -GlossyPill.displayName = "GlossyPill"; diff --git a/src/app/[locale]/_components/HeaderFaucetButton.tsx b/src/app/[locale]/_components/HeaderFaucetButton.tsx deleted file mode 100644 index e8449d2..0000000 --- a/src/app/[locale]/_components/HeaderFaucetButton.tsx +++ /dev/null @@ -1,25 +0,0 @@ -"use client"; - -import { useState } from "react"; -import Confetti from "react-confetti"; - -import { FaucetButton } from "@/components/FaucetButton"; - -export const HeaderFaucetButton: React.FC = () => { - const [requestSuccess, setRequestSuccess] = useState(null); - - return ( - <> - - {requestSuccess && ( - - )} - - ); -}; diff --git a/src/app/[locale]/new/_components/Home/HomeApps.tsx b/src/app/[locale]/_components/Home/HomeApps.tsx similarity index 92% rename from src/app/[locale]/new/_components/Home/HomeApps.tsx rename to src/app/[locale]/_components/Home/HomeApps.tsx index 29b17a3..254a088 100644 --- a/src/app/[locale]/new/_components/Home/HomeApps.tsx +++ b/src/app/[locale]/_components/Home/HomeApps.tsx @@ -19,7 +19,7 @@ export const HomeApps = () => { Discover apps on Ink { const t = useTranslations("events"); - const ethDenverEventProps: SpecificEventCardProps = { + const ethDenverEventProps: EventCardProps = { title: t("ethdenver.cardTitle"), description: t("ethdenver.description"), cta: t("ethdenver.cta"), @@ -21,5 +19,5 @@ export const HomeEvent = () => { imageAlt: "ETHDenver", layout: "horizontal", }; - return ; + return ; }; diff --git a/src/app/[locale]/new/_components/Home/HomeTagLine.tsx b/src/app/[locale]/_components/Home/HomeTagLine.tsx similarity index 94% rename from src/app/[locale]/new/_components/Home/HomeTagLine.tsx rename to src/app/[locale]/_components/Home/HomeTagLine.tsx index 1d5e7ef..602a479 100644 --- a/src/app/[locale]/new/_components/Home/HomeTagLine.tsx +++ b/src/app/[locale]/_components/Home/HomeTagLine.tsx @@ -18,7 +18,7 @@ export const HomeTagLine = () => { buttons={ <> } size="home" diff --git a/src/app/[locale]/_components/HomeHeader.tsx b/src/app/[locale]/_components/HomeHeader.tsx deleted file mode 100644 index ee93f86..0000000 --- a/src/app/[locale]/_components/HomeHeader.tsx +++ /dev/null @@ -1,135 +0,0 @@ -"use client"; - -import React, { useRef } from "react"; -import { Popover, PopoverButton, PopoverPanel } from "@headlessui/react"; -import { useTranslations } from "next-intl"; - -import { ArrowOnHover } from "@/components/ArrowOnHover"; -import { Header } from "@/components/Header"; -import { KeyboardShortcut } from "@/components/KeyboardShortcut"; -import { PillContainer } from "@/components/PillContainer"; -import { useFeatureFlag } from "@/hooks/useFeatureFlag"; -import { useRouterQuery } from "@/hooks/useRouterQuery"; -import { Link } from "@/routing"; - -import { BuildersDropdownContent } from "./BuildersDropdownContent"; -import { ContactUsHeaderButton } from "./ContactUsHeaderButton"; -import { MobileNavItems } from "./MobileNavItems"; - -export const HomeHeader = () => { - const searchParams = useRouterQuery(); - const isMainnet = useFeatureFlag("mainnet"); - const linkClasses = - "px-2.5 py-2 group text-center flex items-center gap-1 dark:opacity-75 rounded-4xl uppercase"; - const t = useTranslations("Menu"); - - return ( -
}> - - - {t("about")} - - - - - {t("bridge")} - - - - - - - {t("community")} - - - - - -
- ); -}; - -const BuildersLinkWithPopover: React.FC<{ - linkClasses: string; - searchParams: string; -}> = ({ linkClasses, searchParams }) => { - const t = useTranslations("Menu"); - const ref = useRef(null); - - const togglePopover = (button: HTMLButtonElement) => { - if (button) { - const active = document.activeElement; - button.click(); - button.blur(); - if (active instanceof HTMLElement) { - active.focus(); - } - } - }; - - return ( - - {({ open }) => ( - <> - ) => { - if (!open && ref.current) { - togglePopover(ref.current); - } - }} - > - {t("builders")} - - - - - - { - if (open && ref.current) { - togglePopover(ref.current); - } - }} - > - - - - )} - - ); -}; diff --git a/src/app/[locale]/new/_components/InkLogo.tsx b/src/app/[locale]/_components/InkLogo.tsx similarity index 93% rename from src/app/[locale]/new/_components/InkLogo.tsx rename to src/app/[locale]/_components/InkLogo.tsx index 9062640..3cbdf55 100644 --- a/src/app/[locale]/new/_components/InkLogo.tsx +++ b/src/app/[locale]/_components/InkLogo.tsx @@ -17,7 +17,7 @@ export const InkLogo: React.FC = () => { return ( { - const { setIsOpen } = useContactUsModalContext(); - - return ( -
- - -
- ); -}; diff --git a/src/app/[locale]/_components/MainCallToActionButton.tsx b/src/app/[locale]/_components/MainCallToActionButton.tsx deleted file mode 100644 index 28a4ea1..0000000 --- a/src/app/[locale]/_components/MainCallToActionButton.tsx +++ /dev/null @@ -1,166 +0,0 @@ -"use client"; -import React from "react"; -import { Button, ButtonProps } from "@inkonchain/ink-kit"; - -import { ButtonLink as LegacyButtonLink } from "@/components/Button/ButtonLink"; -import { AppsIcon } from "@/components/icons/Apps"; -import { BridgeIcon } from "@/components/icons/Bridge"; -import { OnlyWithFeatureFlag } from "@/components/OnlyWithFeatureFlag"; -import { useRouterQuery } from "@/hooks/useRouterQuery"; -import { Link } from "@/routing"; -import { classNames } from "@/util/classes"; - -export interface MainCallToActionButtonProps { - variant?: ButtonProps["variant"] | "spotlight"; - copy: { - bridgeNow: string; - exploreApps: string; - }; - /** For some reason, the only button that should have a larger width is the main "hero" call to action button */ - isMainCallToAction?: boolean; -} - -export const MainCallToActionButton: React.FC = ( - props -) => { - return ( - } - > - - - ); -}; - -const BridgeNowMainCallToActionButton: React.FC< - MainCallToActionButtonProps -> = ({ variant = "primary", copy, isMainCallToAction = false }) => { - const query = useRouterQuery(); - if (variant === "spotlight") { - /** TODO: Remove this if the button component is updated to have this variant */ - return ( - - } - > - - {copy.bridgeNow} - - - ); - } - - return ( - - ); -}; - -const ExploreAppsMainCallToActionButton: React.FC< - MainCallToActionButtonProps -> = ({ variant = "primary", copy, isMainCallToAction = false }) => { - const query = useRouterQuery(); - if (variant === "spotlight") { - /** TODO: Remove this if the button component is updated to have this variant */ - return ( - - } - > - - {copy.exploreApps} - - - ); - } - - return ( - - ); -}; diff --git a/src/app/[locale]/_components/MainContent/Countdown.tsx b/src/app/[locale]/_components/MainContent/Countdown.tsx deleted file mode 100644 index a9604a7..0000000 --- a/src/app/[locale]/_components/MainContent/Countdown.tsx +++ /dev/null @@ -1,149 +0,0 @@ -"use client"; -import React, { useState } from "react"; -import { AnimatePresence, motion } from "framer-motion"; -import Image from "next/image"; -import { useTheme } from "next-themes"; - -import { ColoredText } from "@/components/ColoredText"; -import { SquareDividerIcon } from "@/components/icons/SquareDivider"; -import { OnlyWithFeatureFlag } from "@/components/OnlyWithFeatureFlag"; -import { PillContainer } from "@/components/PillContainer"; -import { ResponsiveText } from "@/components/ResponsiveText"; -import { useOnInterval } from "@/hooks/useOnInterval"; -import { useRouterQuery } from "@/hooks/useRouterQuery"; -import { EXTERNAL_LINKS, Link } from "@/routing"; -import { largeMovementTransition } from "@/util/transitions"; - -type TimeChunks = [number, number, number, number]; - -const RELEASE_DATE = new Date("2024-11-11T04:20:00Z").getTime(); -function getRemainingTime(): TimeChunks { - const now = Date.now(); - const seconds = Math.floor(RELEASE_DATE - now) / 1000; - - const days = Math.floor(seconds / (60 * 60 * 24)); - const hours = Math.floor((seconds % (60 * 60 * 24)) / (60 * 60)); - const minutes = Math.floor((seconds % (60 * 60)) / 60); - const secondsRemaining = Math.floor(seconds % 60); - - return [days, hours, minutes, secondsRemaining]; -} - -export interface CountdownProps {} - -export const Countdown: React.FC = ({}) => { - const { resolvedTheme } = useTheme(); - const query = useRouterQuery(); - const queryWithCategory = query - ? `${query}&category=bridge` - : "category=bridge"; - - let [currentTime, setCurrentTime] = - useState<[number, number, number, number]>(); - useOnInterval(() => setCurrentTime(getRemainingTime()), 350); - - return ( - - {currentTime ? ( - - - {resolvedTheme === "light" ? ( - testnet-dark - ) : ( - testnet - )} - - -
- - Testnet live early! - -
-
-
- - - - - - - -
- - } - > - - Mainnet is live! - - Bridge to Ink - - -
-
-
- ) : ( -
- {/** Prevents the pill appearance from moving the layout */} -   -
- )} -
- ); -}; - -export interface TimeChunkProps { - value: number; - label: string; -} - -export const TimeChunk: React.FC = ({ value, label }) => { - return ( -
- - - - {value < 10 ? "0" : ""} - {value} - - - - - - -
- ); -}; diff --git a/src/app/[locale]/_components/MainContent/FloatingButtons.tsx b/src/app/[locale]/_components/MainContent/FloatingButtons.tsx deleted file mode 100644 index 64d2a3f..0000000 --- a/src/app/[locale]/_components/MainContent/FloatingButtons.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import Image from "next/image"; - -import { LanguageSwitcher } from "@/components/LocaleSwitcher"; -import { OnlyWithFeatureFlag } from "@/components/OnlyWithFeatureFlag"; -import { PillContainer } from "@/components/PillContainer"; -import { ThemeToggle } from "@/components/ThemeToggle"; -import { EXTERNAL_LINKS, Link } from "@/routing"; - -import { Disappearing } from "../../../../components/Disappearing"; - -import { Countdown } from "./Countdown"; - -export const FloatingButtons = async ({ - showCountdown = true, - disableDisappearing = false, - showSuperchain = true, -}: { - showCountdown?: boolean; - disableDisappearing?: boolean; - showSuperchain?: boolean; -}) => { - const scrollProps = { - scrollMin: 300, - scrollMax: 600, - }; - return ( - <> - - - - - - - - - {showSuperchain && ( - -
- - built on the superchain - -
-
- )} - - - {showSuperchain && ( -
- - built on the superchain - -
- )} - {showCountdown && } -
- - ); -}; diff --git a/src/app/[locale]/_components/MainContent/MainContent.tsx b/src/app/[locale]/_components/MainContent/MainContent.tsx deleted file mode 100644 index d455110..0000000 --- a/src/app/[locale]/_components/MainContent/MainContent.tsx +++ /dev/null @@ -1,139 +0,0 @@ -"use client"; -import React from "react"; -import { Button } from "@inkonchain/ink-kit"; -import Image from "next/image"; -import { useTranslations } from "next-intl"; - -import { BigScalableTitle } from "@/components/BigScallableTitle"; -import { ColoredText } from "@/components/ColoredText"; -import { HeroSection } from "@/components/HeroSection"; -import { DotsIcon } from "@/components/icons/Dots"; -import { OnlyWithFeatureFlag } from "@/components/OnlyWithFeatureFlag"; -import { PillContainer } from "@/components/PillContainer"; -import { RotatingText } from "@/components/RotatingText"; -import { SocialLinksRow } from "@/components/SocialLinksRow"; -import { useRouterQuery } from "@/hooks/useRouterQuery"; -import { EXTERNAL_LINKS, Link } from "@/routing"; - -import { MainCallToActionButton } from "../MainCallToActionButton"; - -import { Countdown } from "./Countdown"; - -export const MainContent: React.FC<{ - disableRotating?: boolean; -}> = ({ disableRotating }) => { - const t = useTranslations("Landing"); - const query = useRouterQuery(); - - return ( - - {t("mainContentTagLine")}} - subtitle={ - - } - variant="reverse-purple" - /> -
-
- - - - - - } - > - - -
- -
- -
- - built on the superchain - -
- -
- -
-
- ); -}; - -const TagLineWithHighlight: React.FC<{ - text?: string; - disableRotating?: boolean; -}> = ({ text, disableRotating }) => { - const [first, second] = text?.split("|") || []; - const sections = second?.split(",") || []; - return ( -
- {/** Height should match the height of the PillContainer+Rotating text for the text to be aligned. */} - - {first} - - {!disableRotating && ( - - { - return i === sections.length - 1 ? ( - {s} - ) : ( - s - ); - })} - /> - - )} -
- ); -}; diff --git a/src/app/[locale]/_components/MainContent/index.ts b/src/app/[locale]/_components/MainContent/index.ts deleted file mode 100644 index f0c681a..0000000 --- a/src/app/[locale]/_components/MainContent/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./FloatingButtons"; -export * from "./MainContent"; diff --git a/src/app/[locale]/new/_components/MainPageBackground.tsx b/src/app/[locale]/_components/MainPageBackground.tsx similarity index 93% rename from src/app/[locale]/new/_components/MainPageBackground.tsx rename to src/app/[locale]/_components/MainPageBackground.tsx index 536a824..f5f4c01 100644 --- a/src/app/[locale]/new/_components/MainPageBackground.tsx +++ b/src/app/[locale]/_components/MainPageBackground.tsx @@ -10,7 +10,7 @@ export const MainPageBackground: React.FC = () => { return null; - if (path === "/new") { + if (path === "/") { return ; } diff --git a/src/app/[locale]/new/_components/MobileNav.tsx b/src/app/[locale]/_components/MobileNav.tsx similarity index 80% rename from src/app/[locale]/new/_components/MobileNav.tsx rename to src/app/[locale]/_components/MobileNav.tsx index f438597..4647ae8 100644 --- a/src/app/[locale]/new/_components/MobileNav.tsx +++ b/src/app/[locale]/_components/MobileNav.tsx @@ -23,12 +23,12 @@ export function MobileNav() { , children: ( @@ -37,12 +37,12 @@ export function MobileNav() { ), }, { - href: "/new/apps", + href: "/apps", asChild: true, icon: , children: ( @@ -51,12 +51,12 @@ export function MobileNav() { ), }, { - href: "/new/bridge", + href: "/bridge", asChild: true, icon: , children: ( @@ -67,12 +67,12 @@ export function MobileNav() { ...(hasVerifyPage ? [ { - href: "/new/verify", + href: "/verify", asChild: true, icon: , children: ( @@ -83,12 +83,12 @@ export function MobileNav() { ] : []), { - href: "/new/build", + href: "/build", asChild: true, icon: , children: ( @@ -97,12 +97,12 @@ export function MobileNav() { ), }, { - href: "/new/community", + href: "/community", asChild: true, icon: , children: ( @@ -111,12 +111,12 @@ export function MobileNav() { ), }, { - href: "/new/about", + href: "/about", asChild: true, icon: , children: ( diff --git a/src/app/[locale]/_components/MobileNavItems.tsx b/src/app/[locale]/_components/MobileNavItems.tsx deleted file mode 100644 index 7112fd1..0000000 --- a/src/app/[locale]/_components/MobileNavItems.tsx +++ /dev/null @@ -1,238 +0,0 @@ -"use client"; - -import Image from "next/image"; -import { useTranslations } from "next-intl"; - -import { useContactUsModalContext } from "@/components/ContactUsModal/ContactUsModalContext"; -import { ArrowRightIcon } from "@/components/icons/ArrowRight"; -import { AboutBulletIcon } from "@/components/icons/bullets/About"; -import { BridgeBulletIcon } from "@/components/icons/bullets/Bridge"; -import { BuildersBulletIcon } from "@/components/icons/bullets/Builders"; -import { CommunityBulletIcon } from "@/components/icons/bullets/Community"; -import { ContactBulletIcon } from "@/components/icons/bullets/Contact"; -import { DocsBulletIcon } from "@/components/icons/bullets/Docs"; -import { FaucetBulletIcon } from "@/components/icons/bullets/Faucet"; -import { GitHubBulletIcon } from "@/components/icons/bullets/GitHub"; -import { StatusBulletIcon } from "@/components/icons/bullets/Status"; -import { TestnetBulletIcon } from "@/components/icons/bullets/Testnet"; -import { useMobileMenuContext } from "@/components/MobileMenu/MobileMenuContext"; -import { useFeatureFlag } from "@/hooks/useFeatureFlag"; -import { useRouterQuery } from "@/hooks/useRouterQuery"; -import { EXTERNAL_LINKS, Link } from "@/routing"; - -export const MobileNavItems = () => { - const { setIsOpen } = useMobileMenuContext(); - const { setIsOpen: setIsContactUsModalOpen } = useContactUsModalContext(); - const query = useRouterQuery(); - const isMainnet = useFeatureFlag("mainnet"); - const t = useTranslations("Menu"); - - const linkClasses = "flex items-center gap-4 flex-1 uppercase"; - - return ( -
- - setIsOpen(false)} - > - - - {t("about")} - - - - - setIsOpen(false)} - > - - - {t("bridge")} - - - - - setIsOpen(false)} - > - - - {t("builders")} - - - -
- - setIsOpen(false)} - > - - - {t("documentation")} - - - - - setIsOpen(false)} - > - - - {t("inkkit")} - - - - - setIsOpen(false)} - > - - - {t("testnetFaucet")} - - - - - setIsOpen(false)} - > - - - {t("statusPage")} - - - - - setIsOpen(false)} - > - - - {t("explorer")} - - - -
- - setIsOpen(false)} - > - - Explorer - {t("blockscout")} - - - - - setIsOpen(false)} - > - - Explorer - {t("okx")} - - - -
-
- - - setIsOpen(false)} - > - - - {t("community")} - - - - - - -
- ); -}; - -const MobileNavRow = ({ children }: { children: React.ReactNode }) => ( -
- {children} -
-); - -const MobileNavContent = ({ children }: { children: React.ReactNode }) => ( - <> -
{children}
- - -); diff --git a/src/app/[locale]/_components/NewsletterForm/RoutedNewsletterForm.tsx b/src/app/[locale]/_components/NewsletterForm/RoutedNewsletterForm.tsx deleted file mode 100644 index d60a2df..0000000 --- a/src/app/[locale]/_components/NewsletterForm/RoutedNewsletterForm.tsx +++ /dev/null @@ -1,65 +0,0 @@ -"use client"; - -import { useEffect } from "react"; - -import { useCallbackOnKey } from "@/hooks/useGlobalKey"; -import { usePrevious } from "@/hooks/usePrevious"; -import { usePathname, useRouter } from "@/routing"; - -import { NewsletterForm } from "./NewsletterForm"; -import { useNewsletterFormContext } from "./NewsletterFormContext"; - -export interface RoutedNewsletterFormProps { - copy: { - ctaLabel: string; - }; -} - -export const RoutedNewsletterForm: React.FC = ({ - copy, -}) => { - const { isFormOpen, setIsFormOpen } = useNewsletterFormContext(); - const router = useRouter(); - - const pathname = usePathname(); - const lastPathName = usePrevious(pathname); - - useEffect(() => { - if (pathname !== lastPathName) { - setIsFormOpen(false); - } - }, [pathname, lastPathName, setIsFormOpen]); - - useCallbackOnKey({ - key: "s", - handler: () => { - if (pathname !== "/") { - router.push("/"); - // When the route changes, sometimes the state gets reset for some reason. - // `isFormOpen` stays "false", but the `AnimatePresence` still plays, which leaves us into a weird state. - // This workarounds seems to fix it consistently by delaying the state update. - setTimeout(() => setIsFormOpen(true), 500); - } else { - setIsFormOpen(true); - } - return true; - }, - }); - useCallbackOnKey({ - key: "Escape", - isDisabled: !isFormOpen, - handler: () => { - setIsFormOpen(false); - return true; - }, - }); - - return ( - - ); -}; diff --git a/src/app/[locale]/_components/NewsletterForm/StandaloneNewsletterForm.tsx b/src/app/[locale]/_components/NewsletterForm/StandaloneNewsletterForm.tsx deleted file mode 100644 index 934e8c9..0000000 --- a/src/app/[locale]/_components/NewsletterForm/StandaloneNewsletterForm.tsx +++ /dev/null @@ -1,32 +0,0 @@ -"use client"; - -import { useState } from "react"; - -import { useCallbackOnKey } from "@/hooks/useGlobalKey"; - -import { NewsletterForm } from "./NewsletterForm"; - -export interface StandaloneNewsletterFormProps { - copy: { - ctaLabel: string; - }; -} - -export const StandaloneNewsletterForm: React.FC< - StandaloneNewsletterFormProps -> = ({ copy }) => { - const [isFormOpen, setIsFormOpen] = useState(false); - - useCallbackOnKey({ - key: "Escape", - isDisabled: !isFormOpen, - handler: () => { - setIsFormOpen(false); - return true; - }, - }); - - return ( - - ); -}; diff --git a/src/app/[locale]/_components/NewsletterForm/index.ts b/src/app/[locale]/_components/NewsletterForm/index.ts deleted file mode 100644 index 88097c8..0000000 --- a/src/app/[locale]/_components/NewsletterForm/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./RoutedNewsletterForm"; -export * from "./StandaloneNewsletterForm"; diff --git a/src/app/[locale]/new/_components/PageHeader.tsx b/src/app/[locale]/_components/PageHeader.tsx similarity index 100% rename from src/app/[locale]/new/_components/PageHeader.tsx rename to src/app/[locale]/_components/PageHeader.tsx diff --git a/src/app/[locale]/new/apps/_components/RoutedLayout.tsx b/src/app/[locale]/_components/RoutedLayout.tsx similarity index 65% rename from src/app/[locale]/new/apps/_components/RoutedLayout.tsx rename to src/app/[locale]/_components/RoutedLayout.tsx index af6f986..1548098 100644 --- a/src/app/[locale]/new/apps/_components/RoutedLayout.tsx +++ b/src/app/[locale]/_components/RoutedLayout.tsx @@ -3,11 +3,11 @@ import { Suspense } from "react"; import { InkLayout } from "@inkonchain/ink-kit"; -import { ConnectWalletButton } from "@/app/[locale]/_components/ConnectWalletButton"; +import { ConnectWalletButton } from "@/components/ConnectWalletButton"; -import { InkLogo, InkLogoImage } from "../../_components/InkLogo"; -import { MobileNav } from "../../_components/MobileNav"; -import { SideNav } from "../../_components/SideNav"; +import { InkLogo, InkLogoImage } from "./InkLogo"; +import { MobileNav } from "./MobileNav"; +import { SideNav } from "./SideNav"; export function RoutedLayout({ children }: { children: React.ReactNode }) { return ( diff --git a/src/app/[locale]/new/_components/SideNav.tsx b/src/app/[locale]/_components/SideNav.tsx similarity index 78% rename from src/app/[locale]/new/_components/SideNav.tsx rename to src/app/[locale]/_components/SideNav.tsx index f1489e3..a61df56 100644 --- a/src/app/[locale]/new/_components/SideNav.tsx +++ b/src/app/[locale]/_components/SideNav.tsx @@ -23,23 +23,23 @@ export const SideNav = () => { { asChild: true, children: ( - + Home ), - href: "/new", + href: "/", icon: , }, { asChild: true, - children: Apps, - href: "/new/apps", + children: Apps, + href: "/apps", icon: , }, { asChild: true, - children: Bridge, - href: "/new/bridge", + children: Bridge, + href: "/bridge", icon: , }, @@ -47,28 +47,28 @@ export const SideNav = () => { ? [ { asChild: true, - children: Verify, - href: "/new/verify", + children: Verify, + href: "/verify", icon: , }, ] : []), { asChild: true, - children: Build, - href: "/new/builders", + children: Build, + href: "/builders", icon: , }, { asChild: true, - children: Community, - href: "/new/community", + children: Community, + href: "/community", icon: , }, { asChild: true, - children: About, - href: "/new/about", + children: About, + href: "/about", icon: , }, ]} diff --git a/src/app/[locale]/_components/SubscribeButton/SubscribeButton.tsx b/src/app/[locale]/_components/SubscribeButton/SubscribeButton.tsx deleted file mode 100644 index 56f5174..0000000 --- a/src/app/[locale]/_components/SubscribeButton/SubscribeButton.tsx +++ /dev/null @@ -1,27 +0,0 @@ -"use client"; - -import { Button } from "@inkonchain/ink-kit"; -import { useTranslations } from "next-intl"; - -import { BellIcon } from "@/components/icons/Bell"; -import { useNewsletterModalContext } from "@/components/NewsletterModal/NewsletterModalContext"; - -export const SubscribeButton = () => { - const t = useTranslations("Landing"); - const { setIsOpen } = useNewsletterModalContext(); - - return ( - - ); -}; diff --git a/src/app/[locale]/_components/WalletHeader.tsx b/src/app/[locale]/_components/WalletHeader.tsx deleted file mode 100644 index f791f9a..0000000 --- a/src/app/[locale]/_components/WalletHeader.tsx +++ /dev/null @@ -1,22 +0,0 @@ -"use client"; - -import { BridgeButton } from "@/components/BridgeButton"; -import { ColoredText } from "@/components/ColoredText"; -import { WalletConnector } from "@/components/WalletConnector"; - -import { HeaderFaucetButton } from "./HeaderFaucetButton"; - -export const WalletHeader = () => { - return ( - <> -
- - EXPERIMENTAL: - - - - -
- - ); -}; diff --git a/src/app/[locale]/new/about/_components/AboutContent.tsx b/src/app/[locale]/about/_components/AboutContent.tsx similarity index 98% rename from src/app/[locale]/new/about/_components/AboutContent.tsx rename to src/app/[locale]/about/_components/AboutContent.tsx index a23d8f1..01377bf 100644 --- a/src/app/[locale]/new/about/_components/AboutContent.tsx +++ b/src/app/[locale]/about/_components/AboutContent.tsx @@ -4,13 +4,14 @@ import { CardContent } from "@inkonchain/ink-kit"; import Image from "next/image"; import { useTranslations } from "next-intl"; -import { PartnerCard } from "@/app/[locale]/_components/AboutContent/_components/PartnerCard"; import { ColoredText } from "@/components/ColoredText"; import { FlyWhenIntoView } from "@/components/FlyWhenIntoView"; import { ParallaxedHoverImage } from "@/components/ParallaxedHoverImage"; import { useOnWindowSize } from "@/hooks/useOnWindowSize"; import { EXTERNAL_LINKS } from "@/routing"; +import { PartnerCard } from "./PartnerCard"; + export function AboutContent() { const isMobile = useOnWindowSize({ size: "sm" }); const t = useTranslations("Landing"); diff --git a/src/app/[locale]/_components/AboutContent/_components/PartnerCard.tsx b/src/app/[locale]/about/_components/PartnerCard.tsx similarity index 100% rename from src/app/[locale]/_components/AboutContent/_components/PartnerCard.tsx rename to src/app/[locale]/about/_components/PartnerCard.tsx diff --git a/src/app/[locale]/new/about/page.tsx b/src/app/[locale]/about/page.tsx similarity index 100% rename from src/app/[locale]/new/about/page.tsx rename to src/app/[locale]/about/page.tsx diff --git a/src/app/[locale]/new/apps/[category]/page.tsx b/src/app/[locale]/apps/[category]/page.tsx similarity index 100% rename from src/app/[locale]/new/apps/[category]/page.tsx rename to src/app/[locale]/apps/[category]/page.tsx diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/AppCard.tsx b/src/app/[locale]/apps/_components/AppCard.tsx similarity index 100% rename from src/app/[locale]/(dashboard)/dashboard/_components/AppCard.tsx rename to src/app/[locale]/apps/_components/AppCard.tsx diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/AppLinks.tsx b/src/app/[locale]/apps/_components/AppLinks.tsx similarity index 100% rename from src/app/[locale]/(dashboard)/dashboard/_components/AppLinks.tsx rename to src/app/[locale]/apps/_components/AppLinks.tsx diff --git a/src/app/[locale]/new/apps/_components/AppMainnetToggle.tsx b/src/app/[locale]/apps/_components/AppMainnetToggle.tsx similarity index 100% rename from src/app/[locale]/new/apps/_components/AppMainnetToggle.tsx rename to src/app/[locale]/apps/_components/AppMainnetToggle.tsx diff --git a/src/app/[locale]/new/apps/_components/AppsCategoryFilter.tsx b/src/app/[locale]/apps/_components/AppsCategoryFilter.tsx similarity index 97% rename from src/app/[locale]/new/apps/_components/AppsCategoryFilter.tsx rename to src/app/[locale]/apps/_components/AppsCategoryFilter.tsx index ce35c30..67242f1 100644 --- a/src/app/[locale]/new/apps/_components/AppsCategoryFilter.tsx +++ b/src/app/[locale]/apps/_components/AppsCategoryFilter.tsx @@ -32,7 +32,7 @@ export const AppsCategoryFilter = ({ diff --git a/src/app/[locale]/new/builders/_components/DeveloperContent.tsx b/src/app/[locale]/builders/_components/DeveloperContent.tsx similarity index 100% rename from src/app/[locale]/new/builders/_components/DeveloperContent.tsx rename to src/app/[locale]/builders/_components/DeveloperContent.tsx diff --git a/src/app/[locale]/new/builders/page.tsx b/src/app/[locale]/builders/page.tsx similarity index 100% rename from src/app/[locale]/new/builders/page.tsx rename to src/app/[locale]/builders/page.tsx diff --git a/src/app/[locale]/community/_components/CommunityBrandKit.tsx b/src/app/[locale]/community/_components/CommunityBrandKit.tsx index 3ba3a32..fd29a2a 100644 --- a/src/app/[locale]/community/_components/CommunityBrandKit.tsx +++ b/src/app/[locale]/community/_components/CommunityBrandKit.tsx @@ -1,37 +1,40 @@ "use client"; -import { Button } from "@inkonchain/ink-kit"; +import { Button, Card, CardContent } from "@inkonchain/ink-kit"; import { useTranslations } from "next-intl"; import { ColoredText } from "@/components/ColoredText"; import { FlyWhenIntoView } from "@/components/FlyWhenIntoView"; import { ParallaxedHoverImage } from "@/components/ParallaxedHoverImage"; -import { useFeatureFlag } from "@/hooks/useFeatureFlag"; import { EXTERNAL_LINKS, Link } from "@/routing"; -import { classNames } from "@/util/classes"; export const CommunityBrandKit = () => { - const newNav = useFeatureFlag("newNav"); const t = useTranslations("Community"); return ( -
+ + + } > -
- - {t("brandKit.title")} - -
- {t("brandKit.description")} -
-
+ + {t("brandKit.title")} + + } + description={t("brandKit.description")} + button={ -
-
-
- -
-
+ } + /> +
); }; diff --git a/src/app/[locale]/community/_components/CommunityEvents.tsx b/src/app/[locale]/community/_components/CommunityEvents.tsx index a2cdff0..3feac29 100644 --- a/src/app/[locale]/community/_components/CommunityEvents.tsx +++ b/src/app/[locale]/community/_components/CommunityEvents.tsx @@ -6,17 +6,14 @@ import { useFeatureFlag } from "@/hooks/useFeatureFlag"; import { EXTERNAL_LINKS } from "@/routing"; import { classNames } from "@/util/classes"; -import { - SpecificEventCard, - SpecificEventCardProps, -} from "../../_components/EventContent/EventContent"; +import { EventCard, EventCardProps } from "../../../../components/EventCard"; export const CommunityEvents = () => { const featureFlag = useFeatureFlag("fakeEvents"); const t = useTranslations("events"); - const ethDenverEventProps: SpecificEventCardProps = { + const ethDenverEventProps: EventCardProps = { title: t("ethdenver.cardTitle"), description: t("ethdenver.description"), cta: t("ethdenver.cta"), @@ -45,7 +42,7 @@ export const CommunityEvents = () => { })} > {events.map((event, index) => ( - { - const newNav = useFeatureFlag("newNav"); const t = useTranslations("Community"); return ( - -
+ +
+ {t("letsGetSocial.description")} } ratio={2} - align={newNav ? "left" : "center"} + align="left" />
diff --git a/src/app/[locale]/community/layout.tsx b/src/app/[locale]/community/layout.tsx deleted file mode 100644 index 0ed714f..0000000 --- a/src/app/[locale]/community/layout.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Footer } from "@/components/Footer"; -import { routing } from "@/routing"; - -import { HomeHeader } from "../_components/HomeHeader"; -import { HomeShortcuts } from "../(home)/HomeShortcuts"; - -export async function generateStaticParams() { - return routing.locales.map((locale) => ({ locale })); -} - -export default async function InfoLayout({ - children, -}: { - children: React.ReactNode; -}) { - return ( - <> - - - -
-
- {children} -
-
-
-
-
- - ); -} diff --git a/src/app/[locale]/community/page.tsx b/src/app/[locale]/community/page.tsx index df8cec1..66aec2f 100644 --- a/src/app/[locale]/community/page.tsx +++ b/src/app/[locale]/community/page.tsx @@ -1,8 +1,8 @@ import { useTranslations } from "next-intl"; -import { BigScalableTitle } from "@/components/BigScallableTitle"; -import { containerClasses } from "@/components/styles/container"; -import { classNames } from "@/util/classes"; +import { newLayoutContainerClasses } from "@/components/styles/container"; + +import { PageHeader } from "../_components/PageHeader"; import { CommunityBrandKit } from "./_components/CommunityBrandKit"; import { CommunityEvents } from "./_components/CommunityEvents"; @@ -12,32 +12,12 @@ export default function CommunityPage() { const t = useTranslations("Community"); return ( <> -
-
-
- - {t("description")} - - } - ratio={4} - /> -
- -
- -
+
+ - - -
+ + +
); diff --git a/src/app/[locale]/(home)/faucet/_components/Faucet.tsx b/src/app/[locale]/faucet/_components/Faucet.tsx similarity index 97% rename from src/app/[locale]/(home)/faucet/_components/Faucet.tsx rename to src/app/[locale]/faucet/_components/Faucet.tsx index 4385ea9..6c01efb 100644 --- a/src/app/[locale]/(home)/faucet/_components/Faucet.tsx +++ b/src/app/[locale]/faucet/_components/Faucet.tsx @@ -26,7 +26,7 @@ export function Faucet() { }, [isConnected, connectedAddress]); return ( -
+
- -
-
- - -
-
+ + ); } diff --git a/src/app/[locale]/(home)/get-verified/_components/VerificationContent.tsx b/src/app/[locale]/get-verified/_components/VerificationContent.tsx similarity index 100% rename from src/app/[locale]/(home)/get-verified/_components/VerificationContent.tsx rename to src/app/[locale]/get-verified/_components/VerificationContent.tsx diff --git a/src/app/[locale]/(home)/get-verified/_components/VerificationHero.tsx b/src/app/[locale]/get-verified/_components/VerificationHero.tsx similarity index 100% rename from src/app/[locale]/(home)/get-verified/_components/VerificationHero.tsx rename to src/app/[locale]/get-verified/_components/VerificationHero.tsx diff --git a/src/app/[locale]/(home)/get-verified/page.tsx b/src/app/[locale]/get-verified/page.tsx similarity index 67% rename from src/app/[locale]/(home)/get-verified/page.tsx rename to src/app/[locale]/get-verified/page.tsx index 9753f37..5d07d26 100644 --- a/src/app/[locale]/(home)/get-verified/page.tsx +++ b/src/app/[locale]/get-verified/page.tsx @@ -1,17 +1,13 @@ import { Metadata } from "next"; -import { AnchorIntoView } from "@/components/AnchorIntoView"; import { FeatureRequestModal } from "@/components/FeatureRequestModal/FeatureRequestModal"; import { FeatureRequestModalProvider } from "@/components/FeatureRequestModal/FeatureRequestModalContext"; import { JsonLd } from "@/components/JsonLd"; import { PageView } from "@/components/PageView"; -import { containerClasses } from "@/components/styles/container"; +import { newLayoutContainerClasses } from "@/components/styles/container"; import { VerificationModal } from "@/components/VerificationModal/VerificationModal"; import { VerificationModalProvider } from "@/components/VerificationModal/VerificationModalContext"; -import { FloatingButtons } from "../../_components/MainContent"; -import { HomeShortcuts } from "../HomeShortcuts"; - import { VerificationContent } from "./_components/VerificationContent"; import { VerificationHero } from "./_components/VerificationHero"; @@ -35,20 +31,11 @@ export default function GetVerifiedPage() { }} /> - -
-
- -
- -
-
- -
-
- -
+
+ + +
diff --git a/src/app/[locale]/layout.tsx b/src/app/[locale]/layout.tsx index f346d57..83d4a15 100644 --- a/src/app/[locale]/layout.tsx +++ b/src/app/[locale]/layout.tsx @@ -7,6 +7,7 @@ import { getMessages } from "next-intl/server"; import { ContactUsModal } from "@/components/ContactUsModal"; import { ConsentLogger } from "@/components/CookieConsent/ConsentLogger"; import { CookieConsent } from "@/components/CookieConsent/CookieConsent"; +import { Footer } from "@/components/Footer"; import { GlobalSvgStuff } from "@/components/icons/GlobalSvgStuff"; import { NewsletterModal } from "@/components/NewsletterModal"; import { Providers } from "@/components/Providers"; @@ -16,6 +17,9 @@ import { COOKIE_CONSENT } from "@/integrations/consent"; import { inter, plus_jakarta_sans } from "../fonts"; +import { MainPageBackground } from "./_components/MainPageBackground"; +import { RoutedLayout } from "./_components/RoutedLayout"; + const themeClassesMapping: Record = { dark: "dark ink:dark-theme", light: "light ink:light-theme", @@ -81,9 +85,19 @@ export default async function LocaleLayout({ -
- {children} -
+ + +
+
+ {children} +
+
+
+
+
+ + +
diff --git a/src/app/[locale]/new/apps/_components/AppCard.tsx b/src/app/[locale]/new/apps/_components/AppCard.tsx deleted file mode 100644 index 66e0590..0000000 --- a/src/app/[locale]/new/apps/_components/AppCard.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import { useState } from "react"; -import Image from "next/image"; - -import { FeaturedAppPill } from "@/app/[locale]/(dashboard)/dashboard/_components/FeaturedAppPill"; -import { ParallaxedHoverImage } from "@/components/ParallaxedHoverImage"; -import featuredApps from "@/generated/featured-apps.json"; -import { classNames } from "@/util/classes"; - -import { AppLinks } from "../../../(dashboard)/dashboard/_components/AppLinks"; - -import { InkApp, InkAppNetwork, mainUrl } from "./InkApp"; - -function matchAppImageFileName(name: string): string { - // No whitespace, colons seems to be replaced with underscores. - // Check the exported Figma file and adjust to match them if necessary. - return name.replaceAll(/:/g, "_").replaceAll(/ /g, ""); -} - -export function AppCard({ - app, - network, -}: { - app: InkApp; - network: InkAppNetwork; -}) { - const [originalClick, setOriginalClick] = useState<{ - x: number; - y: number; - } | null>(null); - - const featuredAppSpecificImage = featuredApps.find( - (f) => f.name === app.name || f.name === matchAppImageFileName(app.name) - ); - return ( -
-
- -
- -
-
{app.name}
-
- {app.description} -
- -
-
- ); -} diff --git a/src/app/[locale]/new/apps/_components/AppLinks.tsx b/src/app/[locale]/new/apps/_components/AppLinks.tsx deleted file mode 100644 index 35f63a9..0000000 --- a/src/app/[locale]/new/apps/_components/AppLinks.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../(dashboard)/dashboard/_components/AppLinks"; diff --git a/src/app/[locale]/new/apps/_components/InkApp.ts b/src/app/[locale]/new/apps/_components/InkApp.ts deleted file mode 100644 index 741990f..0000000 --- a/src/app/[locale]/new/apps/_components/InkApp.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../(dashboard)/dashboard/_components/InkApp"; diff --git a/src/app/[locale]/new/apps/_components/categories.tsx b/src/app/[locale]/new/apps/_components/categories.tsx deleted file mode 100644 index fbd917a..0000000 --- a/src/app/[locale]/new/apps/_components/categories.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { InkIcon } from "@inkonchain/ink-kit"; - -import { AppsIcon } from "@/components/icons/Apps"; -import { BankIcon } from "@/components/icons/Bank"; -import { BlocksIcon } from "@/components/icons/Blocks"; -import { BridgeIcon } from "@/components/icons/Bridge"; -import { GlobeIcon } from "@/components/icons/Globe"; -import { UsersIcon } from "@/components/icons/Users"; - -export const appCategories = [ - { - value: null, - label: "All categories", - icon: , - }, - { - value: "bridge", - label: "Bridge", - icon: ( - - ), - }, - { - value: "defi", - label: "DeFi", - icon: , - }, - { - value: "explorers", - label: "Explorers", - icon: , - }, - { - value: "infra", - label: "Infrastructure", - icon: ( - - ), - }, - { - value: "on-ramps", - label: "On-ramps", - icon: ( - - ), - }, - { - value: "social", - label: "Social", - icon: , - }, -] as const; diff --git a/src/app/[locale]/new/community/_components/CommunityBrandKit.tsx b/src/app/[locale]/new/community/_components/CommunityBrandKit.tsx deleted file mode 100644 index fd29a2a..0000000 --- a/src/app/[locale]/new/community/_components/CommunityBrandKit.tsx +++ /dev/null @@ -1,52 +0,0 @@ -"use client"; -import { Button, Card, CardContent } from "@inkonchain/ink-kit"; -import { useTranslations } from "next-intl"; - -import { ColoredText } from "@/components/ColoredText"; -import { FlyWhenIntoView } from "@/components/FlyWhenIntoView"; -import { ParallaxedHoverImage } from "@/components/ParallaxedHoverImage"; -import { EXTERNAL_LINKS, Link } from "@/routing"; - -export const CommunityBrandKit = () => { - const t = useTranslations("Community"); - - return ( - - - - - } - > - - {t("brandKit.title")} - - } - description={t("brandKit.description")} - button={ - - } - /> - - - ); -}; diff --git a/src/app/[locale]/new/community/_components/CommunityEvents.tsx b/src/app/[locale]/new/community/_components/CommunityEvents.tsx deleted file mode 100644 index f7cc54a..0000000 --- a/src/app/[locale]/new/community/_components/CommunityEvents.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../community/_components/CommunityEvents"; diff --git a/src/app/[locale]/new/community/_components/LetsGetSocial.tsx b/src/app/[locale]/new/community/_components/LetsGetSocial.tsx deleted file mode 100644 index 84e6698..0000000 --- a/src/app/[locale]/new/community/_components/LetsGetSocial.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../community/_components/LetsGetSocial"; diff --git a/src/app/[locale]/new/community/page.tsx b/src/app/[locale]/new/community/page.tsx deleted file mode 100644 index 66aec2f..0000000 --- a/src/app/[locale]/new/community/page.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { useTranslations } from "next-intl"; - -import { newLayoutContainerClasses } from "@/components/styles/container"; - -import { PageHeader } from "../_components/PageHeader"; - -import { CommunityBrandKit } from "./_components/CommunityBrandKit"; -import { CommunityEvents } from "./_components/CommunityEvents"; -import { LetsGetSocial } from "./_components/LetsGetSocial"; - -export default function CommunityPage() { - const t = useTranslations("Community"); - return ( - <> -
- - - - - -
- - ); -} diff --git a/src/app/[locale]/new/layout.tsx b/src/app/[locale]/new/layout.tsx deleted file mode 100644 index e1710a6..0000000 --- a/src/app/[locale]/new/layout.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from "react"; - -import { Footer } from "@/components/Footer"; -import { OnlyWithFeatureFlag } from "@/components/OnlyWithFeatureFlag"; -import { routing } from "@/routing"; - -import { MainPageBackground } from "./_components/MainPageBackground"; -import { RoutedLayout } from "./apps/_components/RoutedLayout"; - -export async function generateStaticParams() { - return routing.locales.map((locale) => ({ locale })); -} - -export default async function InfoLayout({ - children, -}: { - children: React.ReactNode; -}) { - return ( - - -
-
- {children} -
-
-
-
-
-
- -
- ); -} diff --git a/src/app/[locale]/new/verify/_components/Verifications.tsx b/src/app/[locale]/new/verify/_components/Verifications.tsx deleted file mode 100644 index 1cc3c26..0000000 --- a/src/app/[locale]/new/verify/_components/Verifications.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../verify/_components/Verifications"; diff --git a/src/app/[locale]/new/verify/_components/VerifyContent.tsx b/src/app/[locale]/new/verify/_components/VerifyContent.tsx deleted file mode 100644 index b5d80eb..0000000 --- a/src/app/[locale]/new/verify/_components/VerifyContent.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../verify/_components/VerifyContent"; diff --git a/src/app/[locale]/new/verify/_components/VerifyHaveASuggestion.tsx b/src/app/[locale]/new/verify/_components/VerifyHaveASuggestion.tsx deleted file mode 100644 index f4ea42a..0000000 --- a/src/app/[locale]/new/verify/_components/VerifyHaveASuggestion.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../verify/_components/VerifyHaveASuggestion"; diff --git a/src/app/[locale]/new/verify/_components/VerifyInfoCard.tsx b/src/app/[locale]/new/verify/_components/VerifyInfoCard.tsx deleted file mode 100644 index 1efe479..0000000 --- a/src/app/[locale]/new/verify/_components/VerifyInfoCard.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../verify/_components/VerifyInfoCard"; diff --git a/src/app/[locale]/new/verify/page.tsx b/src/app/[locale]/new/verify/page.tsx deleted file mode 100644 index 56ed8bf..0000000 --- a/src/app/[locale]/new/verify/page.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { useTranslations } from "next-intl"; - -import { OnlyWithFeatureFlag } from "@/components/OnlyWithFeatureFlag"; -import { newLayoutContainerClasses } from "@/components/styles/container"; - -import { ConnectWalletButton } from "../../_components/ConnectWalletButton"; -import { PageHeader } from "../_components/PageHeader"; - -import { Verifications } from "./_components/Verifications"; -import { VerifyContent } from "./_components/VerifyContent"; -import { VerifyHaveASuggestion } from "./_components/VerifyHaveASuggestion"; - -export default function VerifyPage() { - const t = useTranslations("Verify"); - return ( - -
- - -
- } - /> - - - -
- - ); -} diff --git a/src/app/[locale]/not-found.tsx b/src/app/[locale]/not-found.tsx index c9d52cd..ba1e4fe 100644 --- a/src/app/[locale]/not-found.tsx +++ b/src/app/[locale]/not-found.tsx @@ -3,10 +3,6 @@ import { useTranslations } from "next-intl"; import { ButtonLink } from "@/components/Button/ButtonLink"; import { ColoredText } from "@/components/ColoredText"; -import { Header } from "@/components/Header"; - -import { FloatingButtons } from "./_components/MainContent"; -import { HomeShortcuts } from "./(home)/HomeShortcuts"; export const metadata = { robots: { @@ -19,9 +15,7 @@ export default function NotFoundPage() { const t = useTranslations("404"); return ( -
- -
+
{t("alt")} -
+
-
- -
); diff --git a/src/app/[locale]/new/page.tsx b/src/app/[locale]/page.tsx similarity index 100% rename from src/app/[locale]/new/page.tsx rename to src/app/[locale]/page.tsx diff --git a/src/app/[locale]/(home)/smart-wallet/_components/LoginButton.tsx b/src/app/[locale]/smart-wallet/_components/LoginButton.tsx similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/_components/LoginButton.tsx rename to src/app/[locale]/smart-wallet/_components/LoginButton.tsx diff --git a/src/app/[locale]/(home)/smart-wallet/_components/RegisterButton.tsx b/src/app/[locale]/smart-wallet/_components/RegisterButton.tsx similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/_components/RegisterButton.tsx rename to src/app/[locale]/smart-wallet/_components/RegisterButton.tsx diff --git a/src/app/[locale]/(home)/smart-wallet/_components/SendUserOp.tsx b/src/app/[locale]/smart-wallet/_components/SendUserOp.tsx similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/_components/SendUserOp.tsx rename to src/app/[locale]/smart-wallet/_components/SendUserOp.tsx diff --git a/src/app/[locale]/(home)/smart-wallet/_components/SmartAccountAddress.tsx b/src/app/[locale]/smart-wallet/_components/SmartAccountAddress.tsx similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/_components/SmartAccountAddress.tsx rename to src/app/[locale]/smart-wallet/_components/SmartAccountAddress.tsx diff --git a/src/app/[locale]/(home)/smart-wallet/_components/SmartWallet.tsx b/src/app/[locale]/smart-wallet/_components/SmartWallet.tsx similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/_components/SmartWallet.tsx rename to src/app/[locale]/smart-wallet/_components/SmartWallet.tsx diff --git a/src/app/[locale]/(home)/smart-wallet/_components/Spinner.tsx b/src/app/[locale]/smart-wallet/_components/Spinner.tsx similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/_components/Spinner.tsx rename to src/app/[locale]/smart-wallet/_components/Spinner.tsx diff --git a/src/app/[locale]/(home)/smart-wallet/_components/UsernameInput.tsx b/src/app/[locale]/smart-wallet/_components/UsernameInput.tsx similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/_components/UsernameInput.tsx rename to src/app/[locale]/smart-wallet/_components/UsernameInput.tsx diff --git a/src/app/[locale]/(home)/smart-wallet/context/UsernameContext.tsx b/src/app/[locale]/smart-wallet/context/UsernameContext.tsx similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/context/UsernameContext.tsx rename to src/app/[locale]/smart-wallet/context/UsernameContext.tsx diff --git a/src/app/[locale]/(home)/smart-wallet/context/ZerodevContext.tsx b/src/app/[locale]/smart-wallet/context/ZerodevContext.tsx similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/context/ZerodevContext.tsx rename to src/app/[locale]/smart-wallet/context/ZerodevContext.tsx diff --git a/src/app/[locale]/(home)/smart-wallet/lib/viem.ts b/src/app/[locale]/smart-wallet/lib/viem.ts similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/lib/viem.ts rename to src/app/[locale]/smart-wallet/lib/viem.ts diff --git a/src/app/[locale]/(home)/smart-wallet/lib/zerodev.ts b/src/app/[locale]/smart-wallet/lib/zerodev.ts similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/lib/zerodev.ts rename to src/app/[locale]/smart-wallet/lib/zerodev.ts diff --git a/src/app/[locale]/(home)/smart-wallet/page.tsx b/src/app/[locale]/smart-wallet/page.tsx similarity index 67% rename from src/app/[locale]/(home)/smart-wallet/page.tsx rename to src/app/[locale]/smart-wallet/page.tsx index d458572..e83ff9b 100644 --- a/src/app/[locale]/(home)/smart-wallet/page.tsx +++ b/src/app/[locale]/smart-wallet/page.tsx @@ -3,10 +3,7 @@ import { Metadata } from "next"; import { JsonLd } from "@/components/JsonLd"; import { OnlyWithFeatureFlag } from "@/components/OnlyWithFeatureFlag"; import { PageView } from "@/components/PageView"; -import { containerClasses } from "@/components/styles/container"; - -import { FloatingButtons } from "../../_components/MainContent"; -import { HomeShortcuts } from "../HomeShortcuts"; +import { newLayoutContainerClasses } from "@/components/styles/container"; import { SmartWallet } from "./_components/SmartWallet"; import { UsernameProvider } from "./context/UsernameContext"; @@ -35,21 +32,13 @@ export default async function SmartWalletPage() { /> - -
-
-
- - - - - -
-
- +
+ + + + +
); diff --git a/src/app/[locale]/(home)/smart-wallet/utils/constants.ts b/src/app/[locale]/smart-wallet/utils/constants.ts similarity index 100% rename from src/app/[locale]/(home)/smart-wallet/utils/constants.ts rename to src/app/[locale]/smart-wallet/utils/constants.ts diff --git a/src/app/[locale]/(home)/testnet-bridge/_components/BlockExplorerButton.tsx b/src/app/[locale]/testnet-bridge/_components/BlockExplorerButton.tsx similarity index 100% rename from src/app/[locale]/(home)/testnet-bridge/_components/BlockExplorerButton.tsx rename to src/app/[locale]/testnet-bridge/_components/BlockExplorerButton.tsx diff --git a/src/app/[locale]/(home)/testnet-bridge/_components/Bridge.tsx b/src/app/[locale]/testnet-bridge/_components/Bridge.tsx similarity index 98% rename from src/app/[locale]/(home)/testnet-bridge/_components/Bridge.tsx rename to src/app/[locale]/testnet-bridge/_components/Bridge.tsx index 1cf2cf0..acb34d6 100644 --- a/src/app/[locale]/(home)/testnet-bridge/_components/Bridge.tsx +++ b/src/app/[locale]/testnet-bridge/_components/Bridge.tsx @@ -15,10 +15,10 @@ import { } from "wagmi"; import { sepolia } from "wagmi/chains"; -import { ConnectWalletButton } from "@/app/[locale]/_components/ConnectWalletButton"; -import { useBridgeTransactionModal } from "@/app/[locale]/(home)/testnet-bridge/_components/BridgeTransactionModal"; +import { useBridgeTransactionModal } from "@/app/[locale]/testnet-bridge/_components/BridgeTransactionModal"; import { Button } from "@/components/Button/Button"; import { ColoredText } from "@/components/ColoredText"; +import { ConnectWalletButton } from "@/components/ConnectWalletButton"; import { Loader } from "@/components/Loader"; import { containerClasses } from "@/components/styles/container"; import { classNames } from "@/util/classes"; diff --git a/src/app/[locale]/(home)/testnet-bridge/_components/BridgeTransactionModal/BridgeTransactionModal.tsx b/src/app/[locale]/testnet-bridge/_components/BridgeTransactionModal/BridgeTransactionModal.tsx similarity index 100% rename from src/app/[locale]/(home)/testnet-bridge/_components/BridgeTransactionModal/BridgeTransactionModal.tsx rename to src/app/[locale]/testnet-bridge/_components/BridgeTransactionModal/BridgeTransactionModal.tsx diff --git a/src/app/[locale]/(home)/testnet-bridge/_components/BridgeTransactionModal/BridgeTransactionModalContext.tsx b/src/app/[locale]/testnet-bridge/_components/BridgeTransactionModal/BridgeTransactionModalContext.tsx similarity index 100% rename from src/app/[locale]/(home)/testnet-bridge/_components/BridgeTransactionModal/BridgeTransactionModalContext.tsx rename to src/app/[locale]/testnet-bridge/_components/BridgeTransactionModal/BridgeTransactionModalContext.tsx diff --git a/src/app/[locale]/(home)/testnet-bridge/_components/BridgeTransactionModal/BroadcastSent-checkMark.json b/src/app/[locale]/testnet-bridge/_components/BridgeTransactionModal/BroadcastSent-checkMark.json similarity index 100% rename from src/app/[locale]/(home)/testnet-bridge/_components/BridgeTransactionModal/BroadcastSent-checkMark.json rename to src/app/[locale]/testnet-bridge/_components/BridgeTransactionModal/BroadcastSent-checkMark.json diff --git a/src/app/[locale]/(home)/testnet-bridge/_components/BridgeTransactionModal/index.ts b/src/app/[locale]/testnet-bridge/_components/BridgeTransactionModal/index.ts similarity index 100% rename from src/app/[locale]/(home)/testnet-bridge/_components/BridgeTransactionModal/index.ts rename to src/app/[locale]/testnet-bridge/_components/BridgeTransactionModal/index.ts diff --git a/src/app/[locale]/(home)/testnet-bridge/page.tsx b/src/app/[locale]/testnet-bridge/page.tsx similarity index 73% rename from src/app/[locale]/(home)/testnet-bridge/page.tsx rename to src/app/[locale]/testnet-bridge/page.tsx index 6f2f810..ef972d0 100644 --- a/src/app/[locale]/(home)/testnet-bridge/page.tsx +++ b/src/app/[locale]/testnet-bridge/page.tsx @@ -2,10 +2,7 @@ import { Metadata } from "next"; import { JsonLd } from "@/components/JsonLd"; import { PageView } from "@/components/PageView"; -import { containerClasses } from "@/components/styles/container"; - -import { FloatingButtons } from "../../_components/MainContent"; -import { HomeShortcuts } from "../HomeShortcuts"; +import { newLayoutContainerClasses } from "@/components/styles/container"; import { Bridge } from "./_components/Bridge"; import { @@ -42,17 +39,9 @@ export default function BridgePage() { }} /> - -
-
- - -
+ +
+
diff --git a/src/app/[locale]/verify/_components/Verifications.tsx b/src/app/[locale]/verify/_components/Verifications.tsx index 0906385..40eacaa 100644 --- a/src/app/[locale]/verify/_components/Verifications.tsx +++ b/src/app/[locale]/verify/_components/Verifications.tsx @@ -7,8 +7,7 @@ import { useTranslations } from "next-intl"; import { useAccount } from "wagmi"; import { ColoredText } from "@/components/ColoredText"; - -import { ConnectWalletButton } from "../../_components/ConnectWalletButton"; +import { ConnectWalletButton } from "@/components/ConnectWalletButton"; type Perks = "Ink" | "Zora"; type Networks = "Ink" | "BASE" | "Arbitrum" | "Mode" | "Optimism"; diff --git a/src/app/[locale]/verify/layout.tsx b/src/app/[locale]/verify/layout.tsx deleted file mode 100644 index c3638bf..0000000 --- a/src/app/[locale]/verify/layout.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import Image from "next/image"; - -import { Footer } from "@/components/Footer"; -import { routing } from "@/routing"; - -import { HomeHeader } from "../_components/HomeHeader"; -import { HomeShortcuts } from "../(home)/HomeShortcuts"; - -export async function generateStaticParams() { - return routing.locales.map((locale) => ({ locale })); -} - -export default async function InfoLayout({ - children, -}: { - children: React.ReactNode; -}) { - return ( - <> - - - -
- Verify -
- -
-
{children}
-
-
-
-
- - ); -} diff --git a/src/app/[locale]/verify/page.tsx b/src/app/[locale]/verify/page.tsx index d0332b6..2f87a6c 100644 --- a/src/app/[locale]/verify/page.tsx +++ b/src/app/[locale]/verify/page.tsx @@ -1,21 +1,31 @@ +import { useTranslations } from "next-intl"; + +import { ConnectWalletButton } from "@/components/ConnectWalletButton"; import { OnlyWithFeatureFlag } from "@/components/OnlyWithFeatureFlag"; -import { PageView } from "@/components/PageView"; -import { containerClasses } from "@/components/styles/container"; +import { newLayoutContainerClasses } from "@/components/styles/container"; -import { HomeShortcuts } from "../(home)/HomeShortcuts"; +import { PageHeader } from "../_components/PageHeader"; +import { Verifications } from "./_components/Verifications"; import { VerifyContent } from "./_components/VerifyContent"; import { VerifyHaveASuggestion } from "./_components/VerifyHaveASuggestion"; export default function VerifyPage() { + const t = useTranslations("Verify"); return ( - - -
-
- -
+
+ + +
+ } + /> + +
diff --git a/src/app/[locale]/_components/ConnectWalletButton.tsx b/src/components/ConnectWalletButton.tsx similarity index 100% rename from src/app/[locale]/_components/ConnectWalletButton.tsx rename to src/components/ConnectWalletButton.tsx diff --git a/src/app/[locale]/_components/ContactUsPrivacyButton.tsx b/src/components/ContactUsPrivacyButton.tsx similarity index 100% rename from src/app/[locale]/_components/ContactUsPrivacyButton.tsx rename to src/components/ContactUsPrivacyButton.tsx diff --git a/src/app/[locale]/_components/CookieSettingsButton.tsx b/src/components/CookieSettingsButton.tsx similarity index 100% rename from src/app/[locale]/_components/CookieSettingsButton.tsx rename to src/components/CookieSettingsButton.tsx diff --git a/src/components/EventCard.tsx b/src/components/EventCard.tsx new file mode 100644 index 0000000..4e66335 --- /dev/null +++ b/src/components/EventCard.tsx @@ -0,0 +1,99 @@ +import { Card, CardContent, Tag } from "@inkonchain/ink-kit"; + +import { ButtonLink } from "@/components/Button/ButtonLink"; +import { CalendarIcon } from "@/components/icons/Calendar"; +import { LocationIcon } from "@/components/icons/Location"; +import { MailIcon } from "@/components/icons/Mail"; +import { ParallaxedHoverImage } from "@/components/ParallaxedHoverImage"; +import { HrefProp } from "@/routing"; +import { classNames } from "@/util/classes"; + +export interface EventCardProps { + title: string; + description: string; + cta: string; + link: HrefProp; + date: string; + location: string; + image: string; + imageAlt: string; + className?: string; + layout: "horizontal" | "vertical"; + color?: "purple" | "purple-dark"; +} + +export const EventCard = ({ + title, + description, + cta, + link, + date, + location, + image, + imageAlt, + layout = "vertical", + color = "purple", + className, +}: EventCardProps) => { + return ( + + + + {date} + + + + {location} + + + } + > + + + } + imageLocation={layout === "horizontal" ? "left" : "top"} + variant={color === "purple" ? "light-purple" : "secondary"} + > + + + } + > + {cta} + +
+ } + /> + + ); +}; diff --git a/src/components/Footer/FooterContent.tsx b/src/components/Footer/FooterContent.tsx index b851b26..3bae454 100644 --- a/src/components/Footer/FooterContent.tsx +++ b/src/components/Footer/FooterContent.tsx @@ -6,7 +6,7 @@ import { TextUnderline } from "@/components/TextUnderline"; import { EXTERNAL_LINKS, Link } from "@/routing"; import { classNames } from "@/util/classes"; -import { CookieSettingsButton } from "../../app/[locale]/_components/CookieSettingsButton"; +import { CookieSettingsButton } from "../CookieSettingsButton"; interface FooterContentProps { enforce?: "black"; diff --git a/src/components/Header/HeaderConnectWallet.tsx b/src/components/Header/HeaderConnectWallet.tsx index ddf0b14..45963fb 100644 --- a/src/components/Header/HeaderConnectWallet.tsx +++ b/src/components/Header/HeaderConnectWallet.tsx @@ -2,7 +2,7 @@ import { Suspense } from "react"; -import { ConnectWalletButton } from "@/app/[locale]/_components/ConnectWalletButton"; +import { ConnectWalletButton } from "@/components/ConnectWalletButton"; import { OnlyWithFeatureFlag } from "../OnlyWithFeatureFlag"; diff --git a/src/components/Header/HeaderContent.tsx b/src/components/Header/HeaderContent.tsx index 56ca0eb..d67226a 100644 --- a/src/components/Header/HeaderContent.tsx +++ b/src/components/Header/HeaderContent.tsx @@ -1,6 +1,6 @@ import React from "react"; -import { ConnectWalletButton } from "@/app/[locale]/_components/ConnectWalletButton"; +import { ConnectWalletButton } from "@/components/ConnectWalletButton"; import { HomeAppsToggle } from "../HomeAppsToggle/HomeAppsToggle"; diff --git a/src/components/HomeAppsToggle/HomeAppsToggle.tsx b/src/components/HomeAppsToggle/HomeAppsToggle.tsx index 02567d1..c67ab33 100644 --- a/src/components/HomeAppsToggle/HomeAppsToggle.tsx +++ b/src/components/HomeAppsToggle/HomeAppsToggle.tsx @@ -34,20 +34,20 @@ export const HomeAppsToggle: React.FC<{}> = () => { ), - selectedByDefault: pathname !== "/dashboard", + selectedByDefault: pathname !== "/apps", value: "home", }, { asChild: true, children: ( ), - selectedByDefault: pathname === "/dashboard", + selectedByDefault: pathname === "/apps", value: "apps", }, ]} diff --git a/src/app/[locale]/_components/MailIconButton/MailIconButton.tsx b/src/components/MailIconButton/MailIconButton.tsx similarity index 100% rename from src/app/[locale]/_components/MailIconButton/MailIconButton.tsx rename to src/components/MailIconButton/MailIconButton.tsx diff --git a/src/components/MobileHeader/MobileHeader.tsx b/src/components/MobileHeader/MobileHeader.tsx index 47d5851..fb09a65 100644 --- a/src/components/MobileHeader/MobileHeader.tsx +++ b/src/components/MobileHeader/MobileHeader.tsx @@ -3,7 +3,7 @@ import React, { PropsWithChildren } from "react"; import FocusLock from "react-focus-lock"; -import { ConnectWalletButton } from "@/app/[locale]/_components/ConnectWalletButton"; +import { ConnectWalletButton } from "@/components/ConnectWalletButton"; import { MobileMenuButton } from "@/components/MobileMenu"; import { useMobileMenuContext } from "@/components/MobileMenu/MobileMenuContext"; import { usePathname } from "@/routing"; diff --git a/src/app/[locale]/_components/NewsletterForm/NewsletterForm.tsx b/src/components/NewsletterForm/NewsletterForm.tsx similarity index 98% rename from src/app/[locale]/_components/NewsletterForm/NewsletterForm.tsx rename to src/components/NewsletterForm/NewsletterForm.tsx index 945bbbc..31bc8e9 100644 --- a/src/app/[locale]/_components/NewsletterForm/NewsletterForm.tsx +++ b/src/components/NewsletterForm/NewsletterForm.tsx @@ -12,7 +12,7 @@ import { KeyboardShortcut } from "@/components/KeyboardShortcut"; import { classNames } from "@/util/classes"; import { largeMovementTransition } from "@/util/transitions"; -import { SuccessState } from "../MainContent/SuccessState"; +import { SuccessState } from "./SuccessState"; export interface NewsletterFormProps { isOpen: boolean; diff --git a/src/app/[locale]/_components/NewsletterForm/NewsletterFormContext.tsx b/src/components/NewsletterForm/NewsletterFormContext.tsx similarity index 100% rename from src/app/[locale]/_components/NewsletterForm/NewsletterFormContext.tsx rename to src/components/NewsletterForm/NewsletterFormContext.tsx diff --git a/src/app/[locale]/_components/MainContent/SuccessState.tsx b/src/components/NewsletterForm/SuccessState.tsx similarity index 100% rename from src/app/[locale]/_components/MainContent/SuccessState.tsx rename to src/components/NewsletterForm/SuccessState.tsx diff --git a/src/components/Providers.tsx b/src/components/Providers.tsx index ae9738d..2d01420 100644 --- a/src/components/Providers.tsx +++ b/src/components/Providers.tsx @@ -2,7 +2,7 @@ import { PropsWithChildren } from "react"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import { NewsletterFormContextProvider } from "@/app/[locale]/_components/NewsletterForm/NewsletterFormContext"; +import { NewsletterFormContextProvider } from "@/components/NewsletterForm/NewsletterFormContext"; import { AnalyticsProvider } from "@/contexts/AnalyticsProvider"; import { RelayProvider } from "@/contexts/RelayProvider"; import { ThemeProvider } from "@/contexts/ThemeProvider"; diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/RelayKitUI.tsx b/src/components/RelayKitUI.tsx similarity index 100% rename from src/app/[locale]/(dashboard)/dashboard/_components/RelayKitUI.tsx rename to src/components/RelayKitUI.tsx diff --git a/src/components/SocialLinksRow.tsx b/src/components/SocialLinksRow.tsx index 7481574..25d2d92 100644 --- a/src/components/SocialLinksRow.tsx +++ b/src/components/SocialLinksRow.tsx @@ -1,6 +1,6 @@ import React from "react"; -import { MailIconButton } from "@/app/[locale]/_components/MailIconButton/MailIconButton"; +import { MailIconButton } from "@/components/MailIconButton/MailIconButton"; import { EXTERNAL_LINKS, Link } from "@/routing"; import { classNames } from "@/util/classes"; diff --git a/src/routing.ts b/src/routing.ts index 1943b63..55f5d6c 100644 --- a/src/routing.ts +++ b/src/routing.ts @@ -66,14 +66,15 @@ export const routing = defineRouting({ defaultLocale, pathnames: { "#": "/#", - "/#about": "/#about", - "/#builders": "/#builders", - "/#get-involved": "/#get-involved", - "/#event": "/#event", "/": "/", "/testnet-bridge": "/testnet-bridge", + "/apps": "/apps", + "/apps/[category]": "/apps/[category]", + "/bridge": "/bridge", + "/verify": "/verify", "/community": "/community", - "/dashboard": "/dashboard", + "/about": "/about", + "/builders": "/builders", "/terms": "/terms", "/privacy": "/privacy", "/timeline": "/timeline", @@ -85,14 +86,6 @@ export const routing = defineRouting({ "/cookie": "/cookie", "/newsletter/resubscribe": "/newsletter/resubscribe", "/newsletter/unsubscribe": "/newsletter/unsubscribe", - "/new": "/new", - "/new/apps": "/new/apps", - "/new/apps/[category]": "/new/apps/[category]", - "/new/bridge": "/new/bridge", - "/new/verify": "/new/verify", - "/new/community": "/new/community", - "/new/about": "/new/about", - "/new/builders": "/new/builders", ...externalLinksMap, }, }); diff --git a/src/util/feature-flags.ts b/src/util/feature-flags.ts index 0790d9d..783dee9 100644 --- a/src/util/feature-flags.ts +++ b/src/util/feature-flags.ts @@ -12,7 +12,6 @@ export const hardcodedFeatureFlags = { publicRepo: false, fakeEvents: 0, verifyPage: false, - newNav: false, }; export type FeatureFlagKey = keyof typeof hardcodedFeatureFlags;