From 4e0508cdaad1347d22dc8102448b951681ee386a Mon Sep 17 00:00:00 2001
From: npmrun <1549469775@qq.com>
Date: Tue, 19 Nov 2024 23:15:06 +0800
Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E5=BC=80=E5=8F=91=E4=B8=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/base/withPage.tsx | 2 +-
src/effect/index.tsx | 2 +-
src/layout/base.tsx | 46 ++++++++++++++++++++++++++++-------------
src/router/AppRouter.tsx | 2 +-
src/router/Loading.tsx | 6 ++----
src/router/index.ts | 4 ++--
src/ui/Hero/index.tsx | 52 +++++++++++++++++++++++++++++++++++++++++++++++
src/ui/Markdown/index.tsx | 22 ++++++++++++++++++++
src/ui/Notice/index.tsx | 11 ++++++++++
src/views/Child.tsx | 3 +--
src/views/Home/index.tsx | 41 +++++++++----------------------------
vite.config.ts | 1 +
12 files changed, 136 insertions(+), 56 deletions(-)
create mode 100644 src/ui/Hero/index.tsx
create mode 100644 src/ui/Markdown/index.tsx
create mode 100644 src/ui/Notice/index.tsx
diff --git a/src/base/withPage.tsx b/src/base/withPage.tsx
index a97f6c0..5e9f76d 100644
--- a/src/base/withPage.tsx
+++ b/src/base/withPage.tsx
@@ -1,5 +1,5 @@
import { FC, ReactNode } from "react"
-import { LeftIn, OpacityIn } from "@/effect"
+import { OpacityIn } from "@/effect"
import styled from "styled-components"
interface PageProps {
diff --git a/src/effect/index.tsx b/src/effect/index.tsx
index 3974e40..59c85af 100644
--- a/src/effect/index.tsx
+++ b/src/effect/index.tsx
@@ -1,5 +1,5 @@
import { motion } from "framer-motion"
-import styled from "styled-components"
+
export function OpacityIn({ children, className }: any) {
return (
diff --git a/src/layout/base.tsx b/src/layout/base.tsx
index 0a9b4c3..664d88b 100644
--- a/src/layout/base.tsx
+++ b/src/layout/base.tsx
@@ -3,6 +3,8 @@ import { ReactNode, useState } from "react"
import { NavLink, useHistory } from "react-router-dom"
import styled from "styled-components"
import { GlobalStyles } from "./GlobalStyles"
+import { Notice } from "@/ui/Notice"
+import { Markdown } from "@/ui/Markdown"
interface PageProps {
children: ReactNode
@@ -27,15 +29,25 @@ function BaseLayout(props: PageProps) {
const router = useHistory()
+ const about = `
+> 人生如逆水行舟,不进则退。
+
+ 我来自一南方小镇,不善言辞,今作此小站,聊慰平生。
+
+ 如有意愿,欢迎联系。
+
+[Github](https://github.com/npmrun)
+ `
+
return (
- 东风天堂
+ 天涯行宫
-
+
setIsOpen(isOpen)}
content={
}
fill={true}
placement="bottom"
>
-
+
+
+
+
-
+ {/* */}
{/* */}
{props.children}
-
)
diff --git a/src/router/AppRouter.tsx b/src/router/AppRouter.tsx
index 091a4ba..1593197 100644
--- a/src/router/AppRouter.tsx
+++ b/src/router/AppRouter.tsx
@@ -1,5 +1,5 @@
import { HashRouter as Router, Switch, Redirect, Route } from "react-router-dom"
-import React, { Fragment, ReactNode } from "react"
+import React, { Fragment } from "react"
import AuthRoute from "./AuthRoute"
import routes from "./route"
import Loading from "./Loading"
diff --git a/src/router/Loading.tsx b/src/router/Loading.tsx
index 2e495fd..e8bf24f 100644
--- a/src/router/Loading.tsx
+++ b/src/router/Loading.tsx
@@ -1,8 +1,6 @@
-import { createRef, ReactNode, useEffect, useState } from "react"
+import { ReactNode, useEffect, useState } from "react"
import styled from "styled-components"
-interface IProps {}
-
const LoadingComp = styled.div`
position: absolute;
top: 0;
@@ -37,7 +35,7 @@ const LoadingComp = styled.div`
}
`
-export default function Loading(props: IProps): ReactNode {
+export default function Loading(): ReactNode {
const [show, setShow] = useState(false)
useEffect(() => {
const timeId = setTimeout(() => {
diff --git a/src/router/index.ts b/src/router/index.ts
index d92cc67..742b334 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -30,7 +30,7 @@ export default function useRoute() {
const { pathname } = useLocation()
let oroute = JSON.parse(JSON.stringify(routes))
let index = foundRoute(routes, pathname)
- let isLayout = true
+ // let isLayout = true
let curA = null
let curB = null
if (index && index.length) {
@@ -45,7 +45,7 @@ export default function useRoute() {
cur.children = []
}
if (cur.layout != undefined) {
- isLayout = !!cur.layout
+ // isLayout = !!cur.layout
}
curA = cur
curB = res
diff --git a/src/ui/Hero/index.tsx b/src/ui/Hero/index.tsx
new file mode 100644
index 0000000..a76c103
--- /dev/null
+++ b/src/ui/Hero/index.tsx
@@ -0,0 +1,52 @@
+import { OpacityIn } from "@/effect"
+import styled from "styled-components"
+
+const FigureElement = styled.figure`
+ margin: 0;
+ position: relative;
+ height: 350px;
+ .img-wrapper {
+ height: 100%;
+ width: 100%;
+ filter: brightness(0.75);
+ img {
+ height: 100%;
+ width: 100%;
+ object-fit: cover;
+ object-position: top -100px right 0;
+ display: block;
+ }
+ }
+ .mask {
+ background: url(data:image/webp;base64,UklGRkYAAABXRUJQVlA4WAoAAAAQAAAAAQAAAQAAQUxQSAUAAAAA/wAAAABWUDggGgAAADABAJ0BKgIAAgAAwBIlpAADcAD+/u6qAAAA);
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ }
+ figcaption {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ color: white;
+ padding: 15px 20px;
+ font-size: 2em;
+ text-align: justify;
+ }
+`
+
+export function Hero() {
+ return (
+
+
+
+
+
+ 珠光照月,斑驳裂影。桃艳压山,风月无边。
+
+ )
+}
diff --git a/src/ui/Markdown/index.tsx b/src/ui/Markdown/index.tsx
new file mode 100644
index 0000000..680a159
--- /dev/null
+++ b/src/ui/Markdown/index.tsx
@@ -0,0 +1,22 @@
+import ReactMarkdown from "react-markdown"
+import styled from "styled-components"
+
+const MarkdownElement = styled(ReactMarkdown)`
+ blockquote {
+ margin: 0;
+ background-color: gainsboro;
+ padding: 10px 10px 10px 10px;
+ p:last-child {
+ margin-bottom: 0;
+ font-size: 1.1em;
+ }
+ }
+`
+
+interface IProps {
+ children: string
+}
+
+export function Markdown({ children }: IProps) {
+ return {children}
+}
diff --git a/src/ui/Notice/index.tsx b/src/ui/Notice/index.tsx
new file mode 100644
index 0000000..c12cd1c
--- /dev/null
+++ b/src/ui/Notice/index.tsx
@@ -0,0 +1,11 @@
+// import { Tag } from "@blueprintjs/core";
+
+export function Notice() {
+ return (
+ <>
+ {/*
+ 公告: 吾生也有涯,而知也无涯。以有涯随无涯,殆已!
+ */}
+ >
+ )
+}
diff --git a/src/views/Child.tsx b/src/views/Child.tsx
index 2d724d4..12144fa 100644
--- a/src/views/Child.tsx
+++ b/src/views/Child.tsx
@@ -1,5 +1,4 @@
-import { Button, Dialog, DialogBody, DialogFooter } from "@blueprintjs/core";
-import { useCallback, useState } from "react";
+import { Button } from "@blueprintjs/core";
function Child() {
return <>
diff --git a/src/views/Home/index.tsx b/src/views/Home/index.tsx
index 61c01d3..0255c81 100644
--- a/src/views/Home/index.tsx
+++ b/src/views/Home/index.tsx
@@ -1,37 +1,16 @@
import withPage from "@/base/withPage"
-import { useHistory } from "react-router-dom"
-import styled from "styled-components"
-import ReactMarkdown from "react-markdown"
-import MdText from "./index.md?raw"
+import { Hero } from "@/ui/Hero"
+import { ReactNode } from "react"
-const Title = styled.h1`
- font-size: 1.5em;
- text-align: center;
- color: #bf4f74;
-`
+interface IProps {
+ children: ReactNode
+}
-const Wrapper = styled.section`
- padding: 4em;
- background: papayawhip;
-`
-
-export default withPage(function Project({ children }) {
- const router = useHistory()
- function toChild() {
- router.push("/project/child")
- }
+export default withPage(function Project({}: IProps) {
return (
-
-
- HOME
-
-
{MdText}
-
-
- vaas
-
- {children}
-
-
+ <>
+
+
+ >
)
})
diff --git a/vite.config.ts b/vite.config.ts
index c2f38d9..a9b62b2 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -4,6 +4,7 @@ import react from "@vitejs/plugin-react-swc"
// https://vite.dev/config/
export default defineConfig({
+ base: "./",
resolve: {
alias: {
"@": join(__dirname, "src"),
From 41741904eca1ede14c2c78dc9428d5b619ce6a39 Mon Sep 17 00:00:00 2001
From: npmrun <1549469775@qq.com>
Date: Wed, 20 Nov 2024 23:57:29 +0800
Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0appwrite?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env | 2 +
package.json | 1 +
pnpm-lock.yaml | 442 ++++++++++++++++++++++++++++++++++++++++++-----
src/api/index.ts | 16 ++
src/utils/toast.ts | 23 +++
src/views/Home/index.tsx | 72 +++++++-
6 files changed, 508 insertions(+), 48 deletions(-)
create mode 100644 .env
create mode 100644 src/api/index.ts
create mode 100644 src/utils/toast.ts
diff --git a/.env b/.env
new file mode 100644
index 0000000..22fc2ee
--- /dev/null
+++ b/.env
@@ -0,0 +1,2 @@
+# appwrite的项目ID
+VUE_APPWRITE_PROJECT_ID=
diff --git a/package.json b/package.json
index 6152544..bc4fe46 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
"@blueprintjs/table": "^5.2.5",
"@types/lodash": "^4.17.13",
"@types/react-router-dom": "^5.3.3",
+ "appwrite": "^16.0.2",
"framer-motion": "^11.11.17",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 50c74b3..f8b60b5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -26,6 +26,9 @@ importers:
'@types/react-router-dom':
specifier: ^5.3.3
version: 5.3.3
+ appwrite:
+ specifier: ^16.0.2
+ version: 16.0.2
framer-motion:
specifier: ^11.11.17
version: 11.11.17(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -48,8 +51,8 @@ importers:
specifier: ^5.3.4
version: 5.3.4(react@18.3.1)
styled-components:
- specifier: ^6.1.13
- version: 6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^5
+ version: 5.3.11(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)
devDependencies:
'@eslint/js':
specifier: ^9.13.0
@@ -90,10 +93,91 @@ importers:
packages:
+ '@ampproject/remapping@2.3.0':
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+
+ '@babel/code-frame@7.26.2':
+ resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.26.2':
+ resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.26.0':
+ resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.26.2':
+ resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-annotate-as-pure@7.25.9':
+ resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.25.9':
+ resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.25.9':
+ resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.26.0':
+ resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-plugin-utils@7.25.9':
+ resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.25.9':
+ resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.25.9':
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.25.9':
+ resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.26.0':
+ resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.26.2':
+ resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-syntax-jsx@7.25.9':
+ resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
'@babel/runtime@7.26.0':
resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==}
engines: {node: '>=6.9.0'}
+ '@babel/template@7.25.9':
+ resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.25.9':
+ resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.26.0':
+ resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
+ engines: {node: '>=6.9.0'}
+
'@blueprintjs/colors@5.1.3':
resolution: {integrity: sha512-H4TM1PgHf95oV3GeyK5kH2hHXbq7SM8bWJk0w7jrZSa8DBWh1ut4CnF7lufrok1dCr3ePzBxDLmd7RvprexMjg==}
@@ -134,8 +218,11 @@ packages:
'@emotion/memoize@0.8.1':
resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
- '@emotion/unitless@0.8.1':
- resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==}
+ '@emotion/stylis@0.8.5':
+ resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==}
+
+ '@emotion/unitless@0.7.5':
+ resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==}
'@esbuild/aix-ppc64@0.21.5':
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
@@ -329,6 +416,24 @@ packages:
resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
engines: {node: '>=18.18'}
+ '@jridgewell/gen-mapping@0.3.5':
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -567,9 +672,6 @@ packages:
'@types/react@18.3.12':
resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==}
- '@types/stylis@4.2.5':
- resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==}
-
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -658,9 +760,17 @@ packages:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
+ appwrite@16.0.2:
+ resolution: {integrity: sha512-sCMVOe9wdB8OneIz6LtoYhp797GEXoudAdygNZgezPiybGOlMPcQ8kP1c/FW1eES0ledaqgaZ0PHb+LwZia8pw==}
+
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ babel-plugin-styled-components@2.1.4:
+ resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==}
+ peerDependencies:
+ styled-components: ^5
+
bail@2.0.2:
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
@@ -677,6 +787,11 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
+ browserslist@4.24.2:
+ resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
@@ -687,6 +802,9 @@ packages:
camelize@1.0.1:
resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
+ caniuse-lite@1.0.30001680:
+ resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==}
+
capital-case@1.0.4:
resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
@@ -731,6 +849,9 @@ packages:
constant-case@3.0.4:
resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==}
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
cross-spawn@7.0.5:
resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==}
engines: {node: '>= 8'}
@@ -773,11 +894,18 @@ packages:
dot-case@3.0.4:
resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
+ electron-to-chromium@1.5.63:
+ resolution: {integrity: sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==}
+
esbuild@0.21.5:
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
engines: {node: '>=12'}
hasBin: true
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
@@ -895,6 +1023,10 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -903,6 +1035,10 @@ packages:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
+ globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
@@ -914,6 +1050,10 @@ packages:
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+ has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
@@ -992,6 +1132,11 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
+ jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+ hasBin: true
+
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -1001,6 +1146,11 @@ packages:
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
@@ -1028,6 +1178,9 @@ packages:
lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
mdast-util-from-markdown@2.0.2:
resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
@@ -1144,6 +1297,9 @@ packages:
no-case@3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
+ node-releases@2.0.18:
+ resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
+
normalize.css@8.0.1:
resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==}
@@ -1200,10 +1356,6 @@ packages:
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
- postcss@8.4.38:
- resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
- engines: {node: ^10 || ^12 || >=14}
-
postcss@8.4.49:
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
engines: {node: ^10 || ^12 || >=14}
@@ -1316,6 +1468,10 @@ packages:
scheduler@0.23.2:
resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
semver@7.6.3:
resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
engines: {node: '>=10'}
@@ -1355,15 +1511,17 @@ packages:
style-to-object@1.0.8:
resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
- styled-components@6.1.13:
- resolution: {integrity: sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==}
- engines: {node: '>= 16'}
+ styled-components@5.3.11:
+ resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==}
+ engines: {node: '>=10'}
peerDependencies:
react: '>= 16.8.0'
react-dom: '>= 16.8.0'
+ react-is: '>= 16.8.0'
- stylis@4.3.2:
- resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==}
+ supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
@@ -1391,9 +1549,6 @@ packages:
peerDependencies:
typescript: '>=4.2.0'
- tslib@2.6.2:
- resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
-
tslib@2.6.3:
resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
@@ -1436,6 +1591,12 @@ packages:
unist-util-visit@5.0.0:
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+ update-browserslist-db@1.1.1:
+ resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
upper-case-first@2.0.2:
resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
@@ -1502,6 +1663,9 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
@@ -1511,10 +1675,124 @@ packages:
snapshots:
+ '@ampproject/remapping@2.3.0':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@babel/code-frame@7.26.2':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.25.9
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.26.2': {}
+
+ '@babel/core@7.26.0':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.2
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
+ '@babel/helpers': 7.26.0
+ '@babel/parser': 7.26.2
+ '@babel/template': 7.25.9
+ '@babel/traverse': 7.25.9(supports-color@5.5.0)
+ '@babel/types': 7.26.0
+ convert-source-map: 2.0.0
+ debug: 4.3.7(supports-color@5.5.0)
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.26.2':
+ dependencies:
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 3.0.2
+
+ '@babel/helper-annotate-as-pure@7.25.9':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/helper-compilation-targets@7.25.9':
+ dependencies:
+ '@babel/compat-data': 7.26.2
+ '@babel/helper-validator-option': 7.25.9
+ browserslist: 4.24.2
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-module-imports@7.25.9(supports-color@5.5.0)':
+ dependencies:
+ '@babel/traverse': 7.25.9(supports-color@5.5.0)
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+ '@babel/helper-validator-identifier': 7.25.9
+ '@babel/traverse': 7.25.9(supports-color@5.5.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-plugin-utils@7.25.9': {}
+
+ '@babel/helper-string-parser@7.25.9': {}
+
+ '@babel/helper-validator-identifier@7.25.9': {}
+
+ '@babel/helper-validator-option@7.25.9': {}
+
+ '@babel/helpers@7.26.0':
+ dependencies:
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.0
+
+ '@babel/parser@7.26.2':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
'@babel/runtime@7.26.0':
dependencies:
regenerator-runtime: 0.14.1
+ '@babel/template@7.25.9':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+
+ '@babel/traverse@7.25.9(supports-color@5.5.0)':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.0
+ debug: 4.3.7(supports-color@5.5.0)
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.26.0':
+ dependencies:
+ '@babel/helper-string-parser': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+
'@blueprintjs/colors@5.1.3':
dependencies:
tslib: 2.6.3
@@ -1563,7 +1841,9 @@ snapshots:
'@emotion/memoize@0.8.1': {}
- '@emotion/unitless@0.8.1': {}
+ '@emotion/stylis@0.8.5': {}
+
+ '@emotion/unitless@0.7.5': {}
'@esbuild/aix-ppc64@0.21.5':
optional: true
@@ -1644,7 +1924,7 @@ snapshots:
'@eslint/config-array@0.19.0':
dependencies:
'@eslint/object-schema': 2.1.4
- debug: 4.3.7
+ debug: 4.3.7(supports-color@5.5.0)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -1654,7 +1934,7 @@ snapshots:
'@eslint/eslintrc@3.2.0':
dependencies:
ajv: 6.12.6
- debug: 4.3.7
+ debug: 4.3.7(supports-color@5.5.0)
espree: 10.3.0
globals: 14.0.0
ignore: 5.3.2
@@ -1686,6 +1966,23 @@ snapshots:
'@humanwhocodes/retry@0.4.1': {}
+ '@jridgewell/gen-mapping@0.3.5':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -1858,8 +2155,6 @@ snapshots:
'@types/prop-types': 15.7.13
csstype: 3.1.3
- '@types/stylis@4.2.5': {}
-
'@types/unist@2.0.11': {}
'@types/unist@3.0.3': {}
@@ -1888,7 +2183,7 @@ snapshots:
'@typescript-eslint/types': 8.14.0
'@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.14.0
- debug: 4.3.7
+ debug: 4.3.7(supports-color@5.5.0)
eslint: 9.15.0
optionalDependencies:
typescript: 5.6.3
@@ -1904,7 +2199,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3)
'@typescript-eslint/utils': 8.14.0(eslint@9.15.0)(typescript@5.6.3)
- debug: 4.3.7
+ debug: 4.3.7(supports-color@5.5.0)
ts-api-utils: 1.4.0(typescript@5.6.3)
optionalDependencies:
typescript: 5.6.3
@@ -1918,7 +2213,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 8.14.0
'@typescript-eslint/visitor-keys': 8.14.0
- debug: 4.3.7
+ debug: 4.3.7(supports-color@5.5.0)
fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
@@ -1971,8 +2266,22 @@ snapshots:
dependencies:
color-convert: 2.0.1
+ appwrite@16.0.2: {}
+
argparse@2.0.1: {}
+ babel-plugin-styled-components@2.1.4(@babel/core@7.26.0)(styled-components@5.3.11(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(supports-color@5.5.0):
+ dependencies:
+ '@babel/helper-annotate-as-pure': 7.25.9
+ '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+ '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
+ lodash: 4.17.21
+ picomatch: 2.3.1
+ styled-components: 5.3.11(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
+
bail@2.0.2: {}
balanced-match@1.0.2: {}
@@ -1990,6 +2299,13 @@ snapshots:
dependencies:
fill-range: 7.1.1
+ browserslist@4.24.2:
+ dependencies:
+ caniuse-lite: 1.0.30001680
+ electron-to-chromium: 1.5.63
+ node-releases: 2.0.18
+ update-browserslist-db: 1.1.1(browserslist@4.24.2)
+
callsites@3.1.0: {}
camel-case@4.1.2:
@@ -1999,6 +2315,8 @@ snapshots:
camelize@1.0.1: {}
+ caniuse-lite@1.0.30001680: {}
+
capital-case@1.0.4:
dependencies:
no-case: 3.0.4
@@ -2053,6 +2371,8 @@ snapshots:
tslib: 2.6.3
upper-case: 2.0.2
+ convert-source-map@2.0.0: {}
+
cross-spawn@7.0.5:
dependencies:
path-key: 3.1.1
@@ -2069,9 +2389,11 @@ snapshots:
csstype@3.1.3: {}
- debug@4.3.7:
+ debug@4.3.7(supports-color@5.5.0):
dependencies:
ms: 2.1.3
+ optionalDependencies:
+ supports-color: 5.5.0
decode-named-character-reference@1.0.2:
dependencies:
@@ -2095,6 +2417,8 @@ snapshots:
no-case: 3.0.4
tslib: 2.6.3
+ electron-to-chromium@1.5.63: {}
+
esbuild@0.21.5:
optionalDependencies:
'@esbuild/aix-ppc64': 0.21.5
@@ -2121,6 +2445,8 @@ snapshots:
'@esbuild/win32-ia32': 0.21.5
'@esbuild/win32-x64': 0.21.5
+ escalade@3.2.0: {}
+
escape-string-regexp@4.0.0: {}
eslint-plugin-react-hooks@5.0.0(eslint@9.15.0):
@@ -2157,7 +2483,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.5
- debug: 4.3.7
+ debug: 4.3.7(supports-color@5.5.0)
escape-string-regexp: 4.0.0
eslint-scope: 8.2.0
eslint-visitor-keys: 4.2.0
@@ -2250,6 +2576,8 @@ snapshots:
fsevents@2.3.3:
optional: true
+ gensync@1.0.0-beta.2: {}
+
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -2258,12 +2586,16 @@ snapshots:
dependencies:
is-glob: 4.0.3
+ globals@11.12.0: {}
+
globals@14.0.0: {}
globals@15.12.0: {}
graphemer@1.4.0: {}
+ has-flag@3.0.0: {}
+
has-flag@4.0.0: {}
hast-util-to-jsx-runtime@2.3.2:
@@ -2352,12 +2684,16 @@ snapshots:
dependencies:
argparse: 2.0.1
+ jsesc@3.0.2: {}
+
json-buffer@3.0.1: {}
json-schema-traverse@0.4.1: {}
json-stable-stringify-without-jsonify@1.0.1: {}
+ json5@2.2.3: {}
+
keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
@@ -2385,6 +2721,10 @@ snapshots:
dependencies:
tslib: 2.6.3
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
mdast-util-from-markdown@2.0.2:
dependencies:
'@types/mdast': 4.0.4
@@ -2590,7 +2930,7 @@ snapshots:
micromark@4.0.1:
dependencies:
'@types/debug': 4.1.12
- debug: 4.3.7
+ debug: 4.3.7(supports-color@5.5.0)
decode-named-character-reference: 1.0.2
devlop: 1.1.0
micromark-core-commonmark: 2.0.2
@@ -2633,6 +2973,8 @@ snapshots:
lower-case: 2.0.2
tslib: 2.6.3
+ node-releases@2.0.18: {}
+
normalize.css@8.0.1: {}
object-assign@4.1.1: {}
@@ -2698,12 +3040,6 @@ snapshots:
postcss-value-parser@4.2.0: {}
- postcss@8.4.38:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
postcss@8.4.49:
dependencies:
nanoid: 3.3.7
@@ -2865,6 +3201,8 @@ snapshots:
dependencies:
loose-envify: 1.4.0
+ semver@6.3.1: {}
+
semver@7.6.3: {}
sentence-case@3.0.4:
@@ -2901,21 +3239,27 @@ snapshots:
dependencies:
inline-style-parser: 0.2.4
- styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ styled-components@5.3.11(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1):
dependencies:
+ '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
+ '@babel/traverse': 7.25.9(supports-color@5.5.0)
'@emotion/is-prop-valid': 1.2.2
- '@emotion/unitless': 0.8.1
- '@types/stylis': 4.2.5
+ '@emotion/stylis': 0.8.5
+ '@emotion/unitless': 0.7.5
+ babel-plugin-styled-components: 2.1.4(@babel/core@7.26.0)(styled-components@5.3.11(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(supports-color@5.5.0)
css-to-react-native: 3.2.0
- csstype: 3.1.3
- postcss: 8.4.38
+ hoist-non-react-statics: 3.3.2
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ react-is: 16.13.1
shallowequal: 1.1.0
- stylis: 4.3.2
- tslib: 2.6.2
+ supports-color: 5.5.0
+ transitivePeerDependencies:
+ - '@babel/core'
- stylis@4.3.2: {}
+ supports-color@5.5.0:
+ dependencies:
+ has-flag: 3.0.0
supports-color@7.2.0:
dependencies:
@@ -2937,8 +3281,6 @@ snapshots:
dependencies:
typescript: 5.6.3
- tslib@2.6.2: {}
-
tslib@2.6.3: {}
type-check@0.4.0:
@@ -2993,6 +3335,12 @@ snapshots:
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
+ update-browserslist-db@1.1.1(browserslist@4.24.2):
+ dependencies:
+ browserslist: 4.24.2
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
upper-case-first@2.0.2:
dependencies:
tslib: 2.6.3
@@ -3040,6 +3388,8 @@ snapshots:
word-wrap@1.2.5: {}
+ yallist@3.1.1: {}
+
yocto-queue@0.1.0: {}
zwitch@2.0.4: {}
diff --git a/src/api/index.ts b/src/api/index.ts
new file mode 100644
index 0000000..36b0b7d
--- /dev/null
+++ b/src/api/index.ts
@@ -0,0 +1,16 @@
+import { Toast } from "@/utils/toast"
+import { Account, Client, ID } from "appwrite"
+
+const client = new Client()
+
+client.setProject(import.meta.env.VUE_APPWRITE_PROJECT_ID)
+
+export async function register(opts: { email: string; password: string }, errText: string) {
+ const account = new Account(client)
+ try {
+ await account.create(ID.unique(), opts.email, opts.password)
+ } catch (error: any) {
+ Toast.error(error?.message ?? errText)
+ return Promise.reject(error)
+ }
+}
diff --git a/src/utils/toast.ts b/src/utils/toast.ts
new file mode 100644
index 0000000..b4e7251
--- /dev/null
+++ b/src/utils/toast.ts
@@ -0,0 +1,23 @@
+import { OverlayToaster, Position, Toaster } from "@blueprintjs/core"
+
+interface Toaster2 {
+ error: Function
+ success: Function
+ loading: Function
+ dismiss: Function
+}
+
+export const Toast: Toaster & Toaster2 = OverlayToaster.create({ position: Position.TOP_RIGHT }) as any
+export const TToast: Toaster & Toaster2 = OverlayToaster.create({ position: Position.TOP }) as any
+
+let oldToastDismiss = Toast.dismiss.bind(Toast)
+Toast.dismiss = (key: string) => {
+ TToast.dismiss(key)
+ oldToastDismiss(key)
+}
+Toast.error = (message: string) => Toast.show({ message: message, icon: "error", intent: "danger", timeout: 3000 })
+Toast.success = (message: string) => Toast.show({ message: message, intent: "success", timeout: 3000 })
+Toast.loading = (message: string) => {
+ const key = TToast.show({ message: message, intent: "primary", timeout: 0 })
+ return key
+}
diff --git a/src/views/Home/index.tsx b/src/views/Home/index.tsx
index 0255c81..d07b4c8 100644
--- a/src/views/Home/index.tsx
+++ b/src/views/Home/index.tsx
@@ -1,16 +1,84 @@
+import { register } from "@/api"
import withPage from "@/base/withPage"
import { Hero } from "@/ui/Hero"
-import { ReactNode } from "react"
+import { Toast } from "@/utils/toast"
+import { Button, FormGroup, InputGroup, Intent, OverlayToaster, Position, Toaster, Tooltip } from "@blueprintjs/core"
+import { ReactNode, useCallback, useState } from "react"
interface IProps {
children: ReactNode
}
export default withPage(function Project({}: IProps) {
+ const [disabled] = useState(false)
+ const [showPassword, setShowPassword] = useState(false)
+ const [email, setEmail] = useState("")
+ const [password, setPassword] = useState("")
+ const [repeatPassword, setRepeatPassword] = useState("")
+
+ const clickRegister = useCallback(async () => {
+ if (!email) return Toast.error("请输入邮箱")
+ if (!password) return Toast.error("请输入密码")
+ if (!repeatPassword) return Toast.error("请再一次输入密码")
+ if (repeatPassword !== password) return Toast.error("两次输入的密码不一致")
+ let toastID = Toast.loading("注册中")
+ try {
+ await register({ email, password }, "注册失败")
+ Toast.success("注册成功")
+ } catch (error) {
+ console.error(error)
+ } finally {
+ Toast.dismiss(toastID)
+ }
+ }, [password, email, repeatPassword])
+
return (
<>
-
+
+
+
+
>
)
})
From c1f472292005c3fcf9ce39a34d2431741b7db57c Mon Sep 17 00:00:00 2001
From: npmrun <1549469775@qq.com>
Date: Thu, 21 Nov 2024 23:23:22 +0800
Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E5=B0=81=E8=A3=85=E6=B3=A8?=
=?UTF-8?q?=E5=86=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package.json | 1 +
pnpm-lock.yaml | 454 +++++++------------------------------------
src/layout/GlobalStyles.ts | 2 +-
src/layout/base.tsx | 24 ++-
src/store/account.ts | 9 +
src/ui/Register/Register.tsx | 111 +++++++++++
src/utils/toast.ts | 6 +-
src/views/Home/index.tsx | 69 +------
8 files changed, 214 insertions(+), 462 deletions(-)
create mode 100644 src/store/account.ts
create mode 100644 src/ui/Register/Register.tsx
diff --git a/package.json b/package.json
index bc4fe46..bd31dad 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
"@types/react-router-dom": "^5.3.3",
"appwrite": "^16.0.2",
"framer-motion": "^11.11.17",
+ "jotai": "^2.10.3",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"react": "^18.3.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f8b60b5..ef9f33e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -32,6 +32,9 @@ importers:
framer-motion:
specifier: ^11.11.17
version: 11.11.17(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ jotai:
+ specifier: ^2.10.3
+ version: 2.10.3(@types/react@18.3.12)(react@18.3.1)
lodash:
specifier: ^4.17.21
version: 4.17.21
@@ -51,8 +54,8 @@ importers:
specifier: ^5.3.4
version: 5.3.4(react@18.3.1)
styled-components:
- specifier: ^5
- version: 5.3.11(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)
+ specifier: ^6.1.13
+ version: 6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
devDependencies:
'@eslint/js':
specifier: ^9.13.0
@@ -93,91 +96,10 @@ importers:
packages:
- '@ampproject/remapping@2.3.0':
- resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
- engines: {node: '>=6.0.0'}
-
- '@babel/code-frame@7.26.2':
- resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/compat-data@7.26.2':
- resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/core@7.26.0':
- resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/generator@7.26.2':
- resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-annotate-as-pure@7.25.9':
- resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-compilation-targets@7.25.9':
- resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-imports@7.25.9':
- resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-transforms@7.26.0':
- resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-plugin-utils@7.25.9':
- resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-string-parser@7.25.9':
- resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.25.9':
- resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-option@7.25.9':
- resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helpers@7.26.0':
- resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.26.2':
- resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/plugin-syntax-jsx@7.25.9':
- resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
'@babel/runtime@7.26.0':
resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==}
engines: {node: '>=6.9.0'}
- '@babel/template@7.25.9':
- resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/traverse@7.25.9':
- resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.26.0':
- resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
- engines: {node: '>=6.9.0'}
-
'@blueprintjs/colors@5.1.3':
resolution: {integrity: sha512-H4TM1PgHf95oV3GeyK5kH2hHXbq7SM8bWJk0w7jrZSa8DBWh1ut4CnF7lufrok1dCr3ePzBxDLmd7RvprexMjg==}
@@ -218,11 +140,8 @@ packages:
'@emotion/memoize@0.8.1':
resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
- '@emotion/stylis@0.8.5':
- resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==}
-
- '@emotion/unitless@0.7.5':
- resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==}
+ '@emotion/unitless@0.8.1':
+ resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==}
'@esbuild/aix-ppc64@0.21.5':
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
@@ -416,24 +335,6 @@ packages:
resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
engines: {node: '>=18.18'}
- '@jridgewell/gen-mapping@0.3.5':
- resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/set-array@1.2.1':
- resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
-
- '@jridgewell/trace-mapping@0.3.25':
- resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
-
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -672,6 +573,9 @@ packages:
'@types/react@18.3.12':
resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==}
+ '@types/stylis@4.2.5':
+ resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==}
+
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -766,11 +670,6 @@ packages:
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- babel-plugin-styled-components@2.1.4:
- resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==}
- peerDependencies:
- styled-components: ^5
-
bail@2.0.2:
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
@@ -787,11 +686,6 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
- browserslist@4.24.2:
- resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
@@ -802,9 +696,6 @@ packages:
camelize@1.0.1:
resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
- caniuse-lite@1.0.30001680:
- resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==}
-
capital-case@1.0.4:
resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
@@ -849,9 +740,6 @@ packages:
constant-case@3.0.4:
resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==}
- convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
-
cross-spawn@7.0.5:
resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==}
engines: {node: '>= 8'}
@@ -894,18 +782,11 @@ packages:
dot-case@3.0.4:
resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
- electron-to-chromium@1.5.63:
- resolution: {integrity: sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==}
-
esbuild@0.21.5:
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
engines: {node: '>=12'}
hasBin: true
- escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
-
escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
@@ -1023,10 +904,6 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
- gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
-
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -1035,10 +912,6 @@ packages:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
- globals@11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
-
globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
@@ -1050,10 +923,6 @@ packages:
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
@@ -1125,6 +994,18 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ jotai@2.10.3:
+ resolution: {integrity: sha512-Nnf4IwrLhNfuz2JOQLI0V/AgwcpxvVy8Ec8PidIIDeRi4KCFpwTFIpHAAcU+yCgnw/oASYElq9UY0YdUUegsSA==}
+ engines: {node: '>=12.20.0'}
+ peerDependencies:
+ '@types/react': '>=17.0.0'
+ react: '>=17.0.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -1132,11 +1013,6 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
- jsesc@3.0.2:
- resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
- engines: {node: '>=6'}
- hasBin: true
-
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -1146,11 +1022,6 @@ packages:
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
- json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
-
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
@@ -1178,9 +1049,6 @@ packages:
lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
- lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
-
mdast-util-from-markdown@2.0.2:
resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
@@ -1297,9 +1165,6 @@ packages:
no-case@3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
- node-releases@2.0.18:
- resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
-
normalize.css@8.0.1:
resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==}
@@ -1356,6 +1221,10 @@ packages:
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+ postcss@8.4.38:
+ resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
+ engines: {node: ^10 || ^12 || >=14}
+
postcss@8.4.49:
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
engines: {node: ^10 || ^12 || >=14}
@@ -1468,10 +1337,6 @@ packages:
scheduler@0.23.2:
resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
- semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
-
semver@7.6.3:
resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
engines: {node: '>=10'}
@@ -1511,17 +1376,15 @@ packages:
style-to-object@1.0.8:
resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
- styled-components@5.3.11:
- resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==}
- engines: {node: '>=10'}
+ styled-components@6.1.13:
+ resolution: {integrity: sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==}
+ engines: {node: '>= 16'}
peerDependencies:
react: '>= 16.8.0'
react-dom: '>= 16.8.0'
- react-is: '>= 16.8.0'
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
+ stylis@4.3.2:
+ resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==}
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
@@ -1549,6 +1412,9 @@ packages:
peerDependencies:
typescript: '>=4.2.0'
+ tslib@2.6.2:
+ resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+
tslib@2.6.3:
resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
@@ -1591,12 +1457,6 @@ packages:
unist-util-visit@5.0.0:
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
- update-browserslist-db@1.1.1:
- resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
upper-case-first@2.0.2:
resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
@@ -1663,9 +1523,6 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
-
yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
@@ -1675,124 +1532,10 @@ packages:
snapshots:
- '@ampproject/remapping@2.3.0':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
-
- '@babel/code-frame@7.26.2':
- dependencies:
- '@babel/helper-validator-identifier': 7.25.9
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/compat-data@7.26.2': {}
-
- '@babel/core@7.26.0':
- dependencies:
- '@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.26.2
- '@babel/generator': 7.26.2
- '@babel/helper-compilation-targets': 7.25.9
- '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
- '@babel/helpers': 7.26.0
- '@babel/parser': 7.26.2
- '@babel/template': 7.25.9
- '@babel/traverse': 7.25.9(supports-color@5.5.0)
- '@babel/types': 7.26.0
- convert-source-map: 2.0.0
- debug: 4.3.7(supports-color@5.5.0)
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/generator@7.26.2':
- dependencies:
- '@babel/parser': 7.26.2
- '@babel/types': 7.26.0
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
- jsesc: 3.0.2
-
- '@babel/helper-annotate-as-pure@7.25.9':
- dependencies:
- '@babel/types': 7.26.0
-
- '@babel/helper-compilation-targets@7.25.9':
- dependencies:
- '@babel/compat-data': 7.26.2
- '@babel/helper-validator-option': 7.25.9
- browserslist: 4.24.2
- lru-cache: 5.1.1
- semver: 6.3.1
-
- '@babel/helper-module-imports@7.25.9(supports-color@5.5.0)':
- dependencies:
- '@babel/traverse': 7.25.9(supports-color@5.5.0)
- '@babel/types': 7.26.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
- '@babel/helper-validator-identifier': 7.25.9
- '@babel/traverse': 7.25.9(supports-color@5.5.0)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-plugin-utils@7.25.9': {}
-
- '@babel/helper-string-parser@7.25.9': {}
-
- '@babel/helper-validator-identifier@7.25.9': {}
-
- '@babel/helper-validator-option@7.25.9': {}
-
- '@babel/helpers@7.26.0':
- dependencies:
- '@babel/template': 7.25.9
- '@babel/types': 7.26.0
-
- '@babel/parser@7.26.2':
- dependencies:
- '@babel/types': 7.26.0
-
- '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
'@babel/runtime@7.26.0':
dependencies:
regenerator-runtime: 0.14.1
- '@babel/template@7.25.9':
- dependencies:
- '@babel/code-frame': 7.26.2
- '@babel/parser': 7.26.2
- '@babel/types': 7.26.0
-
- '@babel/traverse@7.25.9(supports-color@5.5.0)':
- dependencies:
- '@babel/code-frame': 7.26.2
- '@babel/generator': 7.26.2
- '@babel/parser': 7.26.2
- '@babel/template': 7.25.9
- '@babel/types': 7.26.0
- debug: 4.3.7(supports-color@5.5.0)
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.26.0':
- dependencies:
- '@babel/helper-string-parser': 7.25.9
- '@babel/helper-validator-identifier': 7.25.9
-
'@blueprintjs/colors@5.1.3':
dependencies:
tslib: 2.6.3
@@ -1841,9 +1584,7 @@ snapshots:
'@emotion/memoize@0.8.1': {}
- '@emotion/stylis@0.8.5': {}
-
- '@emotion/unitless@0.7.5': {}
+ '@emotion/unitless@0.8.1': {}
'@esbuild/aix-ppc64@0.21.5':
optional: true
@@ -1924,7 +1665,7 @@ snapshots:
'@eslint/config-array@0.19.0':
dependencies:
'@eslint/object-schema': 2.1.4
- debug: 4.3.7(supports-color@5.5.0)
+ debug: 4.3.7
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -1934,7 +1675,7 @@ snapshots:
'@eslint/eslintrc@3.2.0':
dependencies:
ajv: 6.12.6
- debug: 4.3.7(supports-color@5.5.0)
+ debug: 4.3.7
espree: 10.3.0
globals: 14.0.0
ignore: 5.3.2
@@ -1966,23 +1707,6 @@ snapshots:
'@humanwhocodes/retry@0.4.1': {}
- '@jridgewell/gen-mapping@0.3.5':
- dependencies:
- '@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.5.0
- '@jridgewell/trace-mapping': 0.3.25
-
- '@jridgewell/resolve-uri@3.1.2': {}
-
- '@jridgewell/set-array@1.2.1': {}
-
- '@jridgewell/sourcemap-codec@1.5.0': {}
-
- '@jridgewell/trace-mapping@0.3.25':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
-
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -2155,6 +1879,8 @@ snapshots:
'@types/prop-types': 15.7.13
csstype: 3.1.3
+ '@types/stylis@4.2.5': {}
+
'@types/unist@2.0.11': {}
'@types/unist@3.0.3': {}
@@ -2183,7 +1909,7 @@ snapshots:
'@typescript-eslint/types': 8.14.0
'@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.14.0
- debug: 4.3.7(supports-color@5.5.0)
+ debug: 4.3.7
eslint: 9.15.0
optionalDependencies:
typescript: 5.6.3
@@ -2199,7 +1925,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3)
'@typescript-eslint/utils': 8.14.0(eslint@9.15.0)(typescript@5.6.3)
- debug: 4.3.7(supports-color@5.5.0)
+ debug: 4.3.7
ts-api-utils: 1.4.0(typescript@5.6.3)
optionalDependencies:
typescript: 5.6.3
@@ -2213,7 +1939,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 8.14.0
'@typescript-eslint/visitor-keys': 8.14.0
- debug: 4.3.7(supports-color@5.5.0)
+ debug: 4.3.7
fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
@@ -2270,18 +1996,6 @@ snapshots:
argparse@2.0.1: {}
- babel-plugin-styled-components@2.1.4(@babel/core@7.26.0)(styled-components@5.3.11(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(supports-color@5.5.0):
- dependencies:
- '@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
- '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
- lodash: 4.17.21
- picomatch: 2.3.1
- styled-components: 5.3.11(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)
- transitivePeerDependencies:
- - '@babel/core'
- - supports-color
-
bail@2.0.2: {}
balanced-match@1.0.2: {}
@@ -2299,13 +2013,6 @@ snapshots:
dependencies:
fill-range: 7.1.1
- browserslist@4.24.2:
- dependencies:
- caniuse-lite: 1.0.30001680
- electron-to-chromium: 1.5.63
- node-releases: 2.0.18
- update-browserslist-db: 1.1.1(browserslist@4.24.2)
-
callsites@3.1.0: {}
camel-case@4.1.2:
@@ -2315,8 +2022,6 @@ snapshots:
camelize@1.0.1: {}
- caniuse-lite@1.0.30001680: {}
-
capital-case@1.0.4:
dependencies:
no-case: 3.0.4
@@ -2371,8 +2076,6 @@ snapshots:
tslib: 2.6.3
upper-case: 2.0.2
- convert-source-map@2.0.0: {}
-
cross-spawn@7.0.5:
dependencies:
path-key: 3.1.1
@@ -2389,11 +2092,9 @@ snapshots:
csstype@3.1.3: {}
- debug@4.3.7(supports-color@5.5.0):
+ debug@4.3.7:
dependencies:
ms: 2.1.3
- optionalDependencies:
- supports-color: 5.5.0
decode-named-character-reference@1.0.2:
dependencies:
@@ -2417,8 +2118,6 @@ snapshots:
no-case: 3.0.4
tslib: 2.6.3
- electron-to-chromium@1.5.63: {}
-
esbuild@0.21.5:
optionalDependencies:
'@esbuild/aix-ppc64': 0.21.5
@@ -2445,8 +2144,6 @@ snapshots:
'@esbuild/win32-ia32': 0.21.5
'@esbuild/win32-x64': 0.21.5
- escalade@3.2.0: {}
-
escape-string-regexp@4.0.0: {}
eslint-plugin-react-hooks@5.0.0(eslint@9.15.0):
@@ -2483,7 +2180,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.5
- debug: 4.3.7(supports-color@5.5.0)
+ debug: 4.3.7
escape-string-regexp: 4.0.0
eslint-scope: 8.2.0
eslint-visitor-keys: 4.2.0
@@ -2576,8 +2273,6 @@ snapshots:
fsevents@2.3.3:
optional: true
- gensync@1.0.0-beta.2: {}
-
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -2586,16 +2281,12 @@ snapshots:
dependencies:
is-glob: 4.0.3
- globals@11.12.0: {}
-
globals@14.0.0: {}
globals@15.12.0: {}
graphemer@1.4.0: {}
- has-flag@3.0.0: {}
-
has-flag@4.0.0: {}
hast-util-to-jsx-runtime@2.3.2:
@@ -2678,22 +2369,23 @@ snapshots:
isexe@2.0.0: {}
+ jotai@2.10.3(@types/react@18.3.12)(react@18.3.1):
+ optionalDependencies:
+ '@types/react': 18.3.12
+ react: 18.3.1
+
js-tokens@4.0.0: {}
js-yaml@4.1.0:
dependencies:
argparse: 2.0.1
- jsesc@3.0.2: {}
-
json-buffer@3.0.1: {}
json-schema-traverse@0.4.1: {}
json-stable-stringify-without-jsonify@1.0.1: {}
- json5@2.2.3: {}
-
keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
@@ -2721,10 +2413,6 @@ snapshots:
dependencies:
tslib: 2.6.3
- lru-cache@5.1.1:
- dependencies:
- yallist: 3.1.1
-
mdast-util-from-markdown@2.0.2:
dependencies:
'@types/mdast': 4.0.4
@@ -2930,7 +2618,7 @@ snapshots:
micromark@4.0.1:
dependencies:
'@types/debug': 4.1.12
- debug: 4.3.7(supports-color@5.5.0)
+ debug: 4.3.7
decode-named-character-reference: 1.0.2
devlop: 1.1.0
micromark-core-commonmark: 2.0.2
@@ -2973,8 +2661,6 @@ snapshots:
lower-case: 2.0.2
tslib: 2.6.3
- node-releases@2.0.18: {}
-
normalize.css@8.0.1: {}
object-assign@4.1.1: {}
@@ -3040,6 +2726,12 @@ snapshots:
postcss-value-parser@4.2.0: {}
+ postcss@8.4.38:
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postcss@8.4.49:
dependencies:
nanoid: 3.3.7
@@ -3201,8 +2893,6 @@ snapshots:
dependencies:
loose-envify: 1.4.0
- semver@6.3.1: {}
-
semver@7.6.3: {}
sentence-case@3.0.4:
@@ -3239,27 +2929,21 @@ snapshots:
dependencies:
inline-style-parser: 0.2.4
- styled-components@5.3.11(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1):
+ styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0)
- '@babel/traverse': 7.25.9(supports-color@5.5.0)
'@emotion/is-prop-valid': 1.2.2
- '@emotion/stylis': 0.8.5
- '@emotion/unitless': 0.7.5
- babel-plugin-styled-components: 2.1.4(@babel/core@7.26.0)(styled-components@5.3.11(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(supports-color@5.5.0)
+ '@emotion/unitless': 0.8.1
+ '@types/stylis': 4.2.5
css-to-react-native: 3.2.0
- hoist-non-react-statics: 3.3.2
+ csstype: 3.1.3
+ postcss: 8.4.38
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- react-is: 16.13.1
shallowequal: 1.1.0
- supports-color: 5.5.0
- transitivePeerDependencies:
- - '@babel/core'
+ stylis: 4.3.2
+ tslib: 2.6.2
- supports-color@5.5.0:
- dependencies:
- has-flag: 3.0.0
+ stylis@4.3.2: {}
supports-color@7.2.0:
dependencies:
@@ -3281,6 +2965,8 @@ snapshots:
dependencies:
typescript: 5.6.3
+ tslib@2.6.2: {}
+
tslib@2.6.3: {}
type-check@0.4.0:
@@ -3335,12 +3021,6 @@ snapshots:
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
- update-browserslist-db@1.1.1(browserslist@4.24.2):
- dependencies:
- browserslist: 4.24.2
- escalade: 3.2.0
- picocolors: 1.1.1
-
upper-case-first@2.0.2:
dependencies:
tslib: 2.6.3
@@ -3388,8 +3068,6 @@ snapshots:
word-wrap@1.2.5: {}
- yallist@3.1.1: {}
-
yocto-queue@0.1.0: {}
zwitch@2.0.4: {}
diff --git a/src/layout/GlobalStyles.ts b/src/layout/GlobalStyles.ts
index 56c2963..6e1d0f9 100644
--- a/src/layout/GlobalStyles.ts
+++ b/src/layout/GlobalStyles.ts
@@ -1,5 +1,5 @@
import { createGlobalStyle } from "styled-components"
export const GlobalStyles = createGlobalStyle`
-
+
`
diff --git a/src/layout/base.tsx b/src/layout/base.tsx
index 664d88b..d9e0e88 100644
--- a/src/layout/base.tsx
+++ b/src/layout/base.tsx
@@ -5,6 +5,7 @@ import styled from "styled-components"
import { GlobalStyles } from "./GlobalStyles"
import { Notice } from "@/ui/Notice"
import { Markdown } from "@/ui/Markdown"
+import { Register } from "@/ui/Register/Register"
interface PageProps {
children: ReactNode
@@ -26,6 +27,7 @@ const ContentWrapper = styled.div`
function BaseLayout(props: PageProps) {
const [isOpen, setIsOpen] = useState(false)
const [isOpenAbout, setIsOpenAbout] = useState(false)
+ const [isOpenRegister, setIsOpenRegister] = useState(false)
const router = useHistory()
@@ -77,10 +79,10 @@ function BaseLayout(props: PageProps) {
- {/* */}
+
@@ -88,9 +90,27 @@ function BaseLayout(props: PageProps) {
setIsOpenAbout(false)}>
{about}
+
setIsOpenAbout(false)} />} />
+ setIsOpenRegister(false)}>
+
+ {{
+ Wrapper: ({ children }: { children: ReactNode }) => {children},
+ Default: ({ children }: { children: ReactNode }) => (
+
+ {children}
+ setIsOpenRegister(false)} />
+ >
+ }
+ />
+ ),
+ }}
+
+
)
}
diff --git a/src/store/account.ts b/src/store/account.ts
new file mode 100644
index 0000000..21c58b4
--- /dev/null
+++ b/src/store/account.ts
@@ -0,0 +1,9 @@
+import { atom } from "jotai"
+
+const userStore = {
+ userAtom: atom({
+ token: "",
+ }),
+}
+
+export { userStore }
diff --git a/src/ui/Register/Register.tsx b/src/ui/Register/Register.tsx
new file mode 100644
index 0000000..e93b9eb
--- /dev/null
+++ b/src/ui/Register/Register.tsx
@@ -0,0 +1,111 @@
+// import { Tag } from "@blueprintjs/core";
+
+import { register } from "@/api"
+import { Toast } from "@/utils/toast"
+import { Button, FormGroup, InputGroup, Intent, Tooltip } from "@blueprintjs/core"
+import { FC, ReactNode, useCallback, useEffect, useState } from "react"
+
+interface IProps {
+ onSuccess?: () => void
+ children?: {
+ Wrapper?: FC<{ children: ReactNode }>
+ Default?: FC<{ children: ReactNode }> //({ children }: { children: ReactNode }) => JSX.Element
+ }
+}
+
+export function Register({ onSuccess, children }: IProps) {
+ const [isLoading, setIsLoading] = useState(false)
+ const [showPassword, setShowPassword] = useState(false)
+ const [email, setEmail] = useState("")
+ const [password, setPassword] = useState("")
+ const [repeatPassword, setRepeatPassword] = useState("")
+
+ const clickRegister = useCallback(async () => {
+ if (isLoading) {
+ Toast.success("正在请求中")
+ return
+ }
+ if (!email) return Toast.error("请输入邮箱")
+ if (!password) return Toast.error("请输入密码")
+ if (!repeatPassword) return Toast.error("请再一次输入密码")
+ if (repeatPassword !== password) return Toast.error("两次输入的密码不一致")
+ let toastID = Toast.loading("注册中")
+ setIsLoading(true)
+ try {
+ await register({ email, password }, "注册失败")
+ Toast.success("注册成功")
+ onSuccess && onSuccess()
+ } catch (error) {
+ console.error(error)
+ } finally {
+ Toast.loadingDismiss(toastID)
+ setIsLoading(false)
+ }
+ }, [password, email, repeatPassword, isLoading])
+
+ useEffect(()=>{
+ return ()=>{
+ console.log("取消请求");
+ }
+ }, [])
+
+ const WrapperComp = useCallback(
+ ({ children: child }: { children: ReactNode }) => children?.Wrapper?.({ children: child }) ?? <>{child}>,
+ [children?.Wrapper],
+ )
+ const DefaultComp = useCallback(
+ ({ children: child }: { children: ReactNode }) => children?.Default?.({ children: child }) ?? <>{child}>,
+ [children?.Default],
+ )
+
+ return (
+ <>
+
+ >
+ )
+}
diff --git a/src/utils/toast.ts b/src/utils/toast.ts
index b4e7251..914bf28 100644
--- a/src/utils/toast.ts
+++ b/src/utils/toast.ts
@@ -4,16 +4,14 @@ interface Toaster2 {
error: Function
success: Function
loading: Function
- dismiss: Function
+ loadingDismiss: Function
}
export const Toast: Toaster & Toaster2 = OverlayToaster.create({ position: Position.TOP_RIGHT }) as any
export const TToast: Toaster & Toaster2 = OverlayToaster.create({ position: Position.TOP }) as any
-let oldToastDismiss = Toast.dismiss.bind(Toast)
-Toast.dismiss = (key: string) => {
+Toast.loadingDismiss = (key: string) => {
TToast.dismiss(key)
- oldToastDismiss(key)
}
Toast.error = (message: string) => Toast.show({ message: message, icon: "error", intent: "danger", timeout: 3000 })
Toast.success = (message: string) => Toast.show({ message: message, intent: "success", timeout: 3000 })
diff --git a/src/views/Home/index.tsx b/src/views/Home/index.tsx
index d07b4c8..7c0e9aa 100644
--- a/src/views/Home/index.tsx
+++ b/src/views/Home/index.tsx
@@ -1,83 +1,18 @@
-import { register } from "@/api"
import withPage from "@/base/withPage"
import { Hero } from "@/ui/Hero"
-import { Toast } from "@/utils/toast"
-import { Button, FormGroup, InputGroup, Intent, OverlayToaster, Position, Toaster, Tooltip } from "@blueprintjs/core"
-import { ReactNode, useCallback, useState } from "react"
+import { ReactNode } from "react"
interface IProps {
children: ReactNode
}
export default withPage(function Project({}: IProps) {
- const [disabled] = useState(false)
- const [showPassword, setShowPassword] = useState(false)
- const [email, setEmail] = useState("")
- const [password, setPassword] = useState("")
- const [repeatPassword, setRepeatPassword] = useState("")
-
- const clickRegister = useCallback(async () => {
- if (!email) return Toast.error("请输入邮箱")
- if (!password) return Toast.error("请输入密码")
- if (!repeatPassword) return Toast.error("请再一次输入密码")
- if (repeatPassword !== password) return Toast.error("两次输入的密码不一致")
- let toastID = Toast.loading("注册中")
- try {
- await register({ email, password }, "注册失败")
- Toast.success("注册成功")
- } catch (error) {
- console.error(error)
- } finally {
- Toast.dismiss(toastID)
- }
- }, [password, email, repeatPassword])
-
return (
<>
-
+
>
)