diff --git a/apps/base-docs/base-learn/docs/error-triage/error-triage.md b/apps/base-docs/base-learn/docs/error-triage/error-triage.md index 1234fb638b..f602193b38 100644 --- a/apps/base-docs/base-learn/docs/error-triage/error-triage.md +++ b/apps/base-docs/base-learn/docs/error-triage/error-triage.md @@ -47,7 +47,6 @@ Fix by correcting the type or value, as appropriate for your needs: Reveal code - ```solidity function compilerTypeErrorFixed() public pure returns (string) { string myNumber = "One"; @@ -87,7 +86,6 @@ Fix by explicitly casting as necessary: Reveal code - ```solidity function compilerConversionErrorFixed() public pure returns (uint) { int8 first = 1; @@ -146,7 +144,6 @@ Resolve by explicitly converting to the final type: Reveal code - ``` function compilerOperatorErrorFixed() public pure returns (uint) { int8 first = 1; @@ -226,7 +223,6 @@ Resolve this error by breaking up large functions and separating operations into Reveal code - ```solidity function stackDepthLimitFixed() public pure returns (uint) { uint subtotalA; @@ -425,7 +421,6 @@ Fix by changing your code to handle the expected range of values. Reveal code - ```solidity function badSubstractionFixed() public pure returns (int) { int first = 1; diff --git a/apps/base-docs/base-learn/docs/writing-to-contracts/useWriteContract.md b/apps/base-docs/base-learn/docs/writing-to-contracts/useWriteContract.md index bdd14f389c..b2f99a45fe 100644 --- a/apps/base-docs/base-learn/docs/writing-to-contracts/useWriteContract.md +++ b/apps/base-docs/base-learn/docs/writing-to-contracts/useWriteContract.md @@ -55,13 +55,12 @@ You'll need to know how many tokens the user has to be able to make decisions on You'll need the user's address to use in `args`, which you can conveniently get from the [`useAccount`] hook using the pattern below. ```tsx -const { data: balanceData, queryKey: balanceQueryKey } = - useReadContract({ - address: contractData.address as `0x${string}`, - abi: contractData.abi, - functionName: "balanceOf", - args: [useAccount().address], - }); +const { data: balanceData, queryKey: balanceQueryKey } = useReadContract({ + address: contractData.address as `0x${string}`, + abi: contractData.abi, + functionName: 'balanceOf', + args: [useAccount().address], +}); useEffect(() => { if (balanceData) { diff --git a/apps/web/app/(base-org)/(root)/page.tsx b/apps/web/app/(base-org)/(root)/page.tsx index 1603130b4a..395b8ebb79 100644 --- a/apps/web/app/(base-org)/(root)/page.tsx +++ b/apps/web/app/(base-org)/(root)/page.tsx @@ -1,15 +1,27 @@ import { Metadata } from 'next'; import { FrameButtonMetadata } from '@coinbase/onchainkit/frame'; import AnalyticsProvider from 'apps/web/contexts/Analytics'; -import { BestOfEthereum } from 'apps/web/src/components/BestOfEthereum/BestOfEthereum'; -import { Commitment } from 'apps/web/src/components/Commitment/Commitment'; -import { Divider } from 'apps/web/src/components/Divider/Divider'; -import { EmpoweredByCoinbase } from 'apps/web/src/components/EmpoweredByCoinbase/EmpoweredByCoinbase'; -import { Features } from 'apps/web/src/components/Features/Features'; -import { GetConnected } from 'apps/web/src/components/GetConnected/GetConnected'; -import { Hero } from 'apps/web/src/components/Home/Hero'; -import { JoinTheCommunity } from 'apps/web/src/components/JoinTheCommunity/JoinTheCommunity'; -import { Partnerships } from 'apps/web/src/components/Partnerships/Partnerships'; + +// Clean up assets while removing below +// import { JoinTheCommunity } from 'apps/web/src/components/JoinTheCommunity/JoinTheCommunity'; +import Button from 'apps/web/src/components/base-org/Button'; +import { ButtonVariants } from 'apps/web/src/components/base-org/Button/types'; +import Title from 'apps/web/src/components/base-org/typography/Title'; +import { TitleLevel } from 'apps/web/src/components/base-org/typography/Title/types'; +import Container from 'apps/web/src/components/base-org/Container'; +import VideoCardsSection from 'apps/web/src/components/base-org/root/VideoCardsSection'; +import BuildExploreSection from 'apps/web/src/components/base-org/root/BuildExploreSection'; +import SlidingTextSection from 'apps/web/src/components/base-org/root/SlidingTextSection'; +import TransactionsFeesSection from 'apps/web/src/components/base-org/root/TransactionsFeesSection'; +import BuildAndRewardSection from 'apps/web/src/components/base-org/root/BuildAndRewardSection'; +import ErrorsProvider from 'apps/web/contexts/Errors'; +import BlogSection from 'apps/web/src/components/base-org/root/BlogSection'; +import Link from 'next/link'; +import dynamic from 'next/dynamic'; + +const DynamicThreeHero = dynamic(async () => import('apps/web/src/components/ThreeHero'), { + ssr: false, +}); /* Farcaster Metadatas */ const buttons: FrameButtonMetadata[] = [ @@ -46,26 +58,57 @@ export const metadata: Metadata = { export default async function Home() { return ( - - - + + + +
+
+ +
+ +
+ + Base is for everyone. +

+ Bringing the world onchain to create a global economy that increases innovation, + creativity, and freedom. +

+
+ + + + + + +
+
+
+
+
+ +
+ +
+
+ + The future of the internet is onchain. Base is here to help you build it. + +
+ + + + + + +
+
+
+
-
- - - - - - - - - - - - - - -
-
+ ); } diff --git a/apps/web/app/(base-org)/ecosystem/page.tsx b/apps/web/app/(base-org)/ecosystem/page.tsx index fa9016e6a0..676e6a60ee 100644 --- a/apps/web/app/(base-org)/ecosystem/page.tsx +++ b/apps/web/app/(base-org)/ecosystem/page.tsx @@ -1,9 +1,11 @@ -import { Button, ButtonVariants } from 'apps/web/src/components/Button/Button'; -import EcosystemHeroLogos from 'apps/web/public/images/ecosystem-hero-logos-new.png'; -import { Divider } from 'apps/web/src/components/Divider/Divider'; import type { Metadata } from 'next'; -import ImageAdaptive from 'apps/web/src/components/ImageAdaptive'; import Content from 'apps/web/src/components/Ecosystem/Content'; +import Container from 'apps/web/src/components/base-org/Container'; +import Button from 'apps/web/src/components/base-org/Button'; +import { ButtonVariants } from 'apps/web/src/components/base-org/Button/types'; +import Title from 'apps/web/src/components/base-org/typography/Title'; +import { TitleLevel } from 'apps/web/src/components/base-org/typography/Title/types'; +import RotatingCircle from 'apps/web/src/components/base-org/ecosystem/RotatingCircle'; export const metadata: Metadata = { metadataBase: new URL('https://base.org'), @@ -15,30 +17,57 @@ export const metadata: Metadata = { }; async function EcosystemHero() { + const generateKeys = (prefix: string, count: number) => + Array.from( + { length: count }, + (_, i) => `${prefix}-${i}-${Math.random().toString(36).substr(2, 9)}`, + ); + + const topKeys = generateKeys('top', 4); + const middleKeys = generateKeys('middle', 5); + const bottomKeys = generateKeys('bottom', 4); + return ( -
-
-
-

- Base ecosystem -

-

- An overview of apps and integrations in the Base ecosystem. -

- - - +
+ +
+
+ + Base ecosystem apps and integrations overview. + + + + +
+
+
+ {topKeys.map((key, i) => ( +
+ +
+ ))} +
+
+ {middleKeys.map((key, i) => ( +
+ +
+ ))} +
+
+ {bottomKeys.map((key, i) => ( +
+ +
+ ))} +
+
-
- -
-
+
); } @@ -47,8 +76,10 @@ export default async function Ecosystem() { return (
- - + + + +
); } diff --git a/apps/web/app/(base-org)/frames/names/page.tsx b/apps/web/app/(base-org)/frames/names/page.tsx index 29366aa7d9..ff67ded069 100644 --- a/apps/web/app/(base-org)/frames/names/page.tsx +++ b/apps/web/app/(base-org)/frames/names/page.tsx @@ -25,7 +25,7 @@ export const metadata: Metadata = { export default async function NameFrame() { return ( -
+
diff --git a/apps/web/app/(base-org)/getstarted/page.tsx b/apps/web/app/(base-org)/getstarted/page.tsx index 356fdaf733..132ecbaffb 100644 --- a/apps/web/app/(base-org)/getstarted/page.tsx +++ b/apps/web/app/(base-org)/getstarted/page.tsx @@ -7,6 +7,7 @@ import GetNoticed from '../../../src/components/GetStarted/GetNoticed'; import GetInvolved from 'apps/web/src/components/GetStarted/GetInvolved'; import StartBuilding from '../../../src/components/GetStarted/StartBuilding'; import BuildWithUsFooter from '../../../src/components/GetStarted/BuildWithUsFooter'; +import Container from 'apps/web/src/components/base-org/Container'; export const metadata: Metadata = { metadataBase: new URL('https://base.org'), @@ -22,14 +23,16 @@ export default async function GoToCommunity() { return ( -
- - - - - - -
+ +
+ + + + + + +
+
); } diff --git a/apps/web/app/(base-org)/jobs/page.tsx b/apps/web/app/(base-org)/jobs/page.tsx index f31e3a1cf2..39593fdb20 100644 --- a/apps/web/app/(base-org)/jobs/page.tsx +++ b/apps/web/app/(base-org)/jobs/page.tsx @@ -1,7 +1,10 @@ +import Container from 'apps/web/src/components/base-org/Container'; +import Title from 'apps/web/src/components/base-org/typography/Title'; +import { TitleLevel } from 'apps/web/src/components/base-org/typography/Title/types'; +import { JobType } from 'apps/web/src/components/Jobs/Job'; +import JobsList from 'apps/web/src/components/Jobs/JobsList'; +import { greenhouseApiUrl } from 'apps/web/src/constants'; import type { Metadata } from 'next'; -import dynamic from 'next/dynamic'; - -const JobsList = dynamic(async () => import('apps/web/src/components/Jobs/JobsList')); export const metadata: Metadata = { metadataBase: new URL('https://base.org'), @@ -12,17 +15,28 @@ export const metadata: Metadata = { }, }; +async function getJobs() { + const res = await fetch(`${greenhouseApiUrl}/boards/basejobs/jobs?content=true`); + try { + const { jobs } = (await res.json()) as { jobs: JobType[] }; + return jobs; + } catch (error) {} + return []; +} + export default async function Jobs() { + const jobs = await getJobs(); + return ( -
-
-

- Join our team -

-
- -
-
+
+ +
+ Join our team +
+ +
+
+
); } diff --git a/apps/web/app/(base-org)/layout.tsx b/apps/web/app/(base-org)/layout.tsx index 741644fcbf..8b49e7daac 100644 --- a/apps/web/app/(base-org)/layout.tsx +++ b/apps/web/app/(base-org)/layout.tsx @@ -1,6 +1,7 @@ import dynamic from 'next/dynamic'; import type { Metadata } from 'next'; -import Nav from 'apps/web/src/components/Layout/Nav/Nav'; +import TopNavigation from 'apps/web/src/components/base-org/shared/TopNavigation'; +import CardsProvider from 'apps/web/src/components/base-org/Card/context'; const HomepageModalDynamic = dynamic( async () => import('apps/web/src/components/Basenames/HomepageModal'), @@ -34,10 +35,12 @@ export default async function BaseOrgLayout({ children: React.ReactNode; }) { return ( -
-