vkorobtsev-nextJs/app/projects/archive/page.jsx
Коробцев Виталий Сергеевич 55249b5aa6 On branch master
Changes to be committed:
	modified:   app/(root)/page.jsx
	modified:   app/about/components/about/about.jsx
	deleted:    app/about/components/about/spotify/animation.jsx
	deleted:    app/about/components/about/spotify/card.jsx
	deleted:    app/about/components/about/spotify/fetch.js
	modified:   app/about/components/education.jsx
	modified:   app/about/layout.jsx
	modified:   app/about/loading.jsx
	modified:   app/about/page.jsx
	modified:   app/layout.jsx
	modified:   app/not-found.jsx
	modified:   app/projects/[slug]/page.jsx
	modified:   app/projects/archive/page.jsx
	modified:   app/projects/layout.jsx
	modified:   app/projects/loading.jsx
	modified:   app/projects/page.jsx
	deleted:    components/Chat.jsx
	modified:   components/Footer.jsx
	modified:   components/Navbar.jsx
	modified:   json/data.json
	modified:   pnpm-lock.yaml
	new file:   public/image/me.jpeg
	deleted:    public/image/me.jpg
	new file:   public/image/me1.jpeg
	deleted:    public/image/me1.jpg
	new file:   public/image/me2.jpeg
	new file:   public/image/me3.jpeg
	deleted:    public/image/me3.jpg
	deleted:    public/image/me4.jpeg
	new file:   public/image/me4.jpg
	new file:   public/image/me7.jpg
	deleted:    vite-to_VS/README.md
2025-09-12 14:56:00 +05:00

125 lines
3.4 KiB
JavaScript

"use client";
import { motion } from "framer-motion";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faGithub } from "@fortawesome/free-brands-svg-icons";
import { faArrowUpRightFromSquare } from "@fortawesome/free-solid-svg-icons";
import FixedButon from "@/components/FixedButton";
import { faChevronLeft } from "@fortawesome/free-solid-svg-icons";
import Projects from "@/json/data.json";
import Link from "next/link";
export default function Page() {
const projects = Projects.Projects;
return (
<>
<main className="overflow-hidden">
<FixedButon href="/projects">
<FontAwesomeIcon icon={faChevronLeft} className="text-black pr-10" />
</FixedButon>
<div className="min-h-screen w-screen mt-10 md:mt-0 p-10 flex justify-center items-center flex-col mb-10">
<div className="flex justify-center items-center flex-col my-5 self-start ">
<motion.div
className="bg-gray-700 w-28 h-1 rounded-full mb-3 self-start"
initial={{
opacity: 0,
x: -250,
}}
animate={{
opacity: 1,
x: 50,
}}
transition={{
delay: 0.5,
duration: 1,
type: "spring",
}}></motion.div>
<motion.div
className="bg-gray-700 w-28 h-1 rounded-full"
initial={{
opacity: 0,
x: 200,
}}
animate={{
opacity: 1,
x: 0,
}}
transition={{
delay: 0.5,
duration: 1,
type: "spring",
}}></motion.div>
<motion.h1
className="text-3xl font-bold mt-3"
initial={{
opacity: 0,
x: -200,
}}
animate={{
opacity: 1,
x: 0,
}}
transition={{
delay: 0.7,
duration: 1,
type: "spring",
}}>
Archive
</motion.h1>
</div>
<div className="mx-auto container md:px-10 grid grid-cols-1 mb-">
{/* invisible table */}
<table className="space-y-3">
<thead>
<tr className=" hover:shadow-md transition-all ease duration-500">
<th className="text-start">Год создания</th>
<th className="text-start">Название</th>
<th className="text-start">Технологии</th>
<th className="text-start">Ссылки</th>
</tr>
</thead>
<tbody>
{projects.map((project, index) => (
<tr
key={index}
className="hover:shadow-md transition-all ease duration-500">
<td>{project.year}</td>
<td>
<Link href={`/projects/${project.slug}`}>
{project.title}
</Link>
</td>
<td>{project.tech.map((t) => `${t}, `)}</td>
<td>
<div className="flex flex-row justify-center items-center">
{project.code && (
<a href={project.code} title="Link to GitHub">
<FontAwesomeIcon
icon={faGithub}
className="text-xl mr-2"
/>
</a>
)}
{project.preview && (
<a
href={project.preview}
title="Link to project preview">
<FontAwesomeIcon
icon={faArrowUpRightFromSquare}
className="text-xl"
/>
</a>
)}
</div>
</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</main>
</>
);
}