Skip to content

Commit 31e94aa

Browse files
authored
Merge pull request #14712 from JoeChenJ/Shadcn_Migrate_developers/index.ts
Shadcn Migrate: developers/index.ts
2 parents 20c6a94 + 4ec2bfb commit 31e94aa

File tree

1 file changed

+58
-95
lines changed

1 file changed

+58
-95
lines changed

src/pages/developers/index.tsx

Lines changed: 58 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,24 @@
1-
import { ReactNode } from "react"
1+
import { HTMLAttributes, ReactNode } from "react"
22
import { GetStaticProps } from "next"
33
import { useTranslation } from "next-i18next"
44
import { serverSideTranslations } from "next-i18next/serverSideTranslations"
5-
import {
6-
Box,
7-
chakra,
8-
Flex,
9-
Heading,
10-
SimpleGrid,
11-
Stack,
12-
TextProps,
13-
} from "@chakra-ui/react"
145

156
import { BasePageProps, ChildOnlyProp, Lang } from "@/lib/types"
167

17-
import ButtonLink from "@/components/Buttons/ButtonLink"
188
import Callout from "@/components/Callout"
199
import Card, { CardProps } from "@/components/Card"
2010
import FeedbackCard from "@/components/FeedbackCard"
11+
import Heading from "@/components/Heading"
2112
import HubHero from "@/components/Hero/HubHero"
22-
import { Image } from "@/components/Image"
23-
import InlineLink from "@/components/Link"
13+
import { TwImage } from "@/components/Image"
2414
import MainArticle from "@/components/MainArticle"
25-
import OldHeading from "@/components/OldHeading"
26-
import Text from "@/components/OldText"
2715
import PageMetadata from "@/components/PageMetadata"
2816
import Translation from "@/components/Translation"
17+
import { ButtonLink } from "@/components/ui/buttons/Button"
18+
import { Flex, Stack, VStack } from "@/components/ui/flex"
19+
import InlineLink from "@/components/ui/Link"
2920

21+
import { cn } from "@/lib/utils/cn"
3022
import { existsNamespace } from "@/lib/utils/existsNamespace"
3123
import { getLastDeployDate } from "@/lib/utils/getLastDeployDate"
3224
import { getLocaleTimestamp } from "@/lib/utils/time"
@@ -38,77 +30,67 @@ import DogeImage from "@/public/images/doge-computer.png"
3830
import HeroImage from "@/public/images/heroes/developers-hub-hero.jpg"
3931

4032
const Page = (props: ChildOnlyProp) => (
41-
<Flex
42-
flexDirection="column"
43-
alignItems="center"
44-
w="full"
45-
my={0}
46-
mx="auto"
47-
{...props}
48-
/>
33+
<VStack className="mx-auto my-0 w-full" {...props} />
4934
)
5035

5136
const GrayContainer = (props: ChildOnlyProp) => (
52-
<Box
53-
w="full"
54-
py={16}
55-
px={0}
56-
mt={8}
57-
bg="grayBackground"
58-
boxShadow="inset 0px 1px 0px var(--eth-colors-tableItemBoxShadow)"
37+
<div
38+
className="mt-8 w-full border-t bg-background-highlight px-0 py-16 shadow-table-item-box"
5939
{...props}
6040
/>
6141
)
6242

6343
const Content = (props: ChildOnlyProp) => (
64-
<Box as={MainArticle} py={4} px={8} w="full" {...props} />
44+
<MainArticle className="w-full px-8 py-4" {...props} />
6545
)
6646

67-
const Subtitle = (props: TextProps) => (
68-
<Text fontSize="xl" lineHeight="140%" color="text200" {...props} />
47+
const Subtitle = ({
48+
className,
49+
...props
50+
}: HTMLAttributes<HTMLHeadingElement>) => (
51+
<p className={cn("leading-xs text-body-medium", className)} {...props} />
6952
)
7053

71-
const MonoSubtitle = (props: ChildOnlyProp) => <OldHeading mb={0} {...props} />
54+
const MonoSubtitle = (props: ChildOnlyProp) => (
55+
<h2 className="mb-0 mt-12" {...props} />
56+
)
57+
58+
const H2 = (props: ChildOnlyProp) => <h2 className="mb-8 mt-12" {...props} />
59+
60+
const H3 = (props: ChildOnlyProp) => <h3 className="mb-8 mt-10" {...props} />
61+
62+
const Text = (props: ChildOnlyProp) => <p className="mb-6" {...props} />
7263

7364
const StyledCardContainer = (props: ChildOnlyProp) => (
74-
<SimpleGrid columns={[1, 1, 2, 4]} mx={-4} mt={8} mb={12} {...props} />
65+
<div
66+
className="-mx-4 mb-12 mt-8 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
67+
{...props}
68+
/>
7569
)
7670

7771
const TwoColumnContent = (props: ChildOnlyProp) => (
7872
<Flex
79-
justifyContent="space-between"
80-
alignItems={{ base: "flex-start", lg: "center" }}
81-
flexDirection={{ base: "column", lg: "row" }}
82-
w="100%"
73+
className="w-full flex-col items-start justify-between lg:flex-row lg:items-center"
8374
{...props}
8475
/>
8576
)
8677

8778
const ThreeColumnContent = (props: ChildOnlyProp) => (
8879
<Flex
89-
py={0}
90-
px={8}
91-
w="full"
92-
justifyContent="space-between"
93-
alignItems={{ base: "flex-start", lg: "flex-start" }}
94-
flexDirection={{ base: "column", lg: "row" }}
80+
className="flex-col items-start justify-between px-8 py-0 lg:flex-row"
9581
{...props}
9682
/>
9783
)
9884

9985
const Column = (props: ChildOnlyProp) => (
100-
<Box flex="1 1 33%" mb={6} me={8} w="full" {...props} />
86+
<div className="mb-6 me-8 w-full flex-1 basis-1/3" {...props} />
10187
)
10288
const RightColumn = (props: ChildOnlyProp) => (
103-
<Box flex="1 1 33%" mb={6} me={0} w="full" {...props} />
89+
<div className="mb-6 me-0 w-full flex-1 basis-1/3" {...props} />
10490
)
10591
const IntroColumn = (props: ChildOnlyProp) => (
106-
<Box
107-
flex="1 1 33%"
108-
mb={6}
109-
mt={{ base: 0, lg: 32 }}
110-
me={{ base: 0, sm: 8 }}
111-
w="full"
92+
<div
93+
className="mb-6 me-0 mt-0 w-full flex-1 basis-1/3 sm:me-8 lg:mt-32"
11294
{...props}
11395
/>
11496
)
@@ -122,44 +104,26 @@ const StyledCard = (props: CardProps) => {
122104
)
123105
}
124106

125-
const StyledCallout = chakra(Callout, {
126-
baseStyle: {
127-
flex: { base: "auto", md: "1 1 416px" },
128-
},
129-
})
130-
131107
const SpeedRunEthereumBanner = ({
132108
title,
133109
linkLabel,
134110
}: {
135111
title: string
136112
linkLabel: string
137113
}) => (
138-
<Box position="relative" mb={{ xl: 12 }}>
139-
<Image
114+
<div className="relative xl:mb-12">
115+
<TwImage
116+
className="h-[450px] xl:h-auto"
140117
src={SpeedRunEthereumImage}
141118
alt="SpeedRunEthereum banner"
142119
sizes="100vw"
143120
style={{ width: "100vw", objectFit: "cover", objectPosition: "20%" }}
144-
h={{
145-
base: "450px",
146-
xl: "auto",
147-
}}
148121
/>
149-
<Stack
150-
spacing={{ base: "3", md: "4" }}
151-
p={{ base: "6", lg: "8" }}
152-
position="absolute"
153-
insetInlineStart={{ md: "8" }}
154-
maxW={{ base: "lg", xl: "xl" }}
155-
top={{ base: "0", md: "50" }}
156-
wordBreak="break-word"
157-
alignItems="flex-start"
158-
>
122+
<Stack className="absolute top-0 max-w-lg items-start space-y-3 break-words p-6 md:top-12 md:ms-8 md:space-y-4 lg:p-8 xl:max-w-xl">
159123
<Heading>{title}</Heading>
160124
<ButtonLink href="https://speedrunethereum.com/">{linkLabel}</ButtonLink>
161125
</Stack>
162-
</Box>
126+
</div>
163127
)
164128

165129
export const getStaticProps = (async ({ locale }) => {
@@ -282,10 +246,10 @@ const DevelopersPage = () => {
282246
/>
283247
<TwoColumnContent>
284248
<IntroColumn>
285-
<OldHeading>
249+
<H2>
286250
<Translation id="page-developers-index:page-developers-about" />
287-
</OldHeading>
288-
<Subtitle mb={6}>
251+
</H2>
252+
<Subtitle className="mb-6">
289253
<Translation id="page-developers-index:page-developers-about-desc" />
290254
</Subtitle>
291255
<Text>
@@ -298,7 +262,8 @@ const DevelopersPage = () => {
298262
</InlineLink>
299263
</Text>
300264
</IntroColumn>
301-
<StyledCallout
265+
<Callout
266+
className="flex-auto md:flex-[1_1_416px]"
302267
image={DevelopersImage}
303268
titleKey="page-developers-index:page-developers-improve-ethereum"
304269
descriptionKey="page-developers-index:page-developers-improve-ethereum-desc"
@@ -309,21 +274,21 @@ const DevelopersPage = () => {
309274
<Translation id="page-developers-index:page-developers-contribute" />
310275
</ButtonLink>
311276
</div>
312-
</StyledCallout>
277+
</Callout>
313278
</TwoColumnContent>
314279
</Content>
315280
<GrayContainer>
316281
<Content>
317-
<OldHeading>
282+
<H2>
318283
<Translation id="page-developers-index:page-developers-explore-documentation" />
319-
</OldHeading>
284+
</H2>
320285
</Content>
321286

322287
<ThreeColumnContent>
323288
<Column>
324-
<OldHeading as="h3" fontSize={{ base: "xl", md: "2xl" }}>
289+
<H3>
325290
<Translation id="page-developers-index:page-developers-docs-introductions" />
326-
</OldHeading>
291+
</H3>
327292
<InlineLink href="/developers/docs/intro-to-ethereum/">
328293
<Translation id="page-developers-index:page-developers-intro-eth-link" />
329294
</InlineLink>
@@ -365,18 +330,16 @@ const DevelopersPage = () => {
365330
<Text>
366331
<Translation id="page-developers-index:page-developers-language-desc" />
367332
</Text>
368-
<Image
369-
hideBelow="lg"
333+
<TwImage
334+
className="mt-16 hidden max-w-[400px] lg:block"
370335
src={DogeImage}
371336
alt={t("page-assets-doge")}
372-
maxW="400px"
373-
mt={16}
374337
/>
375338
</Column>
376339
<Column>
377-
<OldHeading as="h3" fontSize={{ base: "xl", md: "2xl" }}>
340+
<H3>
378341
<Translation id="page-developers-index:page-developers-fundamentals" />
379-
</OldHeading>
342+
</H3>
380343
<InlineLink href="/developers/docs/accounts/">
381344
<Translation id="page-developers-index:page-developers-accounts-link" />
382345
</InlineLink>
@@ -441,9 +404,9 @@ const DevelopersPage = () => {
441404
</Text>
442405
</Column>
443406
<RightColumn>
444-
<OldHeading as="h3" fontSize={{ base: "xl", md: "2xl" }}>
407+
<H3>
445408
<Translation id="page-developers-index:page-developers-stack" />
446-
</OldHeading>
409+
</H3>
447410
<InlineLink href="/developers/docs/smart-contracts/">
448411
<Translation id="page-developers-index:page-developers-smart-contracts-link" />
449412
</InlineLink>
@@ -492,9 +455,9 @@ const DevelopersPage = () => {
492455
<Text>
493456
<Translation id="page-developers-index:page-developers-dev-env-desc" />
494457
</Text>
495-
<OldHeading as="h3" fontSize={{ base: "xl", md: "2xl" }}>
458+
<H3>
496459
<Translation id="page-developers-index:page-developers-advanced" />
497-
</OldHeading>
460+
</H3>
498461
<InlineLink href="/developers/docs/standards/tokens/">
499462
<Translation id="page-developers-index:page-developers-token-standards-link" />
500463
</InlineLink>

0 commit comments

Comments
 (0)