Skip to content

Commit 70628b3

Browse files
authored
Merge pull request #14781 from JoeChenJ/Shadcn_migrate_BoxGrid.tsx
Shadcn Migrate: BoxGrid.tsx
2 parents 0e9b8c7 + 5b35194 commit 70628b3

File tree

1 file changed

+24
-53
lines changed

1 file changed

+24
-53
lines changed

src/components/BoxGrid.tsx

Lines changed: 24 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import React, { useState } from "react"
2-
import { Box, Flex, GridItem, SimpleGrid } from "@chakra-ui/react"
32

43
import { cn } from "@/lib/utils/cn"
54
import { MatomoEventOptions, trackCustomEvent } from "@/lib/utils/matomo"
65

6+
import { Flex } from "./ui/flex"
77
import Emoji from "./Emoji"
8-
import OldHeading from "./OldHeading"
9-
import Text from "./OldText"
108

119
export interface BoxItem {
1210
emoji: string
@@ -32,54 +30,33 @@ const hashCode = (stringPhrase: string): number => {
3230

3331
// Theme variables from Theme.js
3432
const colors = [
35-
"gridYellow",
36-
"gridRed",
37-
"gridBlue",
38-
"gridGreen",
39-
"warning",
40-
"gridPink",
41-
"gridPurple",
33+
"bg-[#ffe78e]",
34+
"bg-[#ef7d7d]",
35+
"bg-[#a7d0f4]",
36+
"bg-[#6fc4a0]",
37+
"bg-[#ffe3d3]",
38+
"bg-[#ffa1c3]",
39+
"bg-[#a4a4ff]",
4240
]
4341

4442
const BoxGrid = ({ items }: BoxGridProps) => {
4543
const [indexOpen, setOpenIndex] = useState(0)
4644

4745
return (
48-
<SimpleGrid columns={{ base: 1, lg: 4 }} my={16} borderRadius="sm">
46+
<div className="my-16 grid grid-cols-1 rounded-sm lg:grid-cols-4">
4947
{items.map((item, idx: number) => {
50-
let columnNumber = idx + 1
51-
if (columnNumber > 4) {
52-
columnNumber = columnNumber - 3
53-
}
5448
const colorIdx = hashCode(item.emoji) % colors.length
5549
const color = colors[colorIdx]
5650
const isOpen = idx === indexOpen
5751

5852
return (
59-
<GridItem
60-
as={Flex}
61-
rowStart={{ ...(isOpen && { lg: 1 }) }}
62-
rowEnd={{ ...(isOpen && { lg: 3 }) }}
63-
colStart={{ ...(isOpen && { lg: columnNumber }) }}
64-
color={isOpen ? "black300" : "text"}
65-
cursor="pointer"
66-
bg={isOpen ? color : "background.base"}
67-
direction={{
68-
base: isOpen ? "column" : "column-reverse",
69-
sm: isOpen ? "column" : "row-reverse",
70-
lg: isOpen ? "column" : "column-reverse",
71-
}}
72-
align={{ base: "center", lg: "stretch" }}
73-
justify="space-between"
74-
border="1px solid"
75-
borderColor="text"
76-
p={6}
77-
_hover={{
78-
bg: isOpen ? color : "ednBackground",
79-
transition: "transform 0.5s",
80-
transform: "skewX(-5deg)",
81-
boxShadow: "tableBoxShadow",
82-
}}
53+
<Flex
54+
className={cn(
55+
"cursor-pointer items-center justify-between border border-body p-6 transition-transform duration-500 hover:-skew-x-6 hover:shadow-table-box-hover lg:items-stretch",
56+
isOpen
57+
? `flex-col text-gray-600 sm:flex-col lg:row-start-1 lg:row-end-3 lg:flex-col ${color}`
58+
: "flex-col-reverse bg-background text-body hover:bg-background-highlight sm:flex-row-reverse lg:flex-col-reverse"
59+
)}
8360
onClick={() => {
8461
setOpenIndex(idx)
8562
trackCustomEvent({
@@ -99,26 +76,20 @@ const BoxGrid = ({ items }: BoxGridProps) => {
9976
)}
10077
text={item.emoji}
10178
/>
102-
<Box>
103-
<OldHeading
104-
as="h3"
105-
fontSize="2.5rem"
106-
fontWeight="normal"
107-
mt={0}
108-
lineHeight={1.4}
109-
>
79+
<div>
80+
<h3 className="mb-8 mt-0 text-[2.5rem] font-normal leading-xs">
11081
{item.title}
111-
</OldHeading>
82+
</h3>
11283
{isOpen && (
113-
<Text fontSize="xl" lineHeight={1.4} color="black300">
84+
<p className="mb-6 text-xl leading-xs text-gray-600">
11485
{item.description}
115-
</Text>
86+
</p>
11687
)}
117-
</Box>
118-
</GridItem>
88+
</div>
89+
</Flex>
11990
)
12091
})}
121-
</SimpleGrid>
92+
</div>
12293
)
12394
}
12495

0 commit comments

Comments
 (0)