From a1f2646a89cfa7a8072d7f98befa25906fcf6e56 Mon Sep 17 00:00:00 2001 From: holybasil Date: Thu, 13 Feb 2025 22:46:47 +0800 Subject: [PATCH 01/12] feat: new navbar --- package.json | 6 +- postcss.config.js | 6 - postcss.config.mjs | 6 + src/app/globals.css | 7 +- src/components/Header/MenuItem.tsx | 32 ++ src/components/Header/MobileNavBarItem.tsx | 31 ++ src/components/Header/NavbarItem.tsx | 45 ++ src/components/Header/data.ts | 250 ++++++++++ src/components/Header/desktop_header.tsx | 310 +++--------- src/components/Header/index.tsx | 4 +- src/components/Header/mobile_header.tsx | 217 +++------ src/theme/index.tsx | 15 +- tailwind.config.ts | 3 + yarn.lock | 526 ++++++++------------- 14 files changed, 741 insertions(+), 717 deletions(-) delete mode 100644 postcss.config.js create mode 100644 postcss.config.mjs create mode 100644 src/components/Header/MenuItem.tsx create mode 100644 src/components/Header/MobileNavBarItem.tsx create mode 100644 src/components/Header/NavbarItem.tsx create mode 100644 src/components/Header/data.ts diff --git a/package.json b/package.json index 15740e282..cdef22595 100644 --- a/package.json +++ b/package.json @@ -30,10 +30,12 @@ "@next/third-parties": "^15.1.5", "@rainbow-me/rainbowkit": "^2.1.2", "@sentry/nextjs": "^7.95.0", + "@tailwindcss/postcss": "^4.0.6", "@tanstack/react-query": "^5.55.3", "@tanstack/react-virtual": "^3.11.2", "@types/mdx": "^2.0.13", "@typescript-eslint/parser": "^8.4.0", + "clsx": "^2.1.1", "copy-to-clipboard": "^3.3.2", "dayjs": "^1.11.5", "ethers": "6.12.0", @@ -90,11 +92,11 @@ "eslint-plugin-prettier": "^5.1.3", "husky": "^8.0.2", "pino-pretty": "^10.3.1", - "postcss": "^8.4.17", + "postcss": "^8.5.2", "prettier": "^3.2.4", "raw-loader": "^4.0.2", "sitemap": "^7.1.1", - "tailwindcss": "^3.3.0", + "tailwindcss": "^4.0.6", "turbo": "^2.4.2", "typescript": "^5.1.6" }, diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 33ad091d2..000000000 --- a/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 000000000..736723c67 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,6 @@ +const config = { + plugins: { + "@tailwindcss/postcss": {}, + }, +} +export default config diff --git a/src/app/globals.css b/src/app/globals.css index 1438d3b0e..29b500209 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,6 +1,7 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +@layer base, utilities; +@import "tailwindcss/theme.css" layer(theme); +@import "tailwindcss/preflight.css" layer(base); +@import "tailwindcss/utilities.css" layer(utilities); img, svg, diff --git a/src/components/Header/MenuItem.tsx b/src/components/Header/MenuItem.tsx new file mode 100644 index 000000000..16417f95f --- /dev/null +++ b/src/components/Header/MenuItem.tsx @@ -0,0 +1,32 @@ +import clsx from "clsx" +import Link from "next/link" + +import ExternalLinkSvg from "@/assets/svgs/common/external-link.svg" + +const MenuItem = props => { + const { children, href, isActive, dark } = props + const isExternal = href?.startsWith("http") + + return ( + + {children} + + {isExternal && ( + + + + )} + + ) +} + +export default MenuItem diff --git a/src/components/Header/MobileNavBarItem.tsx b/src/components/Header/MobileNavBarItem.tsx new file mode 100644 index 000000000..f90162527 --- /dev/null +++ b/src/components/Header/MobileNavBarItem.tsx @@ -0,0 +1,31 @@ +import { ListItemButton } from "@mui/material" + +const MobileNavbarItem = props => { + const { dark, children, ...restProps } = props + return ( + `1px solid ${dark ? theme.vars.palette.primary.contrastText : theme.vars.palette.text.primary}`, + }, + }} + {...restProps} + > + {children} + + ) +} + +export default MobileNavbarItem diff --git a/src/components/Header/NavbarItem.tsx b/src/components/Header/NavbarItem.tsx new file mode 100644 index 000000000..6e6b8baf3 --- /dev/null +++ b/src/components/Header/NavbarItem.tsx @@ -0,0 +1,45 @@ +import clsx from "clsx" + +import { Box, Typography } from "@mui/material" + +import TriangleDownSvg from "@/assets/svgs/common/header-triangle-down.svg" + +const NavbarItem = props => { + const { children, dark, isActive, isHovering, isNew, ...restProps } = props + return ( + + {children} + {isNew && ( + + NEW + + )} + + + ) +} + +export default NavbarItem diff --git a/src/components/Header/data.ts b/src/components/Header/data.ts new file mode 100644 index 000000000..e16c85685 --- /dev/null +++ b/src/components/Header/data.ts @@ -0,0 +1,250 @@ +import BridgeSvg from "@/assets/svgs/header/Bridge.svg" +import BuildSvg from "@/assets/svgs/header/Build.svg" +import CommunitySvg from "@/assets/svgs/header/Community.svg" +import DocsSvg from "@/assets/svgs/header/Doc.svg" +import EthereumSvg from "@/assets/svgs/header/Eth.svg" +import ForumSvg from "@/assets/svgs/header/Forum.svg" +import HomeSvg from "@/assets/svgs/header/Home.svg" +import IssuesSvg from "@/assets/svgs/header/Issues.svg" +import LevelUpSvg from "@/assets/svgs/header/LevelUp.svg" +import ProjectsSvg from "@/assets/svgs/header/Projects.svg" +import SCRsSCRSvg from "@/assets/svgs/header/SCRsSCR.svg" +import SDKSvg from "@/assets/svgs/header/SDK.svg" +import SessionsSvg from "@/assets/svgs/header/Sessions.svg" +import StatusSvg from "@/assets/svgs/header/Status.svg" +import scrETHSvg from "@/assets/svgs/header/scrETH.svg" +import { isSepolia } from "@/utils" + +const sepoliaNavigations = [ + { + label: "Develop", + key: "develop", + children: [ + { + label: "", + children: [ + { + label: "Mainnet", + key: "mainnet-resources", + rootKey: "develop", + href: "https://scroll.io/portal", + isExternal: true, + }, + { + label: "Sepolia Testnet", + key: "sepolia-resources", + rootKey: "develop", + href: "/portal", + }, + { + label: "Docs", + key: "docs", + href: "https://docs.scroll.io/en/home/", + isExternal: true, + }, + { + label: "Status", + key: "status", + href: "https://status.scroll.io/", + isExternal: true, + }, + { + label: "Bug Bounty", + key: "bug-bounty", + href: "https://immunefi.com/bounty/scroll/", + isExternal: true, + }, + ], + }, + { + label: "BLOCK EXPLORERS", + children: [ + { + label: "Rollup Explorer", + key: "rollupscan", + href: "/rollupscan", + rootKey: "develop", + }, + { + label: "Scrollscan", + key: "etherscan", + href: process.env.NEXT_PUBLIC_EXTERNAL_EXPLORER_URI_L2, + isExternal: true, + }, + { + label: "L2 Scan", + key: "l2-scan", + href: process.env.NEXT_PUBLIC_L2_SCAN_URI, + isExternal: true, + }, + { + label: "Dora Explorer", + key: "dora", + href: process.env.NEXT_PUBLIC_EXTERNAL_EXPLORER_URI_DORA, + isExternal: true, + }, + ], + }, + ], + }, + { + label: "Bridge", + key: "bridge", + href: "/bridge", + }, +] + +const mainnetNavigations = [ + { + label: "Build", + key: "build", + children: [ + { + rootKey: "build", + label: "Docs", + key: "docs", + href: "https://docs.scroll.io/en/home/", + }, + { + rootKey: "build", + label: "Scroll Open", + key: "scroll-open", + href: "https://open.scroll.io", + }, + { + rootKey: "build", + label: "Level Up", + key: "level-up", + href: "https://levelupweb3.xyz", + }, + { + rootKey: "build", + label: "Block Explorer", + key: "block-explorer", + href: "https://scrollscan.com/", + isExternal: true, + icon: StatusSvg, + }, + ], + }, + { + label: "Explore", + key: "explore", + children: [ + { + rootKey: "explore", + label: "Projects", + key: "projects", + href: "/ecosystem", + }, + { + rootKey: "explore", + label: "Bridge", + key: "bridge", + href: "/bridge", + icon: ProjectsSvg, + }, + { + rootKey: "explore", + label: "SCR", + key: "scr", + href: "/SCR-sSCR", + }, + ], + }, + { + label: "Participate", + key: "participate", + children: [ + { + rootKey: "participate", + label: "Session 2", + key: "session-2", + href: "/sessions", + reload: true, + }, + { + rootKey: "participate", + label: "Governance", + key: "governance", + href: "https://gov.scroll.io/info", + isExternal: true, + }, + { + rootKey: "participate", + label: "Community", + key: "community", + href: "/community", + }, + { + rootKey: "participate", + label: "Bug Bounty", + key: "bug-bounty", + href: "https://immunefi.com/bug-bounty/scroll/information/", + }, + ], + }, + { + label: "Vision", + key: "vision", + children: [ + { + rootKey: "vision", + label: "Research", + key: "research", + href: "https://scroll.io/research", + }, + { + rootKey: "vision", + label: "Technology", + key: "technology", + href: "https://docs.scroll.io/en/technology/", + }, + { + rootKey: "vision", + label: "Strategy", + key: "strategy", + href: "https://scroll.io/blog/vision-and-values", + }, + ], + }, + { + label: "Resources", + key: "resources", + children: [ + { + rootKey: "resources", + label: "Blog", + key: "blog", + href: "/blog", + }, + { + rootKey: "resources", + label: "Brand Kit", + key: "brand kit", + href: "/brand-kit", + }, + { + rootKey: "resources", + label: "Audits", + key: "audits", + href: "https://docs.scroll.io/en/technology/security/audits-and-bug-bounty/", + }, + { + rootKey: "resources", + label: "Jobs", + key: "jobs", + href: "/join-us", + }, + { + label: "Whitepaper", + key: "whitepaper", + href: "https://scroll.io/files/whitepaper.pdf", + }, + ], + }, +] + +const navigations = isSepolia ? sepoliaNavigations : mainnetNavigations + +export { navigations } diff --git a/src/components/Header/desktop_header.tsx b/src/components/Header/desktop_header.tsx index 958cd6733..bb7440970 100644 --- a/src/components/Header/desktop_header.tsx +++ b/src/components/Header/desktop_header.tsx @@ -1,12 +1,8 @@ -// import { default as NavLink } from "next/link" import { sendGAEvent } from "@next/third-parties/google" import React, { useState } from "react" -import { useStyles } from "tss-react/mui" -import { Box, Container, Fade, Link, Popper, Stack, SvgIcon, Typography } from "@mui/material" -import { styled } from "@mui/material/styles" +import { Box, Container, Fade, Paper, Popper, Stack } from "@mui/material" -import TriangleDownSvg from "@/assets/svgs/common/header-triangle-down.svg" import LanguageSelect from "@/components/LanguageSelect" import ScrollLink from "@/components/Link" import Logo from "@/components/ScrollLogo" @@ -15,127 +11,21 @@ import useCheckViewport from "@/hooks/useCheckViewport" import useShowLanguageSelect from "@/hooks/useShowLanguageSelect" import useShowWalletConnector from "@/hooks/useShowWalletToolkit" -import SubmenuLink from "./SubmenuLink" +import MenuItem from "./MenuItem" +import NavbarItem from "./NavbarItem" import Announcement from "./announcement" -import { navigations } from "./constants" +// import { navigations } from "./constants" +import { navigations } from "./data" import useCheckCustomNavBarBg from "./useCheckCustomNavBarBg" import useCheckTheme from "./useCheckTheme" -const StyledBox = styled(Stack, { shouldForwardProp: prop => prop !== "dark" && prop !== "bgColor" })(({ theme, bgColor, dark }) => ({ - position: "sticky", - top: 0, - width: "100%", - zIndex: 10, - backgroundColor: bgColor - ? theme.vars.palette.themeBackground[bgColor] - : dark - ? theme.vars.palette.themeBackground.dark - : theme.vars.palette.themeBackground.light, -})) - -const StyledPopper = styled(Popper, { shouldForwardProp: prop => prop !== "dark" })(({ theme, dark }) => ({ - // backgroundColor: bgColor ? theme.vars.palette.themeBackground[bgColor] : dark ? theme.vars.palette.themeBackground.dark : theme.vars.palette.themeBackground.light, - marginLeft: "-2.4rem !important", - zIndex: theme.vars.zIndex.appBar, -})) - -const StyledFade = styled(Fade)(({}) => ({ - padding: "2.4rem", - background: "#FFFFFF", - borderRadius: "1rem", - minWidth: "16.8rem", - transformOrigin: "top", - boxShadow: "0px 0px 10px 0px rgba(0, 0, 0, 0.10)", - marginTop: "-0.4rem", -})) - -const HeaderContainer = styled(Box)(({}) => ({ - display: "flex", - justifyContent: "space-between", - alignItems: "center", -})) as typeof Box - -const MenuLinkButton = styled(Link, { shouldForwardProp: prop => prop !== "dark" })(({ theme, dark }) => ({ - fontSize: "1.8rem", - fontWeight: 400, - marginLeft: "4px", - marginRight: "4px", - lineHeight: "65px", - position: "relative", - color: dark ? theme.vars.palette.primary.contrastText : theme.vars.palette.text.primary, - "&:hover": { - fontWeight: 500, - }, -})) - -const LinkStyledButton = styled(ScrollLink, { shouldForwardProp: prop => prop !== "dark" })(({ theme, dark }) => ({ - fontSize: "1.8rem", - fontWeight: 400, - marginLeft: "0.5rem", - marginRight: "0.5rem", - lineHeight: "65px", - position: "relative", - color: dark ? theme.vars.palette.primary.contrastText : theme.vars.palette.text.primary, - whiteSpace: "nowrap", - "&:hover": { - fontWeight: 500, - color: theme.vars.palette.primary.main, - }, - "&.active": { - fontWeight: 600, - color: theme.vars.palette.primary.main, - }, -})) - -const SubMenuButton = styled(Stack, { shouldForwardProp: prop => prop !== "dark" })(({ theme, dark }) => ({ - fontSize: "1.8rem", - fontWeight: 400, - marginLeft: "0.5rem", - marginRight: "0.5rem", - lineHeight: "65px", - position: "relative", - cursor: "pointer", - color: dark ? theme.vars.palette.primary.contrastText : theme.vars.palette.text.primary, - "&.active": { - fontWeight: 600, - color: theme.vars.palette.primary.main, - }, - "& .expand-more": { - willChange: "transform", - transition: "transform .3s ease-in-out", - }, - "& .expand-more-reverse": { - fontWeight: 500, - transform: "rotate(180deg)", - }, -})) - -const SubMenuList = styled(Box)(({}) => ({ - display: "flex", - flexDirection: "row", - overflow: "hidden", -})) as typeof Box - -const SectionList = styled(Box)(({ theme }) => ({ - display: "flex", - flexDirection: "column", - flex: 1, - gap: "1.6rem", - "&:nth-of-type(n+2)": { - borderLeft: `1px solid ${theme.vars.palette.text.primary}`, - paddingLeft: "2.4rem", - marginLeft: "2.4rem", - }, -})) - const DesktopHeader = ({ currentMenu }) => { - const { cx } = useStyles() - const [isHover, setIsHover] = useState(false) - const navbarBg = useCheckCustomNavBarBg({ isHover }) + const [isHoveringNavbar, setIsHoveringNavbar] = useState(false) + const navbarBg = useCheckCustomNavBarBg({ isHover: isHoveringNavbar }) const { isDesktop } = useCheckViewport() const dark = useCheckTheme() - const [checked, setChecked] = useState("") + const [hoveringNavbarItemKey, setHoveringNavbarItemKey] = useState("") const showWalletConnector = useShowWalletConnector() const showLanguageSelect = useShowLanguageSelect() @@ -143,127 +33,73 @@ const DesktopHeader = ({ currentMenu }) => { const [anchorEl, setAnchorEl] = useState(null) const handleMouseEnter = (e, key) => { - setChecked(key) + setHoveringNavbarItemKey(key) setAnchorEl(e.currentTarget) } const handleMouseLeave = () => { - setChecked("") + setHoveringNavbarItemKey("") setAnchorEl(null) } - const handleResetIsHover = () => { - setIsHover(false) - } + // console.log(currentMenu, "currentMenu") - const renderSubMenuList = children => { - return children.map((section, idx) => ( - - {section.label && ( - {section.label} - )} - {section.type === "grid" ? ( - - {section.children.map((item, index) => ( - - {item.label} - {item.items.map(item => ( - - ))} - - ))} - - ) : ( - <> - {section.children - // only show sub menu item when the href is set - ?.filter(subItem => subItem.href) - .map(subItem => ( - - ))} - - )} - - )) + const handleClickMenuItem = label => { + sendGAEvent("event", "click_menu", { + label, + device: "desktop", + }) + setIsHoveringNavbar(false) } const renderNavigationItem = item => { if (item.children) { return ( - handleMouseEnter(e, item.key)} - onMouseLeave={handleMouseLeave} - > - {item.label} - {item.new && ( - - NEW - - )} - - {item.key === checked && ( - - {({ TransitionProps }) => ( - - {renderSubMenuList(item.children)} - - )} - - )} - - ) - } else if (item.isExternal) { - return ( - - {item.label} - - ) - } else { - return ( - { - sendGAEvent("event", "click_menu", { - label: item.label, - device: "desktop", - }) - }} - > - {item.label} - + <> + handleMouseEnter(e, item.key)} + onMouseLeave={handleMouseLeave} + > + {item.label} + {item.key === hoveringNavbarItemKey && ( + + {({ TransitionProps }) => ( + + + + {item.children.map(({ key, label, href }) => ( + handleClickMenuItem(label)}> + {label} + + ))} + + + + )} + + )} + + ) } + + return ( + handleClickMenuItem(item.label)}> + {item.label} + + ) } const renderNavigationList = () => { @@ -277,19 +113,29 @@ const DesktopHeader = ({ currentMenu }) => { } return ( - + navbarBg + ? theme.vars.palette.themeBackground[navbarBg] + : dark + ? theme.vars.palette.themeBackground.dark + : theme.vars.palette.themeBackground.light, + }} onMouseEnter={() => { - setIsHover(true) + setIsHoveringNavbar(true) }} onMouseLeave={e => { - setIsHover(false) + setIsHoveringNavbar(false) }} > - + @@ -298,9 +144,9 @@ const DesktopHeader = ({ currentMenu }) => { {showWalletConnector && } {showLanguageSelect && } - + - + ) } diff --git a/src/components/Header/index.tsx b/src/components/Header/index.tsx index f0351d954..947e1bb4e 100644 --- a/src/components/Header/index.tsx +++ b/src/components/Header/index.tsx @@ -9,7 +9,7 @@ import { styled } from "@mui/system" import useCheckViewport from "@/hooks/useCheckViewport" -import { navigations } from "./constants" +import { navigations } from "./data" import DesktopNav from "./desktop_header" import MobileNav from "./mobile_header" @@ -58,8 +58,6 @@ export default function Header() { // return menuKey } else if (menuItem.children) { findRootMenu(pathname, menuItem.children, result) - } else if (menuItem.items) { - findRootMenu(pathname, menuItem.items, result) } } return result diff --git a/src/components/Header/mobile_header.tsx b/src/components/Header/mobile_header.tsx index 1a76fc782..c8364fb0b 100644 --- a/src/components/Header/mobile_header.tsx +++ b/src/components/Header/mobile_header.tsx @@ -1,6 +1,5 @@ import { sendGAEvent } from "@next/third-parties/google" -import React, { useEffect, useState } from "react" -import { useStyles } from "tss-react/mui" +import { Fragment, useEffect, useState } from "react" import { ExpandMore } from "@mui/icons-material" import { Box, Collapse, List, ListItemButton, Stack, Typography } from "@mui/material" @@ -13,31 +12,12 @@ import useShowLanguageSelect from "@/hooks/useShowLanguageSelect" import useShowWalletConnector from "@/hooks/useShowWalletToolkit" import Logo from "../ScrollLogo" -import SubmenuLink from "./SubmenuLink" +import MobileNavbarItem from "./MobileNavBarItem" import Announcement from "./announcement" -import { navigations } from "./constants" +import { navigations } from "./data" import useCheckCustomNavBarBg from "./useCheckCustomNavBarBg" import useCheckTheme from "./useCheckTheme" -const NavStack = styled(Stack)(() => ({ - height: "3rem", - lineHeight: "3rem", - margin: "1.6rem", -})) - -const Menu = styled("div")(() => ({ - display: "inline-block", - [`&.active > div:nth-of-type(1)`]: { - transform: "rotate(45deg) translate(5px, 5px)", - }, - [`&.active > div:nth-of-type(2)`]: { - opacity: 0, - }, - [`&.active > div:nth-of-type(3)`]: { - transform: "rotate(-45deg) translate(5px, -5px)", - }, -})) - const Bar = styled("div", { shouldForwardProp: prop => prop !== "dark" })(({ theme, dark }) => ({ width: "2rem", height: ".2rem", @@ -46,70 +26,10 @@ const Bar = styled("div", { shouldForwardProp: prop => prop !== "dark" })(( transition: "0.4s", })) -const MenuContent = styled(Box, { shouldForwardProp: prop => prop !== "dark" })(({ theme, dark }) => ({ - margin: "0.5rem 1.6rem 0", - background: dark ? theme.vars.palette.themeBackground.dark : theme.vars.palette.themeBackground.light, -})) - -const ListItem = styled(ListItemButton, { shouldForwardProp: prop => prop !== "dark" })(({ theme, dark }) => ({ - fontWeight: 600, - fontSize: "2rem", - height: "5.5rem", - lineHeight: "5.5rem", - color: dark ? theme.vars.palette.primary.contrastText : theme.vars.palette.text.primary, - margin: "0", - display: "flex", - justifyContent: "space-between", - padding: "0 !important", - "&.active": {}, - "&:hover": { - background: "transparent", - }, - "&:not(:first-of-type)": { - borderTop: `1px solid ${dark ? theme.vars.palette.primary.contrastText : theme.vars.palette.text.primary}`, - }, -})) - -const MenuItemLink = styled(Link, { shouldForwardProp: prop => prop !== "dark" })(({ theme, dark }) => ({ - fontWeight: 600, - fontSize: "2rem", - height: "5.5rem", - lineHeight: "5.5rem", - color: dark ? theme.vars.palette.primary.contrastText : theme.vars.palette.text.primary, - width: "100%", - "&.active": { - color: theme.vars.palette.primary.main, - }, -})) - -const SectionList = styled("div", { shouldForwardProp: prop => prop !== "dark" })(({ theme, dark }) => ({ - display: "flex", - flexDirection: "column", - gap: "1.6rem", - "&:last-of-type": { - paddingBottom: "2.5rem", - }, - "&:nth-last-of-type(-n+2)": { - paddingBottom: "1.6rem", - }, - "&:nth-of-type(n+2)": { - borderTop: `1px solid ${dark ? theme.vars.palette.primary.contrastText : theme.vars.palette.text.primary}`, - paddingTop: "1.6rem", - }, -})) - -const ExpandMoreIcon = styled(ExpandMore)(({}) => ({ - transition: "transform 0.3s ease", - "&.active": { - transform: "rotate(180deg)", - }, -})) - const MobileHeader = ({ currentMenu }) => { const navbarBg = useCheckCustomNavBarBg() const showWalletConnector = useShowWalletConnector() const showLanguageSelect = useShowLanguageSelect() - const { cx } = useStyles() const dark = useCheckTheme() const [open, setOpen] = useState(false) @@ -142,16 +62,11 @@ const MobileHeader = ({ currentMenu }) => { component="nav" > {navigations.map(item => ( - + {item.children ? ( - toggleCollapse(item.key)} - > + toggleCollapse(item.key)}> - {item.label} + {item.label} {item.new && ( { )} - {" "} - + + ) : ( - toggleDrawer(false)}> - - sendGAEvent("event", "click_menu", { - label: item.label, - device: "mobile", - }) - } - > + + sendGAEvent("event", "click_menu", { + label: item.label, + device: "mobile", + }) + } + > + toggleDrawer(false)}> {item.label} - - + + )} - {item.children?.map((section, idx) => ( - toggleDrawer(false)} key={idx} dark={dark}> - {section.label && ( + {item.children?.map(i => ( + + toggleDrawer(false)}> - {section.label} + {i.label} - )} - {section.type === "grid" ? ( - - {section.children.map((item, index) => ( - - {/* - {item.label} - */} - {item.label} - {item.items.map(item => ( - - ))} - - ))} - - ) : ( - <> - {section.children - // only show sub items with href - ?.filter(subItem => subItem.href) - .map(subItem => ( - - ))} - - )} - + + ))} - + ))} ) @@ -242,7 +138,7 @@ const MobileHeader = ({ currentMenu }) => { sx={{ backgroundColor: navbarBg && !open ? `themeBackground.${navbarBg}` : dark ? "themeBackground.dark" : "themeBackground.light" }} > - + toggleDrawer(false)}> @@ -252,13 +148,28 @@ const MobileHeader = ({ currentMenu }) => { {showWalletConnector && } {showLanguageSelect && } - toggleDrawer(!open)} className={open ? "active" : ""}> + div:nth-of-type(1)`]: { + transform: "rotate(45deg) translate(5px, 5px)", + }, + [`&.active > div:nth-of-type(2)`]: { + opacity: 0, + }, + [`&.active > div:nth-of-type(3)`]: { + transform: "rotate(-45deg) translate(5px, -5px)", + }, + }} + onClick={() => toggleDrawer(!open)} + className={open ? "active" : ""} + > - + - + {open && ( { overflowY: "auto", }} > - toggleDrawer(false)}> + toggleDrawer(false)} + > {renderList()} - + )} diff --git a/src/theme/index.tsx b/src/theme/index.tsx index 6d26211c3..3495d22ed 100644 --- a/src/theme/index.tsx +++ b/src/theme/index.tsx @@ -1,7 +1,11 @@ "use client" // @ts-ignore -import { ThemeProvider, createTheme } from "@mui/material/styles" +import createCache from "@emotion/cache" +import { CacheProvider } from "@emotion/react" + +import CssBaseline from "@mui/material/CssBaseline" +import { StyledEngineProvider, ThemeProvider, createTheme } from "@mui/material/styles" // import darkTheme from "./dark" import lightTheme from "./light" @@ -19,9 +23,12 @@ const ScrollThemeProvider = ({ children }) => { // not use StyledEngineProvider, so mui style > tailwind style return ( - - {children} - + + + {/* */} + {children} + + ) } diff --git a/tailwind.config.ts b/tailwind.config.ts index 276cf03f7..6359f1df6 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -3,6 +3,9 @@ import defaultTheme from "tailwindcss/defaultTheme" const config: Config = { content: ["./src/components/**/*.{js,ts,jsx,tsx,mdx}", "./src/app/**/*.{js,ts,jsx,tsx,mdx}"], + // corePlugins: { + // preflight: false, + // }, theme: { extend: { lineHeight: { diff --git a/yarn.lock b/yarn.lock index 6ec3a3005..c451b1e7a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1750,18 +1750,6 @@ resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11" integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -2589,11 +2577,6 @@ "@parcel/watcher-win32-ia32" "2.4.0" "@parcel/watcher-win32-x64" "2.4.0" -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - "@pkgr/core@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" @@ -3214,6 +3197,99 @@ dependencies: tslib "^2.8.0" +"@tailwindcss/node@^4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.0.6.tgz#d07152f447b37c8ce68244b0ec1ce427f5ed856e" + integrity sha512-jb6E0WeSq7OQbVYcIJ6LxnZTeC4HjMvbzFBMCrQff4R50HBlo/obmYNk6V2GCUXDeqiXtvtrQgcIbT+/boB03Q== + dependencies: + enhanced-resolve "^5.18.0" + jiti "^2.4.2" + tailwindcss "4.0.6" + +"@tailwindcss/oxide-android-arm64@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.6.tgz#0dbee5042870ceaf756829c48c1e6ddacbb4b35b" + integrity sha512-xDbym6bDPW3D2XqQqX3PjqW3CKGe1KXH7Fdkc60sX5ZLVUbzPkFeunQaoP+BuYlLc2cC1FoClrIRYnRzof9Sow== + +"@tailwindcss/oxide-darwin-arm64@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.6.tgz#9b5574626464b2ba658a7ecf689a4a835dc97369" + integrity sha512-1f71/ju/tvyGl5c2bDkchZHy8p8EK/tDHCxlpYJ1hGNvsYihZNurxVpZ0DefpN7cNc9RTT8DjrRoV8xXZKKRjg== + +"@tailwindcss/oxide-darwin-x64@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.6.tgz#576b9fcd422790371efdb9e3733862759e76639c" + integrity sha512-s/hg/ZPgxFIrGMb0kqyeaqZt505P891buUkSezmrDY6lxv2ixIELAlOcUVTkVh245SeaeEiUVUPiUN37cwoL2g== + +"@tailwindcss/oxide-freebsd-x64@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.6.tgz#787421ebad9460a7ff4a17ca7d1c495579db00ae" + integrity sha512-Z3Wo8FWZnmio8+xlcbb7JUo/hqRMSmhQw8IGIRoRJ7GmLR0C+25Wq+bEX/135xe/yEle2lFkhu9JBHd4wZYiig== + +"@tailwindcss/oxide-linux-arm-gnueabihf@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.6.tgz#07872b2a1d4404a9819788ca5e8384d42a4004fd" + integrity sha512-SNSwkkim1myAgmnbHs4EjXsPL7rQbVGtjcok5EaIzkHkCAVK9QBQsWeP2Jm2/JJhq4wdx8tZB9Y7psMzHYWCkA== + +"@tailwindcss/oxide-linux-arm64-gnu@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.6.tgz#fd314d294aec5f40c19c5fd09d448b23628dc384" + integrity sha512-tJ+mevtSDMQhKlwCCuhsFEFg058kBiSy4TkoeBG921EfrHKmexOaCyFKYhVXy4JtkaeeOcjJnCLasEeqml4i+Q== + +"@tailwindcss/oxide-linux-arm64-musl@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.6.tgz#67b74205d72d3a83e6893adf5b35ac55118e0ebc" + integrity sha512-IoArz1vfuTR4rALXMUXI/GWWfx2EaO4gFNtBNkDNOYhlTD4NVEwE45nbBoojYiTulajI4c2XH8UmVEVJTOJKxA== + +"@tailwindcss/oxide-linux-x64-gnu@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.6.tgz#2268beea15f18adcaa83c0e6540d3ee464130082" + integrity sha512-QtsUfLkEAeWAC3Owx9Kg+7JdzE+k9drPhwTAXbXugYB9RZUnEWWx5x3q/au6TvUYcL+n0RBqDEO2gucZRvRFgQ== + +"@tailwindcss/oxide-linux-x64-musl@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.6.tgz#869b49cc783eabe7c33283abe23aafd35b4dd645" + integrity sha512-QthvJqIji2KlGNwLcK/PPYo7w1Wsi/8NK0wAtRGbv4eOPdZHkQ9KUk+oCoP20oPO7i2a6X1aBAFQEL7i08nNMA== + +"@tailwindcss/oxide-win32-arm64-msvc@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.6.tgz#c7e3650b19a24bbebc9d513f188e1d75e1fccf2a" + integrity sha512-+oka+dYX8jy9iP00DJ9Y100XsqvbqR5s0yfMZJuPR1H/lDVtDfsZiSix1UFBQ3X1HWxoEEl6iXNJHWd56TocVw== + +"@tailwindcss/oxide-win32-x64-msvc@4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.6.tgz#ba736748c72273f277e7afb4eaf401108e10ccfd" + integrity sha512-+o+juAkik4p8Ue/0LiflQXPmVatl6Av3LEZXpBTfg4qkMIbZdhCGWFzHdt2NjoMiLOJCFDddoV6GYaimvK1Olw== + +"@tailwindcss/oxide@^4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.0.6.tgz#57035c941065195db4e5b26eebb3e63b56885a83" + integrity sha512-lVyKV2y58UE9CeKVcYykULe9QaE1dtKdxDEdrTPIdbzRgBk6bdxHNAoDqvcqXbIGXubn3VOl1O/CFF77v/EqSA== + optionalDependencies: + "@tailwindcss/oxide-android-arm64" "4.0.6" + "@tailwindcss/oxide-darwin-arm64" "4.0.6" + "@tailwindcss/oxide-darwin-x64" "4.0.6" + "@tailwindcss/oxide-freebsd-x64" "4.0.6" + "@tailwindcss/oxide-linux-arm-gnueabihf" "4.0.6" + "@tailwindcss/oxide-linux-arm64-gnu" "4.0.6" + "@tailwindcss/oxide-linux-arm64-musl" "4.0.6" + "@tailwindcss/oxide-linux-x64-gnu" "4.0.6" + "@tailwindcss/oxide-linux-x64-musl" "4.0.6" + "@tailwindcss/oxide-win32-arm64-msvc" "4.0.6" + "@tailwindcss/oxide-win32-x64-msvc" "4.0.6" + +"@tailwindcss/postcss@^4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/postcss/-/postcss-4.0.6.tgz#c91d22523af7fd3d39989389b8cc4de68640c9c1" + integrity sha512-noTaGPHjGCXTCc487TWnfAEN0VMjqDAecssWDOsfxV2hFrcZR0AHthX7IdY/0xHTg/EtpmIPdssddlZ5/B7JnQ== + dependencies: + "@alloc/quick-lru" "^5.2.0" + "@tailwindcss/node" "^4.0.6" + "@tailwindcss/oxide" "^4.0.6" + lightningcss "^1.29.1" + postcss "^8.4.41" + tailwindcss "4.0.6" + "@tanstack/query-core@5.62.16": version "5.62.16" resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.62.16.tgz#f7efc92b1562a054748bc00c7f8d9d833407503b" @@ -4045,11 +4121,6 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -4064,16 +4135,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - anymatch@^3.1.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -4082,7 +4143,7 @@ anymatch@^3.1.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -arg@^5.0.0, arg@^5.0.2: +arg@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== @@ -4544,11 +4605,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -4820,11 +4876,6 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" @@ -4959,7 +5010,7 @@ cross-fetch@^4.0.0: dependencies: node-fetch "^2.6.12" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -5235,11 +5286,6 @@ devlop@^1.0.0, devlop@^1.1.0: dependencies: dequal "^2.0.0" -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - diff@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" @@ -5250,11 +5296,6 @@ dijkstrajs@^1.0.1: resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -5341,11 +5382,6 @@ duplexify@^4.1.2: readable-stream "^3.1.1" stream-shift "^1.0.0" -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - eciesjs@^0.3.15: version "0.3.20" resolved "https://registry.yarnpkg.com/eciesjs/-/eciesjs-0.3.20.tgz#ef66d0304415e88810aef5823bfd5ce6021d2212" @@ -5437,6 +5473,14 @@ enhanced-resolve@^5.12.0: graceful-fs "^4.2.4" tapable "^2.2.0" +enhanced-resolve@^5.18.0: + version "5.18.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" + integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" @@ -6208,7 +6252,7 @@ fast-glob@3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.3.0, fast-glob@^3.3.1, fast-glob@^3.3.2: +fast-glob@^3.3.1, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -6339,14 +6383,6 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - fp-ts@1.19.3: version "1.19.3" resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" @@ -6547,17 +6583,6 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^10.3.10: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - glob@^7.1.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -7646,25 +7671,21 @@ iterator.prototype@^1.1.4: has-symbols "^1.1.0" set-function-name "^2.0.2" -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - javascript-natural-sort@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" integrity sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw== -jiti@^1.19.1, jiti@^1.21.0: +jiti@^1.21.0: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== +jiti@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560" + integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== + joycon@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -7850,15 +7871,73 @@ lie@3.1.1: dependencies: immediate "~3.0.5" -lilconfig@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -lilconfig@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" - integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== +lightningcss-darwin-arm64@1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.1.tgz#dce17349c7b9f968f396ec240503de14e7b4870b" + integrity sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw== + +lightningcss-darwin-x64@1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.1.tgz#e79c984180c57d00ee114210ceced83473d72dfc" + integrity sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA== + +lightningcss-freebsd-x64@1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.1.tgz#4b3aec9620684a60c45266d50fd843869320f42f" + integrity sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ== + +lightningcss-linux-arm-gnueabihf@1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.1.tgz#b80e9c4dd75652bec451ffd4d5779492a01791ff" + integrity sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg== + +lightningcss-linux-arm64-gnu@1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.1.tgz#7825eb119ddf580a4a4f011c6f384a3f9c992060" + integrity sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ== + +lightningcss-linux-arm64-musl@1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.1.tgz#389efccf80088dce2bb00e28bd7d1cfe36a71669" + integrity sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw== + +lightningcss-linux-x64-gnu@1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.1.tgz#98fc5df5e39ac8ddc51e51f785849eb21131f789" + integrity sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw== + +lightningcss-linux-x64-musl@1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.1.tgz#fb4f80895ba7dfa8048ee32e9716a1684fefd6b2" + integrity sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw== + +lightningcss-win32-arm64-msvc@1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.1.tgz#fd4409fd1505d89d0ff66511c36df5a1379eb7cd" + integrity sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog== + +lightningcss-win32-x64-msvc@1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.1.tgz#54dcd52884f6cbf205a53d49239559603f194927" + integrity sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q== + +lightningcss@^1.29.1: + version "1.29.1" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.29.1.tgz#1d4d62332fc5ba4b6c28e04a8c5638c76019702b" + integrity sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q== + dependencies: + detect-libc "^1.0.3" + optionalDependencies: + lightningcss-darwin-arm64 "1.29.1" + lightningcss-darwin-x64 "1.29.1" + lightningcss-freebsd-x64 "1.29.1" + lightningcss-linux-arm-gnueabihf "1.29.1" + lightningcss-linux-arm64-gnu "1.29.1" + lightningcss-linux-arm64-musl "1.29.1" + lightningcss-linux-x64-gnu "1.29.1" + lightningcss-linux-x64-musl "1.29.1" + lightningcss-win32-arm64-msvc "1.29.1" + lightningcss-win32-x64-msvc "1.29.1" lines-and-columns@^1.1.6: version "1.2.4" @@ -8008,7 +8087,7 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" -lru-cache@^10.0.2, "lru-cache@^9.1.1 || ^10.0.0": +lru-cache@^10.0.2: version "10.1.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== @@ -8733,13 +8812,6 @@ minimatch@^5.0.1, minimatch@^5.1.6: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - minimatch@^9.0.4: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" @@ -8752,11 +8824,6 @@ minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - mipd@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mipd/-/mipd-0.0.7.tgz#bb5559e21fa18dc3d9fe1c08902ef14b7ce32fd9" @@ -8882,15 +8949,6 @@ multipipe@^1.0.2: duplexer2 "^0.1.2" object-assign "^4.1.0" -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - nano-css@^5.6.1: version "5.6.1" resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.6.1.tgz#964120cb1af6cccaa6d0717a473ccd876b34c197" @@ -8905,11 +8963,16 @@ nano-css@^5.6.1: stacktrace-js "^2.0.2" stylis "^4.3.0" -nanoid@^3.3.6, nanoid@^3.3.7: +nanoid@^3.3.6: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== +nanoid@^3.3.8: + version "3.3.8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== + napi-wasm@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" @@ -9048,16 +9111,11 @@ obj-multiplex@^1.0.0: once "^1.4.0" readable-stream "^2.3.3" -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - object-inspect@^1.13.1, object-inspect@^1.9.0: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" @@ -9356,14 +9414,6 @@ path-parse@^1.0.6, path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-to-regexp@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" @@ -9395,16 +9445,16 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -9473,11 +9523,6 @@ pino@7.11.0: sonic-boom "^2.2.1" thread-stream "^0.15.1" -pirates@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - pkg-types@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" @@ -9502,46 +9547,7 @@ possible-typed-array-names@^1.0.0: resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== -postcss-import@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" - integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-js@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" - integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== - dependencies: - camelcase-css "^2.0.1" - -postcss-load-config@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" - integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== - dependencies: - lilconfig "^3.0.0" - yaml "^2.3.4" - -postcss-nested@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" - integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== - dependencies: - postcss-selector-parser "^6.0.11" - -postcss-selector-parser@^6.0.11: - version "6.0.15" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" - integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -9555,14 +9561,14 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.17, postcss@^8.4.23: - version "8.4.33" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" - integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== +postcss@^8.4.41, postcss@^8.5.2: + version "8.5.2" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.2.tgz#e7b99cb9d2ec3e8dd424002e7c16517cb2b846bd" + integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA== dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.0.2" + nanoid "^3.3.8" + picocolors "^1.1.1" + source-map-js "^1.2.1" preact@^10.16.0: version "10.23.2" @@ -9880,13 +9886,6 @@ react@19.0.0: resolved "https://registry.yarnpkg.com/react/-/react-19.0.0.tgz#6e1969251b9f108870aa4bff37a0ce9ddfaaabdd" integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ== -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - readable-stream@^2.0.2, readable-stream@^2.3.3: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" @@ -10208,7 +10207,7 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@1.22.8, resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4: +resolve@1.22.8, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -10608,7 +10607,7 @@ side-channel@^1.1.0: side-channel-map "^1.0.1" side-channel-weakmap "^1.0.2" -signal-exit@^4.0.1, signal-exit@^4.1.0: +signal-exit@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== @@ -10690,6 +10689,11 @@ source-map-js@^1.0.1, source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-support@^0.5.13: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -10804,15 +10808,6 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -10822,15 +10817,6 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2 is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - string.prototype.includes@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92" @@ -10953,13 +10939,6 @@ stringify-entities@^4.0.0: character-entities-html4 "^2.0.0" character-entities-legacy "^3.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -10967,13 +10946,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -11020,19 +10992,6 @@ stylis@^4.3.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== -sucrase@^3.32.0: - version "3.35.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" - integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "^10.3.10" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - superstruct@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.3.tgz#de626a5b49c6641ff4d37da3c7598e7a87697046" @@ -11108,33 +11067,10 @@ system-architecture@^0.1.0: resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d" integrity sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA== -tailwindcss@^3.3.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" - integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== - dependencies: - "@alloc/quick-lru" "^5.2.0" - arg "^5.0.2" - chokidar "^3.5.3" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.3.0" - glob-parent "^6.0.2" - is-glob "^4.0.3" - jiti "^1.19.1" - lilconfig "^2.1.0" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" - postcss-import "^15.1.0" - postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - resolve "^1.22.2" - sucrase "^3.32.0" +tailwindcss@4.0.6, tailwindcss@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.0.6.tgz#c033bfba94d6e3bf70650a2f9fe949f39d3bb191" + integrity sha512-mysewHYJKaXgNOW6pp5xon/emCsfAMnO8WMaGKZZ35fomnR/T5gYnRg2/yRTTrtXiEl1tiVkeRt0eMO6HxEZqw== tapable@^2.2.0: version "2.2.1" @@ -11146,20 +11082,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - third-party-capital@1.0.20: version "1.0.20" resolved "https://registry.yarnpkg.com/third-party-capital/-/third-party-capital-1.0.20.tgz#e218a929a35bf4d2245da9addb8ab978d2f41685" @@ -11259,11 +11181,6 @@ ts-easing@^0.2.0: resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - tsconfig-paths@^3.15.0: version "3.15.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" @@ -11728,7 +11645,7 @@ utf-8-validate@^5.0.2: dependencies: node-gyp-build "^4.3.0" -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -11971,15 +11888,6 @@ workerpool@^6.5.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -11998,15 +11906,6 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -12079,11 +11978,6 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== - yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" From ecf6e4e04ca0a24c616a5108f572e978d82c6209 Mon Sep 17 00:00:00 2001 From: holybasil Date: Mon, 17 Feb 2025 14:45:39 +0800 Subject: [PATCH 02/12] feat: gas price on Ethereum & Scroll --- .../Badges/BadgeList/index.tsx | 1 + src/app/_canvas-and-badges/Header/index.tsx | 1 + .../_canvas/Dashboard/ReferDialog/coupon.tsx | 1 + src/app/_canvas/mint/flow/FirstBadgeStep.tsx | 1 + src/app/_canvas/mint/flow/MintStep.tsx | 1 + .../_canvas/mint/home/ReferralCodeInput.tsx | 1 + src/app/community/Events/List.tsx | 1 + .../coming-soon/CheckElegbility/index.tsx | 1 + .../developer-nft/mint/flow/QuestionStep.tsx | 1 + .../developer-nft/mint/home/ReadyToMint.tsx | 1 + src/app/developer-nft/mint/mock/index.tsx | 1 + src/app/ecosystem/Header/index.tsx | 1 + .../Highlights/HighlightList/index.tsx | 2 - .../Protocols/ProtocolList/index.tsx | 2 + src/app/global.ts | 5 +- src/app/layout.tsx | 2 +- src/app/rollupscan/index/Searchbar.tsx | 1 + src/app/rollupscan/page.tsx | 1 + src/app/sessions/Header/TotalMarks.tsx | 1 + src/app/sessions/Protocols/index.tsx | 1 + .../sessions/SignatureRequestDialog/index.tsx | 1 + src/app/template.tsx | 32 ++-- src/assets/svgs/header/gas-price-dot.svg | 3 + src/components/Alert/NFTAlert.tsx | 28 +-- src/components/Footer/PureFooter/index.tsx | 2 + src/components/Header/GasPriceViewer.tsx | 140 ++++++++++++++ .../Header/MobileGasPriceViewer.tsx | 179 ++++++++++++++++++ src/components/Header/desktop_header.tsx | 6 +- src/components/Header/mobile_header.tsx | 12 +- .../RequestWarning/GlobalSuccess.tsx | 2 +- src/contexts/RainbowProvider/configs.ts | 4 +- src/hooks/useClaimHistory.ts | 1 + src/hooks/useInputAddress.ts | 1 + src/hooks/useTxHistory.ts | 1 + src/hooks/useValidateCanvasName.tsx | 1 + src/services/canvasService.ts | 1 + src/stores/bridgeStore.ts | 1 + src/stores/utils.ts | 1 + src/utils/request.ts | 39 ++++ 39 files changed, 431 insertions(+), 51 deletions(-) create mode 100644 src/assets/svgs/header/gas-price-dot.svg create mode 100644 src/components/Header/GasPriceViewer.tsx create mode 100644 src/components/Header/MobileGasPriceViewer.tsx create mode 100644 src/utils/request.ts diff --git a/src/app/_canvas-and-badges/Badges/BadgeList/index.tsx b/src/app/_canvas-and-badges/Badges/BadgeList/index.tsx index a9a4a3b01..6b3a44ec8 100644 --- a/src/app/_canvas-and-badges/Badges/BadgeList/index.tsx +++ b/src/app/_canvas-and-badges/Badges/BadgeList/index.tsx @@ -13,6 +13,7 @@ import LoadingButton from "@/components/LoadingButton" import LoadingPage from "@/components/LoadingPage" import { CANVAS_AND_BADGES_PAGE_SYMBOL, CATEGORY_LIST, SORT_LIST } from "@/constants" import { isAboveScreen } from "@/utils/dom" +import { scrollRequest } from "@/utils/request" import BadgeCard from "./BadgeCard" // import BadgeMasonry from "./BadgeMasonry" diff --git a/src/app/_canvas-and-badges/Header/index.tsx b/src/app/_canvas-and-badges/Header/index.tsx index 6dc2d1489..cc6d376e3 100644 --- a/src/app/_canvas-and-badges/Header/index.tsx +++ b/src/app/_canvas-and-badges/Header/index.tsx @@ -13,6 +13,7 @@ import { retrieveCanvasBadgeURL } from "@/apis/canvas-badge" import Button from "@/components/Button" import { CANVAS_AND_BADGES_PAGE_SYMBOL, CANVAS_URL, HEADER_BADGES, HEADER_STARS, ISSUE_BADGES_URL } from "@/constants" import useCheckViewport from "@/hooks/useCheckViewport" +import { scrollRequest } from "@/utils/request" // import Counter from "./Counter" import Statistic from "./Statistic" diff --git a/src/app/_canvas/Dashboard/ReferDialog/coupon.tsx b/src/app/_canvas/Dashboard/ReferDialog/coupon.tsx index d22070fb5..86781f4e2 100644 --- a/src/app/_canvas/Dashboard/ReferDialog/coupon.tsx +++ b/src/app/_canvas/Dashboard/ReferDialog/coupon.tsx @@ -18,6 +18,7 @@ import { useRainbowContext } from "@/contexts/RainbowProvider" import useSnackbar from "@/hooks/useSnackbar" import useCanvasStore from "@/stores/canvasStore" import { generateShareTwitterURL } from "@/utils" +import { scrollRequest } from "@/utils/request" const CouponBox = styled(Box)(({ theme }) => ({ background: `url(${couponBackground.src}) no-repeat center center`, diff --git a/src/app/_canvas/mint/flow/FirstBadgeStep.tsx b/src/app/_canvas/mint/flow/FirstBadgeStep.tsx index addf4da9a..ca7f586d0 100644 --- a/src/app/_canvas/mint/flow/FirstBadgeStep.tsx +++ b/src/app/_canvas/mint/flow/FirstBadgeStep.tsx @@ -13,6 +13,7 @@ import useSnackbar from "@/hooks/useSnackbar" import { mintBadge } from "@/services/canvasService" import useCanvasStore from "@/stores/canvasStore" import { truncateAddress } from "@/utils" +import { scrollRequest } from "@/utils/request" import StepWrapper from "./StepWrapper" diff --git a/src/app/_canvas/mint/flow/MintStep.tsx b/src/app/_canvas/mint/flow/MintStep.tsx index bd04d9c37..94f281463 100644 --- a/src/app/_canvas/mint/flow/MintStep.tsx +++ b/src/app/_canvas/mint/flow/MintStep.tsx @@ -15,6 +15,7 @@ import useCheckViewport from "@/hooks/useCheckViewport" import useSnackbar from "@/hooks/useSnackbar" import useCanvasStore from "@/stores/canvasStore" import { isUserRejected, recognizeError, sentryDebug, trimErrorMessage } from "@/utils" +import { scrollRequest } from "@/utils/request" import InsufficientDialog from "./InsufficientDialog" import StepWrapper from "./StepWrapper" diff --git a/src/app/_canvas/mint/home/ReferralCodeInput.tsx b/src/app/_canvas/mint/home/ReferralCodeInput.tsx index 08a81cfaa..40eabb9a2 100644 --- a/src/app/_canvas/mint/home/ReferralCodeInput.tsx +++ b/src/app/_canvas/mint/home/ReferralCodeInput.tsx @@ -8,6 +8,7 @@ import CheckSvg from "@/assets/svgs/canvas/check.svg" import ErrorSvg from "@/assets/svgs/canvas/error.svg" import LoadingSvg from "@/assets/svgs/canvas/loading.svg" import useCanvasStore from "@/stores/canvasStore" +import { scrollRequest } from "@/utils/request" const INVITE_CODE_LENGTH = 5 diff --git a/src/app/community/Events/List.tsx b/src/app/community/Events/List.tsx index 15f59888d..479f57ef3 100644 --- a/src/app/community/Events/List.tsx +++ b/src/app/community/Events/List.tsx @@ -9,6 +9,7 @@ import LoadingButton from "@/components/LoadingButton" import LoadingPage from "@/components/LoadingPage" import SuccessionToView, { SuccessionItem } from "@/components/Motion/SuccessionToView" import { COMMUNITY_REGION_LIST, COMMUNITY_TIME_LIST } from "@/constants/community" +import { scrollRequest } from "@/utils/request" import Error from "./Error" import Card from "./EventCard" diff --git a/src/app/developer-nft/coming-soon/CheckElegbility/index.tsx b/src/app/developer-nft/coming-soon/CheckElegbility/index.tsx index 3239998c4..86417da6d 100644 --- a/src/app/developer-nft/coming-soon/CheckElegbility/index.tsx +++ b/src/app/developer-nft/coming-soon/CheckElegbility/index.tsx @@ -9,6 +9,7 @@ import { MintableDate } from "@/constants" import { useRainbowContext } from "@/contexts/RainbowProvider" import useCheckViewport from "@/hooks/useCheckViewport" import { formatDate } from "@/utils" +import { scrollRequest } from "@/utils/request" const L2_SCAN_URI = process.env.NEXT_PUBLIC_L2_SCAN_URI const UNIFRA_API_KEY = process.env.NEXT_PUBLIC_UNIFRA_API_KEY diff --git a/src/app/developer-nft/mint/flow/QuestionStep.tsx b/src/app/developer-nft/mint/flow/QuestionStep.tsx index c77127dbb..3f789181a 100644 --- a/src/app/developer-nft/mint/flow/QuestionStep.tsx +++ b/src/app/developer-nft/mint/flow/QuestionStep.tsx @@ -18,6 +18,7 @@ import { useNFTContext } from "@/contexts/NFTContextProvider" import { useRainbowContext } from "@/contexts/RainbowProvider" import useNFTStore from "@/stores/nftStore" import { sentryDebug, trimErrorMessage } from "@/utils" +import { scrollRequest } from "@/utils/request" import StepWrapper from "./StepWrapper" diff --git a/src/app/developer-nft/mint/home/ReadyToMint.tsx b/src/app/developer-nft/mint/home/ReadyToMint.tsx index 52468e042..6835744e3 100644 --- a/src/app/developer-nft/mint/home/ReadyToMint.tsx +++ b/src/app/developer-nft/mint/home/ReadyToMint.tsx @@ -15,6 +15,7 @@ import { useRainbowContext } from "@/contexts/RainbowProvider" import useCheckViewport from "@/hooks/useCheckViewport" import useNFTStore from "@/stores/nftStore" import { formatDate, switchNetwork } from "@/utils" +import { scrollRequest } from "@/utils/request" import NFTCard from "../../components/NFTCard" import Statistic from "../../components/Statistic" diff --git a/src/app/developer-nft/mint/mock/index.tsx b/src/app/developer-nft/mint/mock/index.tsx index 47c5887ce..cb38d3500 100644 --- a/src/app/developer-nft/mint/mock/index.tsx +++ b/src/app/developer-nft/mint/mock/index.tsx @@ -7,6 +7,7 @@ import SectionWrapper from "@/components/SectionWrapper" import { CHAIN_ID, L2_NAME } from "@/constants" import { useRainbowContext } from "@/contexts/RainbowProvider" import { switchNetwork } from "@/utils" +import { scrollRequest } from "@/utils/request" const Mock = () => { const { walletCurrentAddress, chainId, connect } = useRainbowContext() diff --git a/src/app/ecosystem/Header/index.tsx b/src/app/ecosystem/Header/index.tsx index 704d6a2f0..1f4cb7b70 100644 --- a/src/app/ecosystem/Header/index.tsx +++ b/src/app/ecosystem/Header/index.tsx @@ -10,6 +10,7 @@ import Button from "@/components/Button" import { GET_IN_TOUCH_LINK } from "@/constants" import useCheckViewport from "@/hooks/useCheckViewport" import { formatLargeNumber } from "@/utils" +import { scrollRequest } from "@/utils/request" import Statistic from "./Statistic" diff --git a/src/app/ecosystem/Highlights/HighlightList/index.tsx b/src/app/ecosystem/Highlights/HighlightList/index.tsx index cff6ea435..af34bb8f6 100644 --- a/src/app/ecosystem/Highlights/HighlightList/index.tsx +++ b/src/app/ecosystem/Highlights/HighlightList/index.tsx @@ -38,8 +38,6 @@ const Carousel = () => { slidesPerView = 1 } - console.log(slidesPerView) - const filteredData = Data.filter(blog => blog.type === "Ecosystem highlights" && blog.language === "en") return ( diff --git a/src/app/ecosystem/Protocols/ProtocolList/index.tsx b/src/app/ecosystem/Protocols/ProtocolList/index.tsx index d2e75ee15..24c7a6b6d 100644 --- a/src/app/ecosystem/Protocols/ProtocolList/index.tsx +++ b/src/app/ecosystem/Protocols/ProtocolList/index.tsx @@ -11,6 +11,7 @@ import LoadingPage from "@/components/LoadingPage" import TextButton from "@/components/TextButton" import { ECOSYSTEM_NETWORK_LIST } from "@/constants" import { isAboveScreen } from "@/utils/dom" +import { scrollRequest } from "@/utils/request" import Error from "./Error" import NoData from "./NoData" @@ -75,6 +76,7 @@ const ProtocolList = props => { const fetchEcosystemList = value => { setLoading(true) + scrollRequest(`${ecosystemListUrl}${value}`) .then(({ data, hasMore }) => { setHasMore(hasMore) diff --git a/src/app/global.ts b/src/app/global.ts index 79c7ce823..0b0fb1f86 100644 --- a/src/app/global.ts +++ b/src/app/global.ts @@ -37,4 +37,7 @@ const scrollRequest = (url: string, options?: RequestInit & { timeout?: number } }) .then(data => data) } -window.scrollRequest = scrollRequest + +if (typeof window !== "undefined") { + window.scrollRequest = scrollRequest +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index bbb506aec..ff26171c6 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,5 +1,6 @@ import { GoogleAnalytics } from "@next/third-parties/google" import { Metadata } from "next" +// import SentrySetting from "@/components/SentrySetting" import React, { Suspense } from "react" import { AppRouterCacheProvider } from "@mui/material-nextjs/v15-appRouter" @@ -9,7 +10,6 @@ import GlobalComponents from "@/components/GlobalComponents" // import GoogleAnalytics from "@/components/GoogleAnalytics" import ScrollToTop from "@/components/ScrollToTop" import WebVitals from "@/components/WebVitals" -// import SentrySetting from "@/components/SentrySetting" import { ROOT_METADATA } from "@/constants/route" import BridgeContextProvider from "@/contexts/BridgeContextProvider" import RainbowProvider from "@/contexts/RainbowProvider" diff --git a/src/app/rollupscan/index/Searchbar.tsx b/src/app/rollupscan/index/Searchbar.tsx index bcd10fc2f..f99d6bff4 100644 --- a/src/app/rollupscan/index/Searchbar.tsx +++ b/src/app/rollupscan/index/Searchbar.tsx @@ -6,6 +6,7 @@ import { styled } from "@mui/material/styles" import { searchUrl } from "@/apis/rollupscan" import useRollupStore from "@/stores/rollupStore" +import { scrollRequest } from "@/utils/request" const SearchbarContainer = styled(Paper)(({ theme }) => ({ width: "100%", diff --git a/src/app/rollupscan/page.tsx b/src/app/rollupscan/page.tsx index 98102a790..a936f24f7 100644 --- a/src/app/rollupscan/page.tsx +++ b/src/app/rollupscan/page.tsx @@ -10,6 +10,7 @@ import { styled } from "@mui/material/styles" import { fetchBatchListUrl } from "@/apis/rollupscan" import { useLastBlockNums } from "@/hooks/useRollupInfo" import useRollupStore from "@/stores/rollupStore" +import { scrollRequest } from "@/utils/request" import Header from "./components/Header" import { DEFAULT_PAGE, DEFAULT_PAGE_SIZE } from "./constants" diff --git a/src/app/sessions/Header/TotalMarks.tsx b/src/app/sessions/Header/TotalMarks.tsx index c09f3a940..628c549a4 100644 --- a/src/app/sessions/Header/TotalMarks.tsx +++ b/src/app/sessions/Header/TotalMarks.tsx @@ -13,6 +13,7 @@ import { useRainbowContext } from "@/contexts/RainbowProvider" import useCheckViewport from "@/hooks/useCheckViewport" import useSessionsStore from "@/stores/sessionsStore" import { commafy, formatLargeNumber } from "@/utils" +import { scrollRequest } from "@/utils/request" import MarksTooltip from "../components/MarksTooltip" import QATooltip from "../components/QATooltip" diff --git a/src/app/sessions/Protocols/index.tsx b/src/app/sessions/Protocols/index.tsx index 756737752..442282ea5 100644 --- a/src/app/sessions/Protocols/index.tsx +++ b/src/app/sessions/Protocols/index.tsx @@ -5,6 +5,7 @@ import { useQuery } from "@tanstack/react-query" import { fetchSession2PerProtocolMarksURL } from "@/apis/sessions" import { useRainbowContext } from "@/contexts/RainbowProvider" import useSessionsStore from "@/stores/sessionsStore" +import { scrollRequest } from "@/utils/request" import Card from "../components/StepCard" import ProtocolSection from "./ProtocolSection" diff --git a/src/app/sessions/SignatureRequestDialog/index.tsx b/src/app/sessions/SignatureRequestDialog/index.tsx index 22fc1292a..80f8ab1de 100644 --- a/src/app/sessions/SignatureRequestDialog/index.tsx +++ b/src/app/sessions/SignatureRequestDialog/index.tsx @@ -16,6 +16,7 @@ import { useRainbowContext } from "@/contexts/RainbowProvider" import useCheckViewport from "@/hooks/useCheckViewport" import useSessionsStore from "@/stores/sessionsStore" import { sentryDebug } from "@/utils" +import { scrollRequest } from "@/utils/request" const useStyles = makeStyles()(theme => ({ dialogPaper: { diff --git a/src/app/template.tsx b/src/app/template.tsx index 9afb01482..2c1c47786 100644 --- a/src/app/template.tsx +++ b/src/app/template.tsx @@ -1,6 +1,4 @@ -"use client" - -import React, { useEffect } from "react" +import { ReactNode } from "react" import "swiper/css" import "swiper/css/pagination" @@ -14,24 +12,24 @@ import { isSepolia } from "@/utils" import "./global" -export default function RootTemplate({ children }: { children: React.ReactNode }) { - const dark = useCheckTheme() +export default function RootTemplate({ children }: { children: ReactNode }) { + // const dark = useCheckTheme() const hideFooter = useHideFooter() - useEffect(() => { - function setVh() { - const vh = window.innerHeight * 0.01 - document.documentElement.style.setProperty("--vh", `${vh}px`) - } - setVh() - window.addEventListener("resize", setVh) - return () => { - window.removeEventListener("resize", setVh) - } - }, []) + // useEffect(() => { + // function setVh() { + // const vh = window.innerHeight * 0.01 + // document.documentElement.style.setProperty("--vh", `${vh}px`) + // } + // setVh() + // window.addEventListener("resize", setVh) + // return () => { + // window.removeEventListener("resize", setVh) + // } + // }, []) return ( - +
{children} {!(isSepolia || hideFooter) &&