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}

{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: ( - Large Language Model - ), - }, - { - name: "Data Visualization", - description: "Chart and 3D models.", - href: "/project/data-visualization", - background: ( - Large Language Model - ), - }, - { - name: "Hybrid Mobile App", - description: "QQ Music / We Sing Living Room.", - href: "/project/tme", - background: ( - Large Language Model - ), - }, -]; - -const OpenSourceProjects = [ - { - name: "Comments", - description: "Add comments to your website.", - href: "/project/comments", - background: ( - Large Language Model - ), - }, - { - name: "daviddong.me", - description: "Personal website template.", - href: "/", - background: ( - Large Language Model - ), - }, -]; +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); +}