diff --git a/src/components/ui/bento-grid.jsx b/src/components/ui/bento-grid.jsx
index 480ce54..f189812 100644
--- a/src/components/ui/bento-grid.jsx
+++ b/src/components/ui/bento-grid.jsx
@@ -25,7 +25,11 @@ const BentoCard = ({ name, className, background, description, href }) => {
className,
)}
>
-
{background}
+
{name}
diff --git a/src/config/project.js b/src/config/project.js
new file mode 100644
index 0000000..6bc1bb2
--- /dev/null
+++ b/src/config/project.js
@@ -0,0 +1,37 @@
+const Works = [
+ {
+ name: "Large Language Model",
+ description: "Medical field chat application.",
+ href: "/project/llm",
+ background: "/1.png",
+ },
+ {
+ name: "Data Visualization",
+ description: "Chart and 3D models.",
+ href: "/project/data-visualization",
+ background: "/1.png",
+ },
+ {
+ name: "Hybrid Mobile App",
+ description: "QQ Music / We Sing Living Room.",
+ href: "/project/tme",
+ background: "/1.png",
+ },
+];
+
+const OpenSourceProjects = [
+ {
+ name: "Comments",
+ description: "Add comments to your website.",
+ href: "/project/comments",
+ background: "/1.png",
+ },
+ {
+ name: "daviddong.me",
+ description: "Personal website template.",
+ href: "/project/website",
+ background: "/1.png",
+ },
+];
+
+export { Works, OpenSourceProjects };
diff --git a/src/pages/+Layout.jsx b/src/pages/+Layout.jsx
index e1282cf..36daebb 100644
--- a/src/pages/+Layout.jsx
+++ b/src/pages/+Layout.jsx
@@ -11,7 +11,7 @@ import { navigate } from "vike/client/router";
export default function LayoutDefault({ children }) {
return (
-
{children}
+
{children}
{
diff --git a/src/pages/index/+Page.jsx b/src/pages/index/+Page.jsx
index 105c5cf..e6565ba 100644
--- a/src/pages/index/+Page.jsx
+++ b/src/pages/index/+Page.jsx
@@ -1,70 +1,16 @@
import { BentoCard, BentoGrid } from "@/components/ui/bento-grid";
import { Tag } from "@/components/ui/tag";
-const Works = [
- {
- name: "Large Language Model",
- description: "Medical field chat application.",
- href: "/project/llm",
- background: (
-
- ),
- },
- {
- name: "Data Visualization",
- description: "Chart and 3D models.",
- href: "/project/data-visualization",
- background: (
-
- ),
- },
- {
- name: "Hybrid Mobile App",
- description: "QQ Music / We Sing Living Room.",
- href: "/project/tme",
- background: (
-
- ),
- },
-];
-
-const OpenSourceProjects = [
- {
- name: "Comments",
- description: "Add comments to your website.",
- href: "/project/comments",
- background: (
-
- ),
- },
- {
- name: "daviddong.me",
- description: "Personal website template.",
- href: "/",
- background: (
-
- ),
- },
-];
+import { OpenSourceProjects, Works } from "@/config/project";
+const ProjectLists = ({ title, items }) => (
+
+ {title}
+
+ {items.map((feature) => (
+
+ ))}
+
+
+);
export default function Page() {
return (
@@ -95,25 +41,8 @@ export default function Page() {
free to contact me!
-
- {/* Works */}
-
- Works
-
- {Works.map((feature) => (
-
- ))}
-
-
- {/* Open Source Project */}
-
- Open Source Projects
-
- {OpenSourceProjects.map((feature) => (
-
- ))}
-
-
+
+
);
}
diff --git a/src/pages/project/+Page.jsx b/src/pages/project/+Page.jsx
deleted file mode 100644
index fe832ec..0000000
--- a/src/pages/project/+Page.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import { useState } from "react";
-export default function Page() {
- const [counter, setCounter] = useState(0);
- return (
-
- {counter}
-
-
- );
-}
diff --git a/src/pages/project/@name/+Page.jsx b/src/pages/project/@name/+Page.jsx
new file mode 100644
index 0000000..d5fd004
--- /dev/null
+++ b/src/pages/project/@name/+Page.jsx
@@ -0,0 +1,9 @@
+import { usePageContext } from "vike-react/usePageContext";
+export default function Page() {
+ const pageContext = usePageContext();
+ return (
+
+
Hello {pageContext.routeParams.name}
+
+ );
+}
diff --git a/src/pages/project/index/+Page.jsx b/src/pages/project/index/+Page.jsx
new file mode 100644
index 0000000..977219a
--- /dev/null
+++ b/src/pages/project/index/+Page.jsx
@@ -0,0 +1,32 @@
+import { Button } from "@/components/ui/button";
+import { OpenSourceProjects, Works } from "@/config/project";
+import React from "react";
+import { navigate } from "vike/client/router";
+
+const ProjectLists = ({ title, items }) => (
+
+ {title}
+
+ {items.map(({ name, href }) => (
+ -
+
+
+ ))}
+
+
+);
+
+export default function Page() {
+ return (
+
+
+
+
+ );
+}
diff --git a/src/pages/project/index/+onBeforePrerenderStart.js b/src/pages/project/index/+onBeforePrerenderStart.js
new file mode 100644
index 0000000..c43d104
--- /dev/null
+++ b/src/pages/project/index/+onBeforePrerenderStart.js
@@ -0,0 +1,7 @@
+// Environment: Node.js
+import { OpenSourceProjects, Works } from "@/config/project";
+export { onBeforePrerenderStart };
+async function onBeforePrerenderStart() {
+ const lists = [...OpenSourceProjects, ...Works];
+ return lists.map((list) => list.href);
+}