Skip to content

Commit 30bcb10

Browse files
Merge branch 'master' into cbj/renewbasename
2 parents 1a63f4c + 0906cb2 commit 30bcb10

File tree

991 files changed

+37099
-14888
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

991 files changed

+37099
-14888
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@
55
**How has it been tested?**
66

77
Have you tested the following pages?
8+
9+
BaseWeb
810
- [] base.org
9-
- [] base.org/ecosystem
10-
- [] base.org/resources
11-
- [] base.org/build
1211
- [] base.org/names
12+
- [] base.org/builders
13+
- [] base.org/ecosystem
1314
- [] base.org/name/jesse
1415
- [] base.org/manage-names
16+
- [] base.org/resources
17+
18+
BaseDocs
19+
- [] docs.base.org
20+
- [] docs sub-pages

README.md

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Base Web
44

5-
Base is a secure, low-cost, developer-friendly Ethereum L2 built to bring the next billion users onchain. It's built on Optimisms open-source [OP Stack](https://stack.optimism.io/).
5+
Base is a secure, low-cost, developer-friendly Ethereum L2 built to bring the next billion users onchain. It's built on Optimism's open-source [OP Stack](https://stack.optimism.io/).
66

77
<!-- Badge row 1 - status -->
88

@@ -81,16 +81,24 @@ If you're a builder who wants to add or update your project on the [Base Ecosyst
8181

8282
2. Create a new branch for your changes.
8383

84-
3. Update the `web/apps/web/src/data/ecosystem.json` with your project information. All fields are required. Each entry should follow the format below:
84+
3. Create a directory for your project under `apps/web/src/data/ecosystem/` using a URL-safe version of your project name:
85+
86+
```bash
87+
mkdir apps/web/src/data/ecosystem/your-project-name
88+
```
89+
90+
Project names must be unique. If a project with your name already exists, please reach out to us on Discord.
91+
92+
4. Create a metadata.json file in your project directory:
8593

8694
```json
8795
{
8896
"name": "Your Project Name",
89-
"description": "A brief description of your project (less than 200 characters)",
90-
"url": "https://your-project-url.com",
91-
"imageUrl": "/images/partners/your-project-logo.png",
92-
"category": "Your Project Category",
93-
"subcategory": "Your Project Subcategory"
97+
"description": "A brief description (less than 200 characters)",
98+
"url": "https://your-project.com",
99+
"imageUrl": "/images/partners/your-logo.png",
100+
"category": "one of: ai, consumer, defi, infra, onramp, wallet",
101+
"subcategory": "see categories below"
94102
}
95103
```
96104

@@ -107,9 +115,10 @@ If you're a builder who wants to add or update your project on the [Base Ecosyst
107115
- `onramp`: _One_ of `centralized exchange`, `fiat on-ramp`
108116
- `wallet`: _One_ of `account abstraction`, `multisig`, `self-custody`
109117

110-
4. When adding and/or updating a logo, place a 192x192 pixel PNG file in the `web/apps/web/public/images/partners/`. The file should be named appropriately (e.g., your-project-name.png). The logo should be an App Store or Play Store iconographic version, not a full wordmark.
111-
112-
5. Create a pull request with your changes.
118+
5. Add your project's logo:
119+
- Place a 192x192 pixel PNG/WebP file in `apps/web/public/images/partners/`
120+
- Name should match what you specified in imageUrl
121+
- Use an App/Play Store style icon (not a full wordmark)
113122

114123
By opening a PR to add your project, you authorize and license Coinbase on a non-exclusive, worldwide, irrevocable, sublicensable, and royalty-free basis to reproduce, distribute, transmit, make available, perform, display, or otherwise use the submitted Multimedia Assets for any purpose, including any marketing or promotional activities related to Base or Coinbase. Any goodwill associated with use of trademarks submitted in your Multimedia Assets will inure to your benefit. You further acknowledge and represent that you have all IP rights in the Multimedia Assets, that the Multimedia Assets do not infringe the rights of any third party, and that you have the right to grant this license to Coinbase.
115124

apps/base-docs/docs/components/App.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
'use client';
2+
23
import { OnchainKitProvider } from '@coinbase/onchainkit';
34
import '@coinbase/onchainkit/styles.css';
45
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
@@ -8,6 +9,7 @@ import { base, baseSepolia } from 'wagmi/chains';
89
import { coinbaseWallet } from 'wagmi/connectors';
910
import { useTheme } from '../contexts/Theme.tsx';
1011
import { defineChain } from 'viem';
12+
1113
const queryClient = new QueryClient();
1214

1315
export const SANDBOX_CHAIN = defineChain({
@@ -65,9 +67,7 @@ export default function App({ children }: { children: ReactNode }) {
6567
},
6668
}}
6769
>
68-
<div style={{ display: 'flex', flexDirection: 'column' }}>
69-
{children}
70-
</div>
70+
<div style={{ display: 'flex', flexDirection: 'column' }}>{children}</div>
7171
</OnchainKitProvider>
7272
</QueryClientProvider>
7373
</WagmiProvider>
Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
1-
interface BrowseCardProps {
1+
type BrowseCardProps = {
22
title: string;
33
description: string;
44
icon: React.ReactNode;
55
href?: string;
6-
}
6+
};
77

88
export function BrowseCard({ title, description, icon, href }: BrowseCardProps) {
99
const CardWrapper = href ? 'a' : 'div';
10-
10+
1111
return (
12-
<CardWrapper
12+
<CardWrapper
1313
href={href}
14-
className="block h-full p-6 rounded-lg bg-zinc-100 dark:bg-zinc-900 hover:bg-zinc-200 dark:hover:bg-zinc-800 transition-colors"
14+
className="block h-full rounded-lg bg-zinc-100 p-6 transition-colors hover:bg-zinc-200 dark:bg-zinc-900 dark:hover:bg-zinc-800"
1515
>
1616
<div className="flex flex-col gap-4">
17-
<div className="h-12 w-12 text-blue-500">
18-
{icon}
19-
</div>
17+
<div className="h-12 w-12 text-blue-500">{icon}</div>
2018
<div>
21-
<h3 className="text-lg font-semibold text-white mb-1 my-4">{title}</h3>
19+
<h3 className="my-4 mb-1 text-lg font-semibold text-white">{title}</h3>
2220
<p className="text-zinc-400">{description}</p>
2321
</div>
2422
</div>
2523
</CardWrapper>
2624
);
27-
}
25+
}

apps/base-docs/docs/components/BrowseUseCaseCard.tsx

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,22 @@
1-
interface BrowseUseCaseCardProps {
1+
type BrowseUseCaseCardProps = {
22
title: string;
33
description: string;
44
icon: React.ReactNode;
55
href?: string;
6-
}
6+
};
77

88
export function BrowseUseCaseCard({ title, description, icon, href }: BrowseUseCaseCardProps) {
99
const CardWrapper = href ? 'a' : 'div';
1010

1111
return (
12-
<CardWrapper
13-
href={href}
14-
className="block h-[420px]"
15-
>
16-
<div className="flex flex-col h-full">
17-
<div className="h-[280px] w-full flex items-center dark:bg-zinc-900 justify-center mb-4 rounded-lg">
18-
<div className="w-[60%] mx-auto flex items-center justify-center">
19-
{icon}
20-
</div>
12+
<CardWrapper href={href} className="block h-[420px]">
13+
<div className="flex h-full flex-col">
14+
<div className="mb-4 flex h-[280px] w-full items-center justify-center rounded-lg dark:bg-zinc-900">
15+
<div className="mx-auto flex w-[60%] items-center justify-center">{icon}</div>
2116
</div>
2217

23-
<div className="flex flex-col flex-1">
24-
<h3 className="text-lg font-bold text-white mb-1">{title}</h3>
18+
<div className="flex flex-1 flex-col">
19+
<h3 className="mb-1 text-lg font-bold text-white">{title}</h3>
2520
<p className="text-zinc-400">{description}</p>
2621
</div>
2722
</div>

apps/base-docs/docs/components/Button/index.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import { ButtonHTMLAttributes } from 'react';
44
import classNames from 'classnames';
5-
import { ButtonVariants, ButtonSizes } from 'apps/web/src/components/base-org/Button/types';
6-
import { Icon, IconProps } from 'apps/web/src/components/Icon/Icon';
5+
import { Icon, IconProps } from '../base-org/Icon/Icon.tsx';
6+
import { ButtonVariants, ButtonSizes } from './types.ts';
77

88
export type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
99
connectWallet?: boolean;
@@ -87,7 +87,9 @@ export default function Button({
8787
return (
8888
<button type="button" onClick={onClick} disabled={disabled} className={buttonClasses}>
8989
<span>{children}</span>
90-
{iconName && <Icon name={iconName} width={iconSize} height={iconSize} color="currentColor" />}
90+
{iconName && (
91+
<Icon name={iconName as string} width={iconSize} height={iconSize} color="currentColor" />
92+
)}
9193
</button>
9294
);
9395
}

apps/base-docs/docs/components/BuyWrapper.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
'use client';
2+
23
import type { SwapError } from '@coinbase/onchainkit/swap';
34
import type { Token } from '@coinbase/onchainkit/token';
45
import { type ReactNode, useCallback } from 'react';

apps/base-docs/docs/components/CafeUnitTest/index.jsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/* eslint-disable */
2+
23
import React from 'react';
34
import { useEffect, useState, Suspense } from 'react';
4-
import { useAccount } from 'wagmi';
5+
import { useAccount, useSwitchChain } from 'wagmi';
56
import { useReadContract, useWriteContract, useWaitForTransactionReceipt } from 'wagmi';
67
import { WagmiProvider, createConfig, http } from 'wagmi';
78
import { mainnet, base, baseSepolia, baseGoerli } from 'wagmi/chains';
@@ -139,6 +140,7 @@ const wagmiConfig = createConfig({
139140

140141
export function CafeUnitTest({ nftNum }) {
141142
const { isConnecting, isDisconnected, address, chain } = useAccount();
143+
const { switchChain } = useSwitchChain();
142144

143145
const [messages, setMessages] = useState(['Submit your contract address.']);
144146
const [contractFormEntry, setContractFormEntry] = useState('');
@@ -409,6 +411,23 @@ export function CafeUnitTest({ nftNum }) {
409411
if (isConnecting) {
410412
return <div>Connecting...</div>;
411413
}
414+
if (chain?.id !== baseSepolia.id) {
415+
return (
416+
<div>
417+
<div>You are not connected to Base Sepolia</div>
418+
<button
419+
style={{
420+
...buttonStyle,
421+
...buttonEnabledColor,
422+
marginTop: '10px',
423+
}}
424+
onClick={() => switchChain({ chainId: baseSepolia.id })}
425+
>
426+
Switch to Base Sepolia
427+
</button>
428+
</div>
429+
);
430+
}
412431
return (
413432
<div>
414433
<hr />

0 commit comments

Comments
 (0)