temp
This commit is contained in:
parent
fdb1812e8e
commit
2a818cba7f
@ -3,9 +3,9 @@
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="https://kevisual.cn/root/center/panda.png" />
|
||||
<link rel="icon" type="image/svg+xml" href="https://kevisual.cn/root/center/panda.jpg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>杭州余杭逸文设计工作室</title>
|
||||
<title>逸文设计工作室</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
@ -21,10 +21,12 @@
|
||||
"react-dom": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@kevisual/codemirror": "^0.0.12",
|
||||
"@tailwindcss/vite": "^4.0.15",
|
||||
"@types/react": "^19.0.0",
|
||||
"@types/react-dom": "^19.0.0",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"react-toastify": "^11.0.5",
|
||||
"tailwindcss": "^4.0.15",
|
||||
"vite": "^6.2.3"
|
||||
}
|
||||
|
271
pnpm-lock.yaml
generated
271
pnpm-lock.yaml
generated
@ -21,6 +21,9 @@ importers:
|
||||
specifier: ^19.0.0
|
||||
version: 19.0.0(react@19.0.0)
|
||||
devDependencies:
|
||||
'@kevisual/codemirror':
|
||||
specifier: ^0.0.12
|
||||
version: 0.0.12
|
||||
'@tailwindcss/vite':
|
||||
specifier: ^4.0.15
|
||||
version: 4.0.15(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2))
|
||||
@ -33,6 +36,9 @@ importers:
|
||||
'@vitejs/plugin-react':
|
||||
specifier: ^4.3.4
|
||||
version: 4.3.4(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2))
|
||||
react-toastify:
|
||||
specifier: ^11.0.5
|
||||
version: 11.0.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||
tailwindcss:
|
||||
specifier: ^4.0.15
|
||||
version: 4.0.15
|
||||
@ -125,6 +131,42 @@ packages:
|
||||
resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@codemirror/autocomplete@6.18.6':
|
||||
resolution: {integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==}
|
||||
|
||||
'@codemirror/commands@6.8.1':
|
||||
resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==}
|
||||
|
||||
'@codemirror/lang-css@6.3.1':
|
||||
resolution: {integrity: sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==}
|
||||
|
||||
'@codemirror/lang-html@6.4.9':
|
||||
resolution: {integrity: sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==}
|
||||
|
||||
'@codemirror/lang-javascript@6.2.4':
|
||||
resolution: {integrity: sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA==}
|
||||
|
||||
'@codemirror/lang-json@6.0.2':
|
||||
resolution: {integrity: sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==}
|
||||
|
||||
'@codemirror/lang-markdown@6.3.3':
|
||||
resolution: {integrity: sha512-1fn1hQAPWlSSMCvnF810AkhWpNLkJpl66CRfIy3vVl20Sl4NwChkorCHqpMtNbXr1EuMJsrDnhEpjZxKZ2UX3A==}
|
||||
|
||||
'@codemirror/language@6.11.1':
|
||||
resolution: {integrity: sha512-5kS1U7emOGV84vxC+ruBty5sUgcD0te6dyupyRVG2zaSjhTDM73LhVKUtVwiqSe6QwmEoA4SCiU8AKPFyumAWQ==}
|
||||
|
||||
'@codemirror/lint@6.8.5':
|
||||
resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==}
|
||||
|
||||
'@codemirror/search@6.5.11':
|
||||
resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==}
|
||||
|
||||
'@codemirror/state@6.5.2':
|
||||
resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==}
|
||||
|
||||
'@codemirror/view@6.37.2':
|
||||
resolution: {integrity: sha512-XD3LdgQpxQs5jhOOZ2HRVT+Rj59O4Suc7g2ULvZ+Yi8eCkickrkZ5JFuoDhs2ST1mNI5zSsNYgR3NGa4OUrbnw==}
|
||||
|
||||
'@esbuild/aix-ppc64@0.25.1':
|
||||
resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==}
|
||||
engines: {node: '>=18'}
|
||||
@ -293,6 +335,36 @@ packages:
|
||||
'@jridgewell/trace-mapping@0.3.25':
|
||||
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
|
||||
|
||||
'@kevisual/codemirror@0.0.12':
|
||||
resolution: {integrity: sha512-W0m9WbP0p6Z/w/xlQGb5ek7QEqg66CEIr1AJRsCkh+24NcWKEV5x0WhusXtJFC0oxGlGmPIz9rKUttc9In6ZeA==}
|
||||
|
||||
'@lezer/common@1.2.3':
|
||||
resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==}
|
||||
|
||||
'@lezer/css@1.2.1':
|
||||
resolution: {integrity: sha512-2F5tOqzKEKbCUNraIXc0f6HKeyKlmMWJnBB0i4XW6dJgssrZO/YlZ2pY5xgyqDleqqhiNJ3dQhbrV2aClZQMvg==}
|
||||
|
||||
'@lezer/highlight@1.2.1':
|
||||
resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==}
|
||||
|
||||
'@lezer/html@1.3.10':
|
||||
resolution: {integrity: sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==}
|
||||
|
||||
'@lezer/javascript@1.5.1':
|
||||
resolution: {integrity: sha512-ATOImjeVJuvgm3JQ/bpo2Tmv55HSScE2MTPnKRMRIPx2cLhHGyX2VnqpHhtIV1tVzIjZDbcWQm+NCTF40ggZVw==}
|
||||
|
||||
'@lezer/json@1.0.3':
|
||||
resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==}
|
||||
|
||||
'@lezer/lr@1.4.2':
|
||||
resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==}
|
||||
|
||||
'@lezer/markdown@1.4.3':
|
||||
resolution: {integrity: sha512-kfw+2uMrQ/wy/+ONfrH83OkdFNM0ye5Xq96cLlaCy7h5UT9FO54DU4oRoIc0CSBh5NWmWuiIJA7NGLMJbQ+Oxg==}
|
||||
|
||||
'@marijn/find-cluster-break@1.0.2':
|
||||
resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==}
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.37.0':
|
||||
resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==}
|
||||
cpu: [arm]
|
||||
@ -512,9 +584,15 @@ packages:
|
||||
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
codemirror@6.0.2:
|
||||
resolution: {integrity: sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==}
|
||||
|
||||
convert-source-map@2.0.0:
|
||||
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
|
||||
|
||||
crelt@1.0.6:
|
||||
resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
|
||||
|
||||
csstype@3.1.3:
|
||||
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
|
||||
|
||||
@ -547,6 +625,9 @@ packages:
|
||||
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
eventemitter3@5.0.1:
|
||||
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
|
||||
|
||||
fsevents@2.3.3:
|
||||
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||
@ -670,6 +751,11 @@ packages:
|
||||
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
|
||||
prettier@3.6.0:
|
||||
resolution: {integrity: sha512-ujSB9uXHJKzM/2GBuE0hBOUgC77CN3Bnpqa+g80bkv3T3A93wL/xlzDATHhnhkzifz/UE2SNOvmbTz5hSkDlHw==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
|
||||
react-dom@19.0.0:
|
||||
resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
|
||||
peerDependencies:
|
||||
@ -679,6 +765,12 @@ packages:
|
||||
resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
react-toastify@11.0.5:
|
||||
resolution: {integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==}
|
||||
peerDependencies:
|
||||
react: ^18 || ^19
|
||||
react-dom: ^18 || ^19
|
||||
|
||||
react@19.0.0:
|
||||
resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@ -699,6 +791,9 @@ packages:
|
||||
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
style-mod@4.1.2:
|
||||
resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
|
||||
|
||||
tailwindcss@4.0.15:
|
||||
resolution: {integrity: sha512-6ZMg+hHdMJpjpeCCFasX7K+U615U9D+7k5/cDK/iRwl6GptF24+I/AbKgOnXhVKePzrEyIXutLv36n4cRsq3Sg==}
|
||||
|
||||
@ -752,6 +847,9 @@ packages:
|
||||
yaml:
|
||||
optional: true
|
||||
|
||||
w3c-keyname@2.2.8:
|
||||
resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
|
||||
|
||||
yallist@3.1.1:
|
||||
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
|
||||
|
||||
@ -872,6 +970,97 @@ snapshots:
|
||||
'@babel/helper-string-parser': 7.25.9
|
||||
'@babel/helper-validator-identifier': 7.25.9
|
||||
|
||||
'@codemirror/autocomplete@6.18.6':
|
||||
dependencies:
|
||||
'@codemirror/language': 6.11.1
|
||||
'@codemirror/state': 6.5.2
|
||||
'@codemirror/view': 6.37.2
|
||||
'@lezer/common': 1.2.3
|
||||
|
||||
'@codemirror/commands@6.8.1':
|
||||
dependencies:
|
||||
'@codemirror/language': 6.11.1
|
||||
'@codemirror/state': 6.5.2
|
||||
'@codemirror/view': 6.37.2
|
||||
'@lezer/common': 1.2.3
|
||||
|
||||
'@codemirror/lang-css@6.3.1':
|
||||
dependencies:
|
||||
'@codemirror/autocomplete': 6.18.6
|
||||
'@codemirror/language': 6.11.1
|
||||
'@codemirror/state': 6.5.2
|
||||
'@lezer/common': 1.2.3
|
||||
'@lezer/css': 1.2.1
|
||||
|
||||
'@codemirror/lang-html@6.4.9':
|
||||
dependencies:
|
||||
'@codemirror/autocomplete': 6.18.6
|
||||
'@codemirror/lang-css': 6.3.1
|
||||
'@codemirror/lang-javascript': 6.2.4
|
||||
'@codemirror/language': 6.11.1
|
||||
'@codemirror/state': 6.5.2
|
||||
'@codemirror/view': 6.37.2
|
||||
'@lezer/common': 1.2.3
|
||||
'@lezer/css': 1.2.1
|
||||
'@lezer/html': 1.3.10
|
||||
|
||||
'@codemirror/lang-javascript@6.2.4':
|
||||
dependencies:
|
||||
'@codemirror/autocomplete': 6.18.6
|
||||
'@codemirror/language': 6.11.1
|
||||
'@codemirror/lint': 6.8.5
|
||||
'@codemirror/state': 6.5.2
|
||||
'@codemirror/view': 6.37.2
|
||||
'@lezer/common': 1.2.3
|
||||
'@lezer/javascript': 1.5.1
|
||||
|
||||
'@codemirror/lang-json@6.0.2':
|
||||
dependencies:
|
||||
'@codemirror/language': 6.11.1
|
||||
'@lezer/json': 1.0.3
|
||||
|
||||
'@codemirror/lang-markdown@6.3.3':
|
||||
dependencies:
|
||||
'@codemirror/autocomplete': 6.18.6
|
||||
'@codemirror/lang-html': 6.4.9
|
||||
'@codemirror/language': 6.11.1
|
||||
'@codemirror/state': 6.5.2
|
||||
'@codemirror/view': 6.37.2
|
||||
'@lezer/common': 1.2.3
|
||||
'@lezer/markdown': 1.4.3
|
||||
|
||||
'@codemirror/language@6.11.1':
|
||||
dependencies:
|
||||
'@codemirror/state': 6.5.2
|
||||
'@codemirror/view': 6.37.2
|
||||
'@lezer/common': 1.2.3
|
||||
'@lezer/highlight': 1.2.1
|
||||
'@lezer/lr': 1.4.2
|
||||
style-mod: 4.1.2
|
||||
|
||||
'@codemirror/lint@6.8.5':
|
||||
dependencies:
|
||||
'@codemirror/state': 6.5.2
|
||||
'@codemirror/view': 6.37.2
|
||||
crelt: 1.0.6
|
||||
|
||||
'@codemirror/search@6.5.11':
|
||||
dependencies:
|
||||
'@codemirror/state': 6.5.2
|
||||
'@codemirror/view': 6.37.2
|
||||
crelt: 1.0.6
|
||||
|
||||
'@codemirror/state@6.5.2':
|
||||
dependencies:
|
||||
'@marijn/find-cluster-break': 1.0.2
|
||||
|
||||
'@codemirror/view@6.37.2':
|
||||
dependencies:
|
||||
'@codemirror/state': 6.5.2
|
||||
crelt: 1.0.6
|
||||
style-mod: 4.1.2
|
||||
w3c-keyname: 2.2.8
|
||||
|
||||
'@esbuild/aix-ppc64@0.25.1':
|
||||
optional: true
|
||||
|
||||
@ -964,6 +1153,62 @@ snapshots:
|
||||
'@jridgewell/resolve-uri': 3.1.2
|
||||
'@jridgewell/sourcemap-codec': 1.5.0
|
||||
|
||||
'@kevisual/codemirror@0.0.12':
|
||||
dependencies:
|
||||
'@codemirror/autocomplete': 6.18.6
|
||||
'@codemirror/commands': 6.8.1
|
||||
'@codemirror/lang-css': 6.3.1
|
||||
'@codemirror/lang-html': 6.4.9
|
||||
'@codemirror/lang-javascript': 6.2.4
|
||||
'@codemirror/lang-json': 6.0.2
|
||||
'@codemirror/lang-markdown': 6.3.3
|
||||
'@codemirror/state': 6.5.2
|
||||
'@codemirror/view': 6.37.2
|
||||
codemirror: 6.0.2
|
||||
eventemitter3: 5.0.1
|
||||
prettier: 3.6.0
|
||||
|
||||
'@lezer/common@1.2.3': {}
|
||||
|
||||
'@lezer/css@1.2.1':
|
||||
dependencies:
|
||||
'@lezer/common': 1.2.3
|
||||
'@lezer/highlight': 1.2.1
|
||||
'@lezer/lr': 1.4.2
|
||||
|
||||
'@lezer/highlight@1.2.1':
|
||||
dependencies:
|
||||
'@lezer/common': 1.2.3
|
||||
|
||||
'@lezer/html@1.3.10':
|
||||
dependencies:
|
||||
'@lezer/common': 1.2.3
|
||||
'@lezer/highlight': 1.2.1
|
||||
'@lezer/lr': 1.4.2
|
||||
|
||||
'@lezer/javascript@1.5.1':
|
||||
dependencies:
|
||||
'@lezer/common': 1.2.3
|
||||
'@lezer/highlight': 1.2.1
|
||||
'@lezer/lr': 1.4.2
|
||||
|
||||
'@lezer/json@1.0.3':
|
||||
dependencies:
|
||||
'@lezer/common': 1.2.3
|
||||
'@lezer/highlight': 1.2.1
|
||||
'@lezer/lr': 1.4.2
|
||||
|
||||
'@lezer/lr@1.4.2':
|
||||
dependencies:
|
||||
'@lezer/common': 1.2.3
|
||||
|
||||
'@lezer/markdown@1.4.3':
|
||||
dependencies:
|
||||
'@lezer/common': 1.2.3
|
||||
'@lezer/highlight': 1.2.1
|
||||
|
||||
'@marijn/find-cluster-break@1.0.2': {}
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.37.0':
|
||||
optional: true
|
||||
|
||||
@ -1138,8 +1383,20 @@ snapshots:
|
||||
|
||||
clsx@2.1.1: {}
|
||||
|
||||
codemirror@6.0.2:
|
||||
dependencies:
|
||||
'@codemirror/autocomplete': 6.18.6
|
||||
'@codemirror/commands': 6.8.1
|
||||
'@codemirror/language': 6.11.1
|
||||
'@codemirror/lint': 6.8.5
|
||||
'@codemirror/search': 6.5.11
|
||||
'@codemirror/state': 6.5.2
|
||||
'@codemirror/view': 6.37.2
|
||||
|
||||
convert-source-map@2.0.0: {}
|
||||
|
||||
crelt@1.0.6: {}
|
||||
|
||||
csstype@3.1.3: {}
|
||||
|
||||
debug@4.4.0:
|
||||
@ -1185,6 +1442,8 @@ snapshots:
|
||||
|
||||
escalade@3.2.0: {}
|
||||
|
||||
eventemitter3@5.0.1: {}
|
||||
|
||||
fsevents@2.3.3:
|
||||
optional: true
|
||||
|
||||
@ -1269,6 +1528,8 @@ snapshots:
|
||||
picocolors: 1.1.1
|
||||
source-map-js: 1.2.1
|
||||
|
||||
prettier@3.6.0: {}
|
||||
|
||||
react-dom@19.0.0(react@19.0.0):
|
||||
dependencies:
|
||||
react: 19.0.0
|
||||
@ -1276,6 +1537,12 @@ snapshots:
|
||||
|
||||
react-refresh@0.14.2: {}
|
||||
|
||||
react-toastify@11.0.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
|
||||
dependencies:
|
||||
clsx: 2.1.1
|
||||
react: 19.0.0
|
||||
react-dom: 19.0.0(react@19.0.0)
|
||||
|
||||
react@19.0.0: {}
|
||||
|
||||
rollup@4.37.0:
|
||||
@ -1310,6 +1577,8 @@ snapshots:
|
||||
|
||||
source-map-js@1.2.1: {}
|
||||
|
||||
style-mod@4.1.2: {}
|
||||
|
||||
tailwindcss@4.0.15: {}
|
||||
|
||||
tapable@2.2.1: {}
|
||||
@ -1330,4 +1599,6 @@ snapshots:
|
||||
jiti: 2.4.2
|
||||
lightningcss: 1.29.2
|
||||
|
||||
w3c-keyname@2.2.8: {}
|
||||
|
||||
yallist@3.1.1: {}
|
||||
|
2
pnpm-workspace.yaml
Normal file
2
pnpm-workspace.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
onlyBuiltDependencies:
|
||||
- esbuild
|
110
src/App.tsx
110
src/App.tsx
@ -1,34 +1,43 @@
|
||||
import { Github, Mail, Phone, MapPin, ChevronDown, ExternalLink, Shield, Book, Globe, Brain } from 'lucide-react';
|
||||
|
||||
export const App = () => {
|
||||
import { Mail, Phone, MapPin, Book, Globe, Brain, Save } from 'lucide-react';
|
||||
import { chain, TextEditor } from './components/TextEditor';
|
||||
// import { ToastContainer } from 'react-toastify';
|
||||
// @ts-ignore
|
||||
import Logo from './assets/logo-1.png';
|
||||
export const Main = () => {
|
||||
return (
|
||||
<div className='min-h-screen bg-gray-50'>
|
||||
{/* Hero Section */}
|
||||
<header className='bg-gradient-to-r from-blue-600 to-indigo-700 text-white'>
|
||||
<nav className='container mx-auto px-6 py-4 flex justify-between items-center'>
|
||||
<header className=''>
|
||||
<nav className='px-4 mx-auto h-16 flex justify-between items-center bg-white border-b border-b-gray-200 w-full'>
|
||||
<div className='flex items-center space-x-4'>
|
||||
<img src='https://kevisual.cn/root/center/panda.jpg' alt='Kevisual Logo' className='h-10 w-10 object-contain' />
|
||||
<span className='text-xl font-bold'>Kevisual 助手</span>
|
||||
<img src={Logo} alt='可视化助手 Logo' className='h-10 w-20 ' />
|
||||
</div>
|
||||
<div className='hidden md:flex space-x-6'>
|
||||
<a href='#features' className='hover:text-gray-200'>
|
||||
<a href='#features' className='hover:text-gray-400'>
|
||||
功能
|
||||
</a>
|
||||
<a href='#about' className='hover:text-gray-200'>
|
||||
关于我们
|
||||
</a>
|
||||
<a href='#contact' className='hover:text-gray-200'>
|
||||
<a href='#contact' className='hover:text-gray-400'>
|
||||
联系方式
|
||||
</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div className='container mx-auto px-6 py-24 text-center'>
|
||||
<h1 className='text-4xl md:text-6xl font-bold mb-6'>加速你的工作,生活,学习</h1>
|
||||
<p className='text-xl md:text-2xl mb-8 opacity-90'>专业的网页助手,让您的在线体验更轻松、更高效</p>
|
||||
<ChevronDown className='w-8 h-8 mx-auto animate-bounce' />
|
||||
</div>
|
||||
</header>
|
||||
<main
|
||||
className='flex flex-col overflow-hidden'
|
||||
style={{
|
||||
height: 'calc(100vh - 64px)',
|
||||
}}>
|
||||
<nav className='h-12 bg-white'>
|
||||
<button className='flex items-center px-4 h-full bg-white border-b border-b-gray-200 hover:bg-gray-50 cursor-pointer' onClick={() => {}}>
|
||||
<span className='text-gray-700'>创建</span>
|
||||
<Save className='ml-2 w-4 h-4 text-gray-500' />
|
||||
</button>
|
||||
</nav>
|
||||
<div className='p-2 rounded shadow' style={{ height: 'calc(100% - 48px - 48px)' }}>
|
||||
<TextEditor content='' chain={chain} />
|
||||
</div>
|
||||
<footer className='h-12'></footer>
|
||||
</main>
|
||||
|
||||
{/* Features Section */}
|
||||
<section id='features' className='py-20 bg-white'>
|
||||
@ -44,44 +53,14 @@ export const App = () => {
|
||||
|
||||
<div className='p-6 rounded-lg shadow-lg bg-white'>
|
||||
<Brain className='w-12 h-12 text-blue-600 mb-4' />
|
||||
<h3 className='text-xl font-semibold mb-4'>AI 推荐(Dev)</h3>
|
||||
<p className='text-gray-600'>智能工具库助您快速找到解决方案,汇集优质开源项目</p>
|
||||
<h3 className='text-xl font-semibold mb-4'>应用共享</h3>
|
||||
<p className='text-gray-600'>根据用户需求,某一些应用只能自己访问或者共享</p>
|
||||
</div>
|
||||
|
||||
<div className='p-6 rounded-lg shadow-lg bg-white'>
|
||||
<Book className='w-12 h-12 text-blue-600 mb-4' />
|
||||
<h3 className='text-xl font-semibold mb-4'>笔记助手(Dev)</h3>
|
||||
<p className='text-gray-600'>AI驱动的笔记工具,帮助您创造性地生成美观的内容并进行可视化</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* About Section */}
|
||||
<section id='about' className='py-20 bg-gray-50'>
|
||||
<div className='container mx-auto px-6'>
|
||||
<h2 className='text-3xl font-bold text-center mb-16'>关于我们</h2>
|
||||
<div className='max-w-3xl mx-auto text-center'>
|
||||
<p className='text-gray-600 mb-8'>我们是一个独立开发团队,致力于提供高质量的软件产品。我们的使命是通过创新技术,让用户的工作和生活更加便捷。</p>
|
||||
<div className='grid md:grid-cols-2 gap-8'>
|
||||
<div>
|
||||
<h3 className='text-xl font-semibold mb-4'>我们的使命</h3>
|
||||
<ul className='text-left text-gray-600 space-y-2'>
|
||||
<li>✓ 提供高质量的软件产品</li>
|
||||
<li>✓ 不断创新,满足用户需求</li>
|
||||
<li>✓ 提供优质的售后服务</li>
|
||||
<li>✓ 保护用户隐私</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h3 className='text-xl font-semibold mb-4'>我们的愿景</h3>
|
||||
<ul className='text-left text-gray-600 space-y-2'>
|
||||
<li>✓ 创立更简单,方便的网页助手</li>
|
||||
<li>✓ 成为用户信赖的软件品牌</li>
|
||||
<li>✓ 持续创新发展</li>
|
||||
<li>✓ 提供卓越的用户体验</li>
|
||||
</ul>
|
||||
</div>
|
||||
<h3 className='text-xl font-semibold mb-4'>临时网页</h3>
|
||||
<p className='text-gray-600'>当个网页助手,帮助您快速生成临时网页</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -91,11 +70,11 @@ export const App = () => {
|
||||
<section id='contact' className='py-20 bg-white'>
|
||||
<div className='container mx-auto px-6'>
|
||||
<h2 className='text-3xl font-bold text-center mb-16'>联系我们</h2>
|
||||
<div className='max-w-2xl mx-auto'>
|
||||
<div className='max-w-2xl mx-auto w-[200px]'>
|
||||
<div className='space-y-6'>
|
||||
<div className='flex items-center space-x-4'>
|
||||
<Mail className='w-6 h-6 text-blue-600' />
|
||||
<span>envision@kevisual.cn</span>
|
||||
<span>kevisual@kevisual.cn</span>
|
||||
</div>
|
||||
<div className='flex items-center space-x-4'>
|
||||
<Phone className='w-6 h-6 text-blue-600' />
|
||||
@ -103,7 +82,7 @@ export const App = () => {
|
||||
</div>
|
||||
<div className='flex items-center space-x-4'>
|
||||
<MapPin className='w-6 h-6 text-blue-600' />
|
||||
<span>浙江省杭州市余杭区闲林街道天日山西路230号A区3楼2954室</span>
|
||||
<span>浙江省杭州市</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -126,11 +105,6 @@ export const App = () => {
|
||||
功能
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href='#about' className='hover:text-white'>
|
||||
关于我们
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href='#contact' className='hover:text-white'>
|
||||
联系方式
|
||||
@ -142,12 +116,12 @@ export const App = () => {
|
||||
<h3 className='text-lg font-semibold mb-4'>法律信息</h3>
|
||||
<ul className='space-y-2 text-gray-400'>
|
||||
<li>
|
||||
<a href='/privacy' className='hover:text-white'>
|
||||
<a href='./privacy' className='hover:text-white'>
|
||||
隐私政策
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href='/terms' className='hover:text-white'>
|
||||
<a href='./terms' className='hover:text-white'>
|
||||
用户协议
|
||||
</a>
|
||||
</li>
|
||||
@ -159,9 +133,6 @@ export const App = () => {
|
||||
<a href='mailto:feedback@kevisual.cn' className='text-gray-400 hover:text-white'>
|
||||
<Mail className='w-6 h-6' />
|
||||
</a>
|
||||
<a href='https://github.com/' className='text-gray-400 hover:text-white'>
|
||||
<Github className='w-6 h-6' />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -179,4 +150,11 @@ export const App = () => {
|
||||
);
|
||||
};
|
||||
|
||||
export default App;
|
||||
export const App = () => {
|
||||
return (
|
||||
<>
|
||||
{/* <ToastContainer></ToastContainer> */}
|
||||
<App />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
BIN
src/assets/logo-1.png
Normal file
BIN
src/assets/logo-1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 230 KiB |
7
src/components/Icon.tsx
Normal file
7
src/components/Icon.tsx
Normal file
@ -0,0 +1,7 @@
|
||||
export const Github = () => {
|
||||
return (
|
||||
<svg aria-hidden='true' height='24' viewBox='0 0 24 24' version='1.1' width='24' data-view-component='true' className='octicon octicon-mark-github'>
|
||||
<path d='M12 1C5.923 1 1 5.923 1 12c0 4.867 3.149 8.979 7.521 10.436.55.096.756-.233.756-.522 0-.262-.013-1.128-.013-2.049-2.764.509-3.479-.674-3.699-1.292-.124-.317-.66-1.293-1.127-1.554-.385-.207-.936-.715-.014-.729.866-.014 1.485.797 1.691 1.128.99 1.663 2.571 1.196 3.204.907.096-.715.385-1.196.701-1.471-2.448-.275-5.005-1.224-5.005-5.432 0-1.196.426-2.186 1.128-2.956-.111-.275-.496-1.402.11-2.915 0 0 .921-.288 3.024 1.128a10.193 10.193 0 0 1 2.75-.371c.936 0 1.871.123 2.75.371 2.104-1.43 3.025-1.128 3.025-1.128.605 1.513.221 2.64.111 2.915.701.77 1.127 1.747 1.127 2.956 0 4.222-2.571 5.157-5.019 5.432.399.344.743 1.004.743 2.035 0 1.471-.014 2.654-.014 3.025 0 .289.206.632.756.522C19.851 20.979 23 16.854 23 12c0-6.077-4.922-11-11-11Z'></path>
|
||||
</svg>
|
||||
);
|
||||
};
|
39
src/components/TextEditor.tsx
Normal file
39
src/components/TextEditor.tsx
Normal file
@ -0,0 +1,39 @@
|
||||
import { createEditor } from '@kevisual/codemirror';
|
||||
import { Chain } from '@kevisual/codemirror/utils';
|
||||
import { useEffect, useRef } from 'react';
|
||||
|
||||
export const chain = new Chain();
|
||||
type TextEditorProps = {
|
||||
content: string;
|
||||
chain?: Chain;
|
||||
};
|
||||
export const TextEditor = ({ content, chain }: TextEditorProps) => {
|
||||
const editorElRef = useRef<HTMLDivElement>(null);
|
||||
const editorRef = useRef<ReturnType<typeof createEditor>>(null);
|
||||
useEffect(() => {
|
||||
initEditor();
|
||||
return () => {
|
||||
if (editorRef.current) {
|
||||
chain?.destroy?.();
|
||||
}
|
||||
};
|
||||
}, []);
|
||||
useEffect(() => {
|
||||
if (editorRef.current) {
|
||||
chain?.setContent?.(content);
|
||||
}
|
||||
}, [content]);
|
||||
const initEditor = async () => {
|
||||
if (!editorElRef.current) return;
|
||||
const editor = createEditor(editorElRef.current, {
|
||||
type: 'html',
|
||||
});
|
||||
const cmScroller = editorElRef.current.querySelector('.cm-scroller');
|
||||
if (cmScroller) {
|
||||
cmScroller.classList.add('scrollbar');
|
||||
}
|
||||
chain?.setEditor?.(editor);
|
||||
editorRef.current = editor;
|
||||
};
|
||||
return <div className='h-full overflow-hidden' ref={editorElRef}></div>;
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user