diff --git a/public/arrow.svg b/public/arrow.svg
new file mode 100644
index 0000000..3cc2dc2
--- /dev/null
+++ b/public/arrow.svg
@@ -0,0 +1,25 @@
+
+
\ No newline at end of file
diff --git a/public/images/home.png b/public/images/home.png
new file mode 100644
index 0000000..60a4dea
Binary files /dev/null and b/public/images/home.png differ
diff --git a/public/images/step-1.png b/public/images/step-1.png
new file mode 100644
index 0000000..bf909df
Binary files /dev/null and b/public/images/step-1.png differ
diff --git a/public/images/step-2.png b/public/images/step-2.png
new file mode 100644
index 0000000..16bcf4e
Binary files /dev/null and b/public/images/step-2.png differ
diff --git a/public/images/step-3.png b/public/images/step-3.png
new file mode 100644
index 0000000..77248f6
Binary files /dev/null and b/public/images/step-3.png differ
diff --git a/public/preact.svg b/public/preact.svg
new file mode 100644
index 0000000..2227c94
--- /dev/null
+++ b/public/preact.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/app/page.tsx b/src/app/page.tsx
index aefeab9..e12ec29 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -3,50 +3,62 @@ import Head from 'next/head';
import Link from 'next/link';
import { FaGithub } from 'react-icons/fa';
import { RiTwitterXFill, RiRocketLine } from 'react-icons/ri';
-import { PiAcorn } from 'react-icons/pi';
import { Header } from '@/components/home/header';
import { HoverEffect } from '@/components/home/card-hover-effect';
import { ContainerScroll } from '@/components/home/container-scroll-animation';
import { BackgroundBeams } from '@/components/home/background-beams';
import { Footer } from '@/components/home/footer';
+import { UseSteps } from '@/components/home/useSteps';
import { PROJECT_Name, PATHS } from '@/utils';
const projects = [
{
- icon: ,
- title: 'title1',
- description: 'desc1!',
+ icon: '/react.svg',
+ title: 'React',
+ description: 'JavaScript',
link: '/a',
},
{
- icon: ,
- title: 'title2',
- description: 'desc2',
+ icon: '/react.svg',
+ title: 'React',
+ description: 'TypeScript',
link: '/b',
},
{
- icon: ,
- title: 'title3',
- description: 'desc3',
+ icon: '/vue.svg',
+ title: 'Vue',
+ description: 'JavaScript',
link: '/c',
},
{
- icon: ,
- title: 'title4',
- description: 'desc4',
+ icon: '/vue.svg',
+ title: 'Vue',
+ description: 'TypeScript',
link: '/d',
},
{
- icon: ,
- title: 'title5',
- description: 'desc5',
+ icon: '/preact.svg',
+ title: 'Preact',
+ description: 'JavaScript',
link: '/e',
},
{
- icon: ,
- title: 'title6',
- description: 'desc6',
+ icon: '/preact.svg',
+ title: 'Preact',
+ description: 'TypeScript',
+ link: '/f',
+ },
+ {
+ icon: '/node.svg',
+ title: 'Vanilla',
+ description: 'JavaScript',
+ link: '/f',
+ },
+ {
+ icon: '/node.svg',
+ title: 'Vanilla',
+ description: 'TypeScript',
link: '/f',
},
];
@@ -64,11 +76,11 @@ const socialIcons = [
const router = [
{
- title: 'page1',
+ title: 'Docs',
link: '/a',
},
{
- title: 'page2',
+ title: 'Blog',
link: '/b',
},
];
@@ -112,7 +124,7 @@ const Home: NextPage = () => {
'0 2px 15px -3px var(--next-devtools-widget-shadow), 0 4px 6px -4px var(--next-devtools-widget-shadow)',
}}
>
-
+
}
titleComponent={
@@ -131,13 +143,21 @@ const Home: NextPage = () => {
+
+ Boot a shareable environment in milliseconds
+
-
+
-
+
>
);
diff --git a/src/components/home/card-hover-effect/index.tsx b/src/components/home/card-hover-effect/index.tsx
index 1dc271e..779c1f4 100644
--- a/src/components/home/card-hover-effect/index.tsx
+++ b/src/components/home/card-hover-effect/index.tsx
@@ -16,7 +16,7 @@ export function Card({ className, children }: { className?: string; children: Re
)}
>
-
{children}
+
{children}
);
@@ -29,9 +29,7 @@ export function CardTitle({
className?: string;
children: React.ReactNode;
}) {
- return (
- {children}
- );
+ return {children}
;
}
export function CardDescription({
@@ -55,7 +53,7 @@ export function HoverEffect({
items: {
title: ReactNode;
description: ReactNode;
- icon: ReactNode;
+ icon: string;
link: string;
}[];
className?: string;
@@ -63,7 +61,7 @@ export function HoverEffect({
const [hoveredIndex, setHoveredIndex] = useState(null);
return (
-
+
{items.map((item, idx) => (
-
- {item.icon}
- {item.title}
-
- {item.description}
+
+
+ {item.title}
+ {item.description}
+
))}
diff --git a/src/components/home/footer/index.tsx b/src/components/home/footer/index.tsx
index 56ee2b4..8f6b977 100644
--- a/src/components/home/footer/index.tsx
+++ b/src/components/home/footer/index.tsx
@@ -1,13 +1,152 @@
import React from 'react';
import Link from 'next/link';
+interface Icon {
+ icon: React.ReactNode;
+ link: string;
+}
+interface LinkProps {
+ name: string;
+ link: string;
+}
+interface FooterProps {
+ icons: Icon[];
+}
-export const Footer: React.FC = () => {
+const Product: LinkProps[] = [
+ {
+ name: 'Features',
+ link: '/',
+ },
+ {
+ name: 'Pricing',
+ link: '/',
+ },
+ {
+ name: 'Documentation',
+ link: '/',
+ },
+ {
+ name: 'Changelog',
+ link: '/',
+ },
+];
+const Resources: LinkProps[] = [
+ {
+ name: 'Blog',
+ link: '/',
+ },
+ {
+ name: 'Tutorials',
+ link: '/',
+ },
+ {
+ name: 'Community',
+ link: '/',
+ },
+ {
+ name: 'FAQ',
+ link: '/',
+ },
+];
+const About: LinkProps[] = [
+ {
+ name: 'Company',
+ link: '/',
+ },
+ {
+ name: 'Team',
+ link: '/',
+ },
+ {
+ name: 'Careers',
+ link: '/',
+ },
+ {
+ name: 'Contact Us',
+ link: '/',
+ },
+];
+const Partners: LinkProps[] = [
+ {
+ name: 'GitHub',
+ link: '/',
+ },
+ {
+ name: 'Stack Overflow',
+ link: '/',
+ },
+ {
+ name: 'Careers',
+ link: '/',
+ },
+ {
+ name: 'VS Code',
+ link: '/',
+ },
+];
+// 渲染链接
+const renderLink = (products: LinkProps[]) =>
+ products.map((item) => (
+
+ {item.name}
+
+ ));
+
+const renderIcon = (icons: Icon[]) =>
+ icons.map((icon) => (
+
+ {icon.icon}
+
+ ));
+
+export const Footer: React.FC
= ({ icons }) => {
return (
-