diff --git a/components/BrandKitGallery/BrandImage.tsx b/components/BrandKitGallery/BrandImage.tsx new file mode 100644 index 0000000..5a065a7 --- /dev/null +++ b/components/BrandKitGallery/BrandImage.tsx @@ -0,0 +1,59 @@ +// components/BrandKitGallery/BrandImage.tsx +import NextImage from 'next/image'; +import styles from '../../styles/custom.module.css'; +import { useState, useEffect } from 'react'; + +interface BrandImageProps { + url: string; + alt: string; + name: string; +} + +const BrandImage = ({ url, alt, name }: BrandImageProps) => { + const [imageDimensions, setImageDimensions] = useState({ width: 0, height: 0 }); + const [showModal, setShowModal] = useState(false); + + useEffect(() => { + const img = new window.Image(); + img.src = url; + img.onload = () => { + setImageDimensions({ width: img.width, height: img.height }); + }; + }, [url]); + + const handleImageClick = () => { + setShowModal(true); + document.body.style.overflow = 'hidden'; + }; + + const closeModal = () => { + setShowModal(false); + document.body.style.overflow = 'auto'; + }; + + return ( + <> +
+
+ +
+
+ {showModal && ( +
+
+ +
+
+ )} + + ); +}; + +export default BrandImage; diff --git a/components/BrandKitGallery/DownloadButton.tsx b/components/BrandKitGallery/DownloadButton.tsx new file mode 100644 index 0000000..678bbd7 --- /dev/null +++ b/components/BrandKitGallery/DownloadButton.tsx @@ -0,0 +1,22 @@ +// components/BrandKitGallery/DownloadButton.tsx +import React from 'react'; +import styles from '../../styles/custom.module.css'; + +const DownloadButton = ({ url, fileName, children }) => { + const handleDownload = () => { + const link = document.createElement('a'); + link.href = url; + link.setAttribute('download', fileName); + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + }; + + return ( + + ); +}; + +export default DownloadButton; diff --git a/components/BrandKitGallery/index.ts b/components/BrandKitGallery/index.ts new file mode 100644 index 0000000..4ccda5e --- /dev/null +++ b/components/BrandKitGallery/index.ts @@ -0,0 +1,2 @@ +export { default as BrandImage } from './BrandImage'; +export { default as DownloadButton } from './DownloadButton'; diff --git a/components/DownloadableImage.tsx b/components/DownloadableImage.tsx deleted file mode 100644 index 9426f81..0000000 --- a/components/DownloadableImage.tsx +++ /dev/null @@ -1,73 +0,0 @@ -// components/DownloadableImage.tsx -import NextImage from 'next/image'; -import styles from '../styles/DownloadableImage.module.css'; -import { useState, useEffect } from 'react'; - -interface DownloadableImageProps { -url: string; -alt: string; -name: string; -downloadable?: boolean; -} - -const DownloadableImage = ({ url, alt, name, downloadable = true }: DownloadableImageProps) => { -const [imageDimensions, setImageDimensions] = useState({ width: 0, height: 0 }); -const [showModal, setShowModal] = useState(false); - -useEffect(() => { -const img = new window.Image(); -img.src = url; -img.onload = () => { - setImageDimensions({ width: img.width, height: img.height }); -}; -}, [url]); - -const handleImageClick = (e: React.MouseEvent) => { -if (downloadable) { - e.preventDefault(); - const link = document.createElement('a'); - link.href = url; - link.download = name; - link.click(); -} else { - setShowModal(true); - document.body.style.overflow = 'hidden'; -} -}; - -const closeModal = () => { -setShowModal(false); -document.body.style.overflow = 'auto'; -}; - -return ( -<> -
-
- -
- {downloadable && ( - - - - )} -
- {showModal && ( -
-
- -
-
- )} - -); -}; - -export default DownloadableImage; diff --git a/components/EcosystemApps/EcosystemApps.tsx b/components/EcosystemApps/EcosystemApps.tsx index 44767c2..d867f15 100644 --- a/components/EcosystemApps/EcosystemApps.tsx +++ b/components/EcosystemApps/EcosystemApps.tsx @@ -17,7 +17,7 @@ const EcosystemApps = () => { const filteredApps = useMemo(() => ( appData.filter(app => app.title.toLowerCase().includes(searchTerm.toLowerCase()) || - app.tags.some(tag => + app.tags.some(tag => tagPrettyNames[tag]?.some(prettyName => prettyName.toLowerCase().includes(searchTerm.toLowerCase())) ) ) @@ -27,13 +27,13 @@ const EcosystemApps = () => {
setSearchTerm(e.target.value)} className="w-full p-2 text-sm border rounded shadow-sm placeholder-gray-400" />
- Filter by Tags: {allTags.join(', ')} + {allTags.join(', ')}
{filteredApps.length > 0 ? ( diff --git a/components/EvmWalletConnect/CustomConnectButton.tsx b/components/EvmWalletConnect/CustomConnectButton.tsx new file mode 100644 index 0000000..e9064b1 --- /dev/null +++ b/components/EvmWalletConnect/CustomConnectButton.tsx @@ -0,0 +1,73 @@ +// components/EvmWalletConnect/CustomConnectButton.tsx +import { ConnectButton } from "@rainbow-me/rainbowkit"; +import styled from 'styled-components'; + +const CustomButton = styled.button` +background: #001B2A; /* Dark color */ +border: none; +color: #ECDEDE; /* Light color */ +padding: 0.5rem 1rem; +font-size: 1rem; +cursor: pointer; +transition: color 0.3s, background 0.3s; +display: inline-block; +margin-top: 1rem; +margin-right: 0.5rem; +border-radius: 25px; /* Rounded corners */ +text-align: center; +box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +font-family: 'Inter', sans-serif; + +&:hover { +color: #001B2A; /* Dark color */ +background: #ECDEDE; /* Light color */ +} +`; + +const CustomConnectButton = (props) => ( + +{({ account, chain, openAccountModal, openConnectModal, openChainModal, mounted }) => { + const ready = mounted; + const connected = ready && account && chain; + + return ( +
+ {(() => { + if (!connected) { + return ( + + Connect Wallet + + ); + } + + if (chain.unsupported) { + return ( + + Wrong network + + ); + } + + return ( + + {account.displayName} + + ); + })()} +
+ ); +}} +
+); + +export default CustomConnectButton; diff --git a/components/EvmWalletConnect/EvmWalletConnect.tsx b/components/EvmWalletConnect/EvmWalletConnect.tsx index 7914554..99c130d 100644 --- a/components/EvmWalletConnect/EvmWalletConnect.tsx +++ b/components/EvmWalletConnect/EvmWalletConnect.tsx @@ -1,71 +1,68 @@ +// components/EvmWalletConnect/EvmWalletConnect.tsx import { - ConnectButton, - connectorsForWallets, - RainbowKitProvider, +connectorsForWallets, +RainbowKitProvider, } from "@rainbow-me/rainbowkit"; import { injectedWallet, metaMaskWallet } from "@rainbow-me/rainbowkit/wallets"; import { Chain, configureChains, createConfig, WagmiConfig } from "wagmi"; import { publicProvider } from "wagmi/providers/public"; import "@rainbow-me/rainbowkit/styles.css"; import { ChainRpcUrls } from "viem/_types/types/chain"; +import CustomConnectButton from './CustomConnectButton'; export default function EvmWalletConnect() { - const rpcUrl: ChainRpcUrls = { - http: ["https://evm-rpc.sei-apis.com"], - webSocket: ["wss://evm-ws.sei-apis.com"], - }; - const seiDevnet: Chain = { - id: 513, - name: "Sei Network", - network: "Sei", - nativeCurrency: { - decimals: 18, - name: "Sei", - symbol: "SEI", - }, - rpcUrls: { - public: rpcUrl, - default: rpcUrl, - }, - testnet: true, - blockExplorers: { - default: { name: "Seitrace", url: "https://seitrace.com" }, - }, - }; +const rpcUrl: ChainRpcUrls = { + http: ["https://evm-rpc.sei-apis.com"], + webSocket: ["wss://evm-ws.sei-apis.com"], +}; +const seiDevnet: Chain = { + id: 513, + name: "Sei Network", + network: "Sei", + nativeCurrency: { + decimals: 18, + name: "Sei", + symbol: "SEI", + }, + rpcUrls: { + public: rpcUrl, + default: rpcUrl, + }, + testnet: true, + blockExplorers: { + default: { name: "Seitrace", url: "https://seitrace.com" }, + }, +}; - const { chains, publicClient } = configureChains( - [seiDevnet], - [publicProvider()] - ); +const { chains, publicClient } = configureChains( + [seiDevnet], + [publicProvider()] +); - const projectId = "385413c214cb74213e0679bc30dd4e4c"; - const connectors = connectorsForWallets([ - { - groupName: "Recommended", - wallets: [ - injectedWallet({ chains }), - metaMaskWallet({ projectId, chains }), - ], - }, - ]); +const projectId = "385413c214cb74213e0679bc30dd4e4c"; +const connectors = connectorsForWallets([ + { + groupName: "Recommended", + wallets: [ + injectedWallet({ chains }), + metaMaskWallet({ projectId, chains }), + ], + }, +]); - const wagmiConfig = createConfig({ - autoConnect: false, - connectors, - publicClient, - }); +const wagmiConfig = createConfig({ + autoConnect: false, + connectors, + publicClient, +}); - return ( -
- - - - - -
- ); +return ( +
+ + + + + +
+); } diff --git a/components/index.ts b/components/index.ts index e93119a..8ed226f 100644 --- a/components/index.ts +++ b/components/index.ts @@ -2,6 +2,8 @@ export * from "./EcosystemApps"; export * from "./EcosystemCard"; export * from "./EvmWalletConnect"; export * from "./HelpCallout"; +export * from "./BrandKitGallery"; export * from "./ImageWithCaption"; export * from "./Logo"; export * from "./Nfts"; +export * from "./VersionFetcher"; \ No newline at end of file diff --git a/data/imageData.ts b/data/imageData.ts deleted file mode 100644 index a28c237..0000000 --- a/data/imageData.ts +++ /dev/null @@ -1,23 +0,0 @@ -// src/imageData.ts -export interface ImageData { - url: string; - alt: string; - name: string; - } - -const images: ImageData[] = [ - { url: 'https://cdn.sei.io/brand_/brand_01.png', alt: 'Logotype', name: 'brand_01' }, - { url: 'https://cdn.sei.io/brand_/brand_02.png', alt: 'Main Logo', name: 'brand_02' }, - { url: 'https://cdn.sei.io/brand_/brand_03.png', alt: 'Symbol Gradient', name: 'brand_03' }, - { url: 'https://cdn.sei.io/brand_/brand_04.png', alt: 'Symbol Clearspace', name: 'brand_04' }, - { url: 'https://cdn.sei.io/brand_/brand_05.png', alt: 'Logo Misuse', name: 'brand_05' }, - { url: 'https://cdn.sei.io/brand_/brand_06.png', alt: 'Sei Color Palette', name: 'brand_06' }, - { url: 'https://cdn.sei.io/brand_/brand_07.png', alt: 'Sei Gradient', name: 'brand_07' }, - { url: 'https://cdn.sei.io/brand_/brand_08.png', alt: 'Typography', name: 'brand_08' }, - { url: 'https://cdn.sei.io/brand_/brand_09.png', alt: 'Typography', name: 'brand_09' }, - { url: 'https://cdn.sei.io/brand_/brand_10.png', alt: 'Typography', name: 'brand_10' }, - { url: 'https://cdn.sei.io/brand_/brand_11.png', alt: 'Typography', name: 'brand_11' }, - // Add more image entries as needed - ]; - -export default images; diff --git a/next.config.js b/next.config.js index 45c8777..dae0027 100644 --- a/next.config.js +++ b/next.config.js @@ -5,6 +5,12 @@ const withNextra = require('nextra')({ module.exports = withNextra({ images: { - domains: ['cdn.sei.io'], + remotePatterns: [ + { + protocol: 'https', + hostname: 'cdn.sei.io', + pathname: '**', + } + ], }, }); diff --git a/package.json b/package.json index 42445a2..284811f 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@mdx-js/loader": "^3.0.1", "@next/mdx": "^14.2.3", "@rainbow-me/rainbowkit": "^1.3.3", + "@types/styled-components": "^5.1.34", "lucide-react": "^0.314.0", "next": "^14.2.3", "next-compose-plugins": "^2.2.1", @@ -21,6 +22,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "sharp": "^0.33.2", + "styled-components": "^6.1.11", "tailwind-merge": "^2.2.1", "viem": "^1.21.4", "wagmi": "^1.4.13" diff --git a/pages/_app.mdx b/pages/_app.mdx index 9c615a6..1bc7fb9 100644 --- a/pages/_app.mdx +++ b/pages/_app.mdx @@ -1,9 +1,12 @@ -import '../styles/globals.css' +import '../styles/globals.css'; +import '../styles/custom.css'; +import '@rainbow-me/rainbowkit/styles.css'; +import { ThemeProvider } from 'next-themes'; export default function Nextra({ Component, pageProps }) { - return ( - <> - - - ) -} \ No newline at end of file + return ( + + + + ); +} diff --git a/pages/brand-kit.mdx b/pages/brand-kit.mdx index 155c86c..bb35632 100644 --- a/pages/brand-kit.mdx +++ b/pages/brand-kit.mdx @@ -1,15 +1,17 @@ ---- -title: Sei Brand Kit ---- +# Sei Branding +import { BrandImage, DownloadButton } from '../components/BrandKitGallery'; import { Callout } from "nextra/components"; -import DownloadableImage from '../components/DownloadableImage'; -import images from '../data/imageData'; - -# Sei Branding +import '../styles/custom.module.css'; - Please adhere to these guidelines when featuring Sei in marketing communications, such as advertising, articles, websites, and printed materials. +Please adhere to these guidelines when featuring Sei in marketing communications, such as advertising, articles, websites, and printed materials. + +**Download full brand assets and guidelines** + + + Sei Brand Assets + Sei’s brand is inspired by Japanese Zen gardens, reflecting harmony, simplicity, and mindfulness. The angular and minimalistic design conveys speed, efficiency, and tranquility, aligning with Sei’s commitment to high performance and ease of use in the blockchain space. @@ -18,82 +20,71 @@ Sei’s brand is inspired by Japanese Zen gardens, reflecting harmony, simplicit ### Logotype -{images.filter(image => image.name === 'brand_01').map(image => ( - -))} - -
- -### Logotype Clearspace - -{images.filter(image => ['brand_03', 'brand_04'].includes(image.name)).map(image => ( - -))} + -
- -### Logo Misuse - -{images.filter(image => image.name === 'brand_08').map(image => ( - -))} +### Main Logo -
+ -### Symbol Clearspace + + PNG + + + SVG + -{images.filter(image => image.name === 'brand_07').map(image => ( - -))} +### Logotype Clearspace -
+A certain amount of space is needed around the logomark to prevent it from becoming cluttered by surrounding artwork, images, or the edge of a page. -### Typography +Below are the minimum spacings: -{images.filter(image => image.name.includes('brand_11') || image.name.includes('brand_12') || image.name.includes('brand_13') || image.name.includes('brand_14')).map(image => ( - -))} + + -
+### Symbol -## Downloadable Assets + + -
+ + PNG + + + SVG + -### Main Logo +### Symbol Clearspace -{images.filter(image => image.name === 'brand_02').map(image => ( - -))} + -
+### Logo Misuse -### Symbol + -{images.filter(image => image.name === 'brand_05').map(image => ( - -))} +## Sei Colors -
+### Sei Color Palette -### Symbol Gradient + -{images.filter(image => image.name === 'brand_06').map(image => ( - -))} +### Sei Gradient -
+ -### Sei Color Palette +## Typography -{images.filter(image => image.name === 'brand_09').map(image => ( - -))} + + + + -
+--- -### Sei Gradient + +**Download full brand assets and guidelines** -{images.filter(image => image.name === 'brand_10').map(image => ( - -))} + + Sei Brand Assets + + diff --git a/pages/node-operators.mdx b/pages/node-operators.mdx index 46fdb46..c36f0f1 100644 --- a/pages/node-operators.mdx +++ b/pages/node-operators.mdx @@ -90,10 +90,11 @@ apt install nano make build-essential gcc git jq chrony tar curl lz4 wget -y mv genesis.json ~/.sei/config ``` -
+
For light-client setup stop here, and add an RPC connection to `client.toml` as a final step.
+ #### Configure Node 1. Set persistent peers: diff --git a/styles/DownloadableImage.module.css b/styles/DownloadableImage.module.css deleted file mode 100644 index 3e876f6..0000000 --- a/styles/DownloadableImage.module.css +++ /dev/null @@ -1,64 +0,0 @@ -/* styles/DownloadableImage.module.css */ -.imageWrapper { - margin: 2rem 0; - text-align: center; - cursor: pointer; - position: relative; -} - -.imageWrapper:hover { - transform: scale(1.05); - transition: transform 0.3s ease; -} - -.imageContainer { - display: flex; - justify-content: center; - align-items: center; -} - -.image { - border-radius: 8px; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); -} - -.downloadButton { - background: none; - border: none; - color: #E63946; /* Sei logo color */ - padding: 0.5rem; - font-size: 1.5rem; - cursor: pointer; - transition: color 0.3s; - display: inline-block; - margin-top: 1rem; -} - -.downloadButton:hover { - color: #C92A3A; /* Darker shade of Sei logo color */ -} - -.modal { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.8); - display: flex; - justify-content: center; - align-items: center; - z-index: 1000; -} - -.modalContent { - position: relative; - width: 80%; - height: 80%; -} - -.modalContent img { - max-width: 100%; - max-height: 100%; - object-fit: contain; -} diff --git a/styles/custom.css b/styles/custom.css new file mode 100644 index 0000000..2f1b7a0 --- /dev/null +++ b/styles/custom.css @@ -0,0 +1,89 @@ +/* styles/custom.css */ +.callout.custom-green { + background-color: rgba(0, 255, 0, 0.1); /* Light transparent green background */ + border: 1px solid rgba(0, 255, 0, 0.3); /* Light green border */ + padding: 8px 12px; /* Smaller padding */ + margin: 16px 0; + border-radius: 8px; /* Slightly rounded corners */ + box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); + color: #00FF00; /* Green text color */ + display: flex; + align-items: center; + font-size: 14px; /* Smaller font size */ +} + +.callout.custom-green::before { + content: "✅"; + margin-right: 8px; + font-size: 16px; /* Smaller icon size */ +} + +.downloadButton { + background: #001B2A; /* Dark color */ + border: none; + color: #ECDEDE; /* Light color */ + padding: 0.5rem 1rem; + font-size: 1rem; + cursor: pointer; + transition: color 0.3s, background 0.3s; + display: inline-block; + margin-top: 1rem; + margin-right: 0.5rem; + border-radius: 25px; /* Rounded corners */ + text-align: center; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + font-family: Inter, sans-serif; +} + +.downloadButton:hover { + color: #001B2A; /* Dark color */ + background: #ECDEDE; /* Light color */ +} + +.imageWrapper { + margin: 2rem 0; + text-align: center; + cursor: pointer; + position: relative; +} + +.imageWrapper:hover { + transform: scale(1.05); + transition: transform 0.3s ease; +} + +.imageContainer { + display: flex; + justify-content: center; + align-items: center; +} + +.image { + border-radius: 8px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); +} + +.modal { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.8); + display: flex; + justify-content: center; + align-items: center; + z-index: 1000; +} + +.modalContent { + position: relative; + width: 80%; + height: 80%; +} + +.modalContent img { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} diff --git a/styles/custom.module.css b/styles/custom.module.css new file mode 100644 index 0000000..365cbe8 --- /dev/null +++ b/styles/custom.module.css @@ -0,0 +1,89 @@ +/* styles/custom.module.css */ +.callout.custom-green { +background-color: rgba(0, 255, 0, 0.1); /* Light transparent green background */ +border: 1px solid rgba(0, 255, 0, 0.3); /* Light green border */ +padding: 8px 12px; /* Smaller padding */ +margin: 16px 0; +border-radius: 8px; /* Slightly rounded corners */ +box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); +color: #00FF00; /* Green text color */ +display: flex; +align-items: center; +font-size: 14px; /* Smaller font size */ +} + +.callout.custom-green::before { +content: "✅"; +margin-right: 8px; +font-size: 16px; /* Smaller icon size */ +} + +.downloadButton { +background: #001B2A; /* Dark color */ +border: none; +color: #ECDEDE; /* Light color */ +padding: 0.5rem 1rem; +font-size: 1rem; +cursor: pointer; +transition: color 0.3s, background 0.3s; +display: inline-block; +margin-top: 1rem; +margin-right: 0.5rem; +border-radius: 25px; /* Rounded corners */ +text-align: center; +box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +font-family: Inter, sans-serif; +} + +.downloadButton:hover { +color: #001B2A; /* Dark color */ +background: #ECDEDE; /* Light color */ +} + +.imageWrapper { +margin: 2rem 0; +text-align: center; +cursor: pointer; +position: relative; +} + +.imageWrapper:hover { +transform: scale(1.05); +transition: transform 0.3s ease; +} + +.imageContainer { +display: flex; +justify-content: center; +align-items: center; +} + +.image { +border-radius: 8px; +box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); +} + +.modal { +position: fixed; +top: 0; +left: 0; +width: 100%; +height: 100%; +background: rgba(0, 0, 0, 0.8); +display: flex; +justify-content: center; +align-items: center; +z-index: 1000; +} + +.modalContent { +position: relative; +width: 80%; +height: 80%; +} + +.modalContent img { +max-width: 100%; +max-height: 100%; +object-fit: contain; +} diff --git a/styles/globals.css b/styles/globals.css index e7b21c4..fbd2d3b 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -1,25 +1,4 @@ +/* styles/globals.css */ @tailwind base; @tailwind components; @tailwind utilities; - -.callout.custom-green { - background-color: rgba(0, 255, 0, 0.1); /* Light transparent green background */ - border: 1px solid rgba(255, 255, 255, 0.2); /* Light white border */ - padding: 8px 12px; /* Smaller padding */ - margin: 16px 0; - border-radius: 8px; /* Slightly rounded corners */ - box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); - color: #f0f0f0; /* Light text color */ - display: flex; - align-items: center; - font-size: 14px; /* Smaller font size */ -} - -.callout.custom-green::before { - content: "✅"; - margin-right: 8px; - font-size: 16px; /* Smaller icon size */ -} - - - diff --git a/tailwind.config.js b/tailwind.config.js index d447386..50846ac 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,5 +1,3 @@ -// tailwind.config.js - /** @type {import('tailwindcss').Config} */ module.exports = { darkMode: "class", diff --git a/theme.config.tsx b/theme.config.tsx index a238aa4..ab7e26c 100644 --- a/theme.config.tsx +++ b/theme.config.tsx @@ -1,6 +1,6 @@ import React from "react"; import { DocsThemeConfig } from "nextra-theme-docs"; -import { Logo } from "./components"; +import { Logo } from "./components/Logo"; const config: DocsThemeConfig = { logo: , diff --git a/yarn.lock b/yarn.lock index 5a1e245..f920039 100644 --- a/yarn.lock +++ b/yarn.lock @@ -52,6 +52,23 @@ resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz" integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@emotion/is-prop-valid@1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz" + integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== + dependencies: + "@emotion/memoize" "^0.8.1" + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/unitless@0.8.1": + version "0.8.1" + resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + "@headlessui/react@^1.7.17": version "1.7.19" resolved "https://registry.npmjs.org/@headlessui/react/-/react-1.7.19.tgz" @@ -813,6 +830,12 @@ dependencies: "@types/unist" "*" +"@types/hoist-non-react-statics@*": + version "3.3.5" + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + "@types/js-yaml@^4.0.0": version "4.0.9" resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz" @@ -867,14 +890,26 @@ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz" integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== -"@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.0 || ^17.0.0 || ^18.0.0", "@types/react@>=16", "@types/react@>=16.8": - version "18.3.1" - resolved "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz" - integrity sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw== +"@types/react@*", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.0 || ^17.0.0 || ^18.0.0", "@types/react@>=16", "@types/react@>=16.8": + version "18.3.3" dependencies: "@types/prop-types" "*" csstype "^3.0.2" +"@types/styled-components@^5.1.34": + version "5.1.34" + resolved "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.34.tgz" + integrity sha512-mmiVvwpYklFIv9E8qfxuPyIt/OuyIrn6gMOAMOFUO3WJfSrSE+sGUoa4PiZj77Ut7bKZpaa6o1fBKS/4TOEvnA== + dependencies: + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + csstype "^3.0.2" + +"@types/stylis@4.2.5": + version "4.2.5" + resolved "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz" + integrity sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw== + "@types/trusted-types@^2.0.2": version "2.0.7" resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz" @@ -1738,6 +1773,11 @@ camelcase@^5.0.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: version "1.0.30001614" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz" @@ -1997,6 +2037,20 @@ crossws@^0.2.0, crossws@^0.2.2: resolved "https://registry.npmjs.org/crossws/-/crossws-0.2.4.tgz" integrity sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg== +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-to-react-native@3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + css-what@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" @@ -2007,7 +2061,7 @@ cssesc@^3.0.0: resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -csstype@^3.0.2, csstype@^3.0.7: +csstype@^3.0.2, csstype@^3.0.7, csstype@3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== @@ -3231,6 +3285,11 @@ hey-listen@^1.0.8: resolved "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz" integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== +hoist-non-react-statics@^3.3.0: + version "3.3.2" + dependencies: + react-is "^16.7.0" + html-void-elements@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz" @@ -5075,9 +5134,7 @@ node-forge@^1.3.1: integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-gyp-build@^4.2.0: - version "4.8.0" - resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz" - integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== + version "4.8.1" node-releases@^2.0.14: version "2.0.14" @@ -5407,12 +5464,12 @@ postcss-selector-parser@^6.0.11: 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.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.35, postcss@>=8.0.9: +postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.35, postcss@>=8.0.9, postcss@8.4.38: version "8.4.38" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== @@ -5524,7 +5581,7 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -react-dom@*, "react-dom@^16 || ^17 || ^18", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", react-dom@^18.2.0, react-dom@^18.3.1, react-dom@>=16.0.0, react-dom@>=16.13.1, "react-dom@>=16.x <=18.x", react-dom@>=17: +react-dom@*, "react-dom@^16 || ^17 || ^18", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", react-dom@^18.2.0, react-dom@^18.3.1, "react-dom@>= 16.8.0", react-dom@>=16.0.0, react-dom@>=16.13.1, "react-dom@>=16.x <=18.x", react-dom@>=17: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -5532,6 +5589,9 @@ react-dom@*, "react-dom@^16 || ^17 || ^18", "react-dom@^16.8.0 || ^17.0.0 || ^18 loose-envify "^1.1.0" scheduler "^0.23.2" +react-is@^16.7.0: + version "16.13.1" + react-remove-scroll-bar@^2.3.4: version "2.3.6" resolved "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz" @@ -5560,7 +5620,7 @@ react-style-singleton@^2.2.1: invariant "^2.2.4" tslib "^2.0.0" -react@*, "react@^16 || ^17 || ^18", "react@^16.5.1 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", react@^18.2.0, react@^18.3.1, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", react@>=16, react@>=16.0.0, react@>=16.13.1, react@>=16.8, "react@>=16.x <=18.x", react@>=17, react@>=17.0.0: +react@*, "react@^16 || ^17 || ^18", "react@^16.5.1 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", react@^18.2.0, react@^18.3.1, "react@>= 16.8.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", react@>=16, react@>=16.0.0, react@>=16.13.1, react@>=16.8, "react@>=16.x <=18.x", react@>=17, react@>=17.0.0: version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -5880,6 +5940,11 @@ sha.js@^2.4.11: inherits "^2.0.1" safe-buffer "^5.0.1" +shallowequal@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + sharp@^0.33.2: version "0.33.3" resolved "https://registry.npmjs.org/sharp/-/sharp-0.33.3.tgz" @@ -6152,6 +6217,21 @@ style-to-object@^1.0.0: dependencies: inline-style-parser "0.2.3" +styled-components@^6.1.11: + version "6.1.11" + resolved "https://registry.npmjs.org/styled-components/-/styled-components-6.1.11.tgz" + integrity sha512-Ui0jXPzbp1phYij90h12ksljKGqF8ncGx+pjrNPsSPhbUUjWT2tD1FwGo2LF6USCnbrsIhNngDfodhxbegfEOA== + dependencies: + "@emotion/is-prop-valid" "1.2.2" + "@emotion/unitless" "0.8.1" + "@types/stylis" "4.2.5" + css-to-react-native "3.2.0" + csstype "3.1.3" + postcss "8.4.38" + shallowequal "1.1.0" + stylis "4.3.2" + tslib "2.6.2" + styled-jsx@5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz" @@ -6159,7 +6239,7 @@ styled-jsx@5.1.1: dependencies: client-only "0.0.1" -stylis@^4.1.3: +stylis@^4.1.3, stylis@4.3.2: version "4.3.2" resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz" integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== @@ -6387,6 +6467,11 @@ tslib@^2.4.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + type-fest@^1.0.2: version "1.4.0" resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" @@ -6426,11 +6511,6 @@ uncrypto@^0.1.3: resolved "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz" integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - unenv@^1.9.0: version "1.9.0" resolved "https://registry.npmjs.org/unenv/-/unenv-1.9.0.tgz"