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
|
|
@ -7,18 +7,17 @@ import Link from "next/link";
|
||||||
|
|
||||||
// Компоненты
|
// Компоненты
|
||||||
import Button from "@/components/Button";
|
import Button from "@/components/Button";
|
||||||
import Me from "@/public/image/me.jpg";
|
import Me from "@/public/image/me.jpeg";
|
||||||
import MeAbout from "@/public/image/me2.jpg";
|
import MeAbout from "@/public/image/me7.jpg";
|
||||||
import Setup from "@/public/image/setup.jpg";
|
import Setup from "@/public/image/setup.jpg";
|
||||||
import ProjectAll from "@/public/image/projects.png";
|
import ProjectAll from "@/public/image/projects.png";
|
||||||
import Hr from "@/components/Hr";
|
import Hr from "@/components/Hr";
|
||||||
// Значки
|
// Значки
|
||||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||||
import { faGithub } from "@fortawesome/free-brands-svg-icons";
|
import { faGithub } from "@fortawesome/free-brands-svg-icons";
|
||||||
import { faInstagram } from "@fortawesome/free-brands-svg-icons";
|
|
||||||
import { faLinkedin } from "@fortawesome/free-brands-svg-icons";
|
|
||||||
import { faDiscord } from "@fortawesome/free-brands-svg-icons";
|
|
||||||
import { faEnvelope } from "@fortawesome/free-solid-svg-icons";
|
import { faEnvelope } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
import { faVk } from "@fortawesome/free-brands-svg-icons";
|
||||||
|
import { faTelegram } from "@fortawesome/free-brands-svg-icons";
|
||||||
|
|
||||||
const MyPage = () => {
|
const MyPage = () => {
|
||||||
const fullpageOptions = {
|
const fullpageOptions = {
|
||||||
|
|
@ -43,14 +42,14 @@ const MyPage = () => {
|
||||||
transition={{
|
transition={{
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
<div className="block md:hidden col-span-1 mx-auto my-10">
|
<div className="block md:hidden col-span-1 mx-auto my-5">
|
||||||
<div className="bg-slate-500 rounded-full h-60 w-60 grayscale hover:grayscale-0 transition-all ease duration-300">
|
<div className="bg-slate-500 rounded h-40 w-40 grayscale hover:grayscale-0 transition-all ease duration-300">
|
||||||
<Image
|
<Image
|
||||||
src={Me}
|
src={Me}
|
||||||
width={500}
|
width={500}
|
||||||
height={500}
|
height={500}
|
||||||
className="rounded-full w-full h-full object-cover "
|
className="rounded w-half h-half object-cover "
|
||||||
alt="Korobtsev"
|
alt="V.Korobtsev"
|
||||||
placeholder="blur"
|
placeholder="blur"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -73,7 +72,7 @@ const MyPage = () => {
|
||||||
delay: 0.3,
|
delay: 0.3,
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
Разработчик, Инженер, Архитектор
|
Главное
|
||||||
</motion.h1>
|
</motion.h1>
|
||||||
<motion.p
|
<motion.p
|
||||||
className="title text-md 2xl:text-xl mt-4 tracking-wider text-gray-500 leading-[1.7rem]"
|
className="title text-md 2xl:text-xl mt-4 tracking-wider text-gray-500 leading-[1.7rem]"
|
||||||
|
|
@ -83,7 +82,7 @@ const MyPage = () => {
|
||||||
delay: 0.4,
|
delay: 0.4,
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
Привет! Я Виталий Коробцев. Создатель "Гибридной Офисной Системы". Под моим руководством или с моим участием создано множество крупных проектов. На данном сайте я решил собрать некоторые из них и рассказать о себе и своих проектах - завершенных, текущих, планируемых.
|
Привет! Я Виталий Коробцев. Создатель "Гибридной Офисной Системы". Под моим руководством (или с моим участием) создано множество крупных проектов. На данном сайте я решил собрать некоторые из них и рассказать о себе и своих проектах - завершенных, текущих, планируемых.
|
||||||
|
|
||||||
</motion.p>
|
</motion.p>
|
||||||
<motion.div
|
<motion.div
|
||||||
|
|
@ -95,16 +94,10 @@ const MyPage = () => {
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
<Button variation="primary">
|
<Button variation="primary">
|
||||||
<Link
|
<a href="#projects">Проекты</a>
|
||||||
href={"/docs/cv.pdf"}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
download>
|
|
||||||
Download CV
|
|
||||||
</Link>
|
|
||||||
</Button>
|
</Button>
|
||||||
<Button variation="secondary">
|
<Button variation="secondary">
|
||||||
<a href="#contact">Contact Me</a>
|
<a href="#contact">Связаться</a>
|
||||||
</Button>
|
</Button>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
|
|
@ -168,7 +161,7 @@ const MyPage = () => {
|
||||||
delay: 0.1,
|
delay: 0.1,
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
About Me
|
Обо мне
|
||||||
</motion.h1>
|
</motion.h1>
|
||||||
<Hr />
|
<Hr />
|
||||||
<motion.p
|
<motion.p
|
||||||
|
|
@ -179,7 +172,7 @@ const MyPage = () => {
|
||||||
delay: 0.2,
|
delay: 0.2,
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
A brief introduction about me and my interest.
|
Немного обо мне и моих интересах.
|
||||||
</motion.p>
|
</motion.p>
|
||||||
<motion.div
|
<motion.div
|
||||||
initial={{ y: 40, opacity: 0 }}
|
initial={{ y: 40, opacity: 0 }}
|
||||||
|
|
@ -189,7 +182,7 @@ const MyPage = () => {
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
<Button variation="primary">
|
<Button variation="primary">
|
||||||
<Link href="/about">Learn More</Link>
|
<Link href="/about">Читать</Link>
|
||||||
</Button>
|
</Button>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -220,7 +213,7 @@ const MyPage = () => {
|
||||||
src={ProjectAll}
|
src={ProjectAll}
|
||||||
layout="fill"
|
layout="fill"
|
||||||
className="object-cover"
|
className="object-cover"
|
||||||
alt="Korobtsev Setup"
|
alt="Рабочее место"
|
||||||
placeholder="blur"
|
placeholder="blur"
|
||||||
/>
|
/>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
|
|
@ -234,7 +227,7 @@ const MyPage = () => {
|
||||||
delay: 0.1,
|
delay: 0.1,
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
My Projects
|
Проекты
|
||||||
</motion.h1>
|
</motion.h1>
|
||||||
<Hr />
|
<Hr />
|
||||||
<motion.p
|
<motion.p
|
||||||
|
|
@ -245,10 +238,10 @@ const MyPage = () => {
|
||||||
delay: 0.2,
|
delay: 0.2,
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
This is some of my projects that I have done{" "}
|
Некоторые из проектов с моим учаcтием {" "}
|
||||||
<span className="bg-transparent md:bg-gray-100 bg-opacity-50 xl:bg-transparent">
|
<span className="bg-transparent md:bg-gray-100 bg-opacity-50 xl:bg-transparent">
|
||||||
{" "}
|
{" "}
|
||||||
and currently working on.
|
или под моим руководством.
|
||||||
</span>
|
</span>
|
||||||
</motion.p>
|
</motion.p>
|
||||||
<motion.div
|
<motion.div
|
||||||
|
|
@ -259,7 +252,7 @@ const MyPage = () => {
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
<Button variation="primary">
|
<Button variation="primary">
|
||||||
<Link href="/projects">Learn More</Link>
|
<Link href="/projects">Просмотреть</Link>
|
||||||
</Button>
|
</Button>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -290,7 +283,7 @@ const MyPage = () => {
|
||||||
src={Setup}
|
src={Setup}
|
||||||
layout="fill"
|
layout="fill"
|
||||||
className="object-cover"
|
className="object-cover"
|
||||||
alt="Korobtsev Setup"
|
alt="Рабочее место"
|
||||||
placeholder="blur"
|
placeholder="blur"
|
||||||
/>
|
/>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
|
|
@ -304,7 +297,7 @@ const MyPage = () => {
|
||||||
delay: 0.1,
|
delay: 0.1,
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
Get In Touch
|
Связаться
|
||||||
</motion.h1>
|
</motion.h1>
|
||||||
<Hr />
|
<Hr />
|
||||||
<motion.p
|
<motion.p
|
||||||
|
|
@ -315,9 +308,9 @@ const MyPage = () => {
|
||||||
delay: 0.2,
|
delay: 0.2,
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
Feel free to contact me if you have any{" "}
|
Не стесняйтесь связаться со мной,{" "}
|
||||||
<span className="bg-transparent md:bg-gray-100 bg-opacity-50 xl:bg-transparent">
|
<span className="bg-transparent md:bg-gray-100 bg-opacity-50 xl:bg-transparent">
|
||||||
questions or just want to say hi.
|
можем посотрудничать и реализовать Ваш проект.
|
||||||
</span>
|
</span>
|
||||||
</motion.p>
|
</motion.p>
|
||||||
<motion.p
|
<motion.p
|
||||||
|
|
@ -328,14 +321,14 @@ const MyPage = () => {
|
||||||
delay: 0.3,
|
delay: 0.3,
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
<a href="mailto:Alvalen.shafel04@gmail.com?subject=Hello&body=Hello Korobtsev,">
|
<a href="mailto:vk@gossys.dev?subject=Я с сайта Korobtsev.ru&body=Приветствую Виталий!">
|
||||||
alvalen.shafel04@gmail.com
|
vk@gossys.dev
|
||||||
</a>
|
</a>
|
||||||
</motion.p>
|
</motion.p>
|
||||||
{/* icons */}
|
{/* icons */}
|
||||||
<div className="flex justify-center items-center space-x-4">
|
<div className="flex justify-center items-center space-x-4">
|
||||||
<motion.a
|
<motion.a
|
||||||
href="mailto:Alvalen.shafel04@gmail.com?subject=Hello&body=Hello Korobtsev,"
|
href="mailto:vk@gossys.dev?subject=Я с сайта Korobtsev.ru&body=Приветствую Виталий!"
|
||||||
className="flex justify-center items-center bg-gray-700 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
className="flex justify-center items-center bg-gray-700 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
||||||
initial={{ y: 40, opacity: 0 }}
|
initial={{ y: 40, opacity: 0 }}
|
||||||
whileInView={{ y: 0, opacity: 1 }}
|
whileInView={{ y: 0, opacity: 1 }}
|
||||||
|
|
@ -347,7 +340,7 @@ const MyPage = () => {
|
||||||
</motion.a>
|
</motion.a>
|
||||||
|
|
||||||
<motion.a
|
<motion.a
|
||||||
href="https://github.com/Korobtsev"
|
href="https://dev.gossys.dev/v.korobtsev/"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="flex justify-center items-center bg-gray-700 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
className="flex justify-center items-center bg-gray-700 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
||||||
|
|
@ -360,7 +353,7 @@ const MyPage = () => {
|
||||||
<FontAwesomeIcon icon={faGithub} className="text-3xl" />
|
<FontAwesomeIcon icon={faGithub} className="text-3xl" />
|
||||||
</motion.a>
|
</motion.a>
|
||||||
<motion.a
|
<motion.a
|
||||||
href="https://www.instagram.com/Korobtsev_/"
|
href="https://vk.ru/Miguelle74/"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="flex justify-center items-center bg-gray-700 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
className="flex justify-center items-center bg-gray-700 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
||||||
|
|
@ -371,12 +364,12 @@ const MyPage = () => {
|
||||||
opacity: { delay: 0.4 },
|
opacity: { delay: 0.4 },
|
||||||
}}>
|
}}>
|
||||||
<FontAwesomeIcon
|
<FontAwesomeIcon
|
||||||
icon={faInstagram}
|
icon={faVk}
|
||||||
className="text-3xl"
|
className="text-3xl"
|
||||||
/>
|
/>
|
||||||
</motion.a>
|
</motion.a>
|
||||||
<motion.a
|
<motion.a
|
||||||
href="https://www.linkedin.com/in/alvalen-shafel-8a081a254/"
|
href="https://t.me/Gosys_Maestro/"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="flex justify-center items-center bg-gray-700 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
className="flex justify-center items-center bg-gray-700 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
||||||
|
|
@ -386,20 +379,8 @@ const MyPage = () => {
|
||||||
y: { delay: 0.4 },
|
y: { delay: 0.4 },
|
||||||
opacity: { delay: 0.5 },
|
opacity: { delay: 0.5 },
|
||||||
}}>
|
}}>
|
||||||
<FontAwesomeIcon icon={faLinkedin} className="text-3xl" />
|
<FontAwesomeIcon icon={faTelegram}
|
||||||
</motion.a>
|
className="text-3xl" />
|
||||||
<motion.a
|
|
||||||
href="https://discordapp.com/users/bloody#6118"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
className="flex justify-center items-center bg-gray-700 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
|
||||||
initial={{ opacity: 0, y: 40 }}
|
|
||||||
whileInView={{ opacity: 1, y: 0 }}
|
|
||||||
transition={{
|
|
||||||
y: { delay: 0.5 },
|
|
||||||
opacity: { delay: 0.6 },
|
|
||||||
}}>
|
|
||||||
<FontAwesomeIcon icon={faDiscord} className="text-3xl" />
|
|
||||||
</motion.a>
|
</motion.a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Card from "./spotify/card";
|
|
||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
import Me1 from "@/public/image/me1.jpg";
|
import Me1 from "@/public/image/me1.jpeg";
|
||||||
import Me2 from "@/public/image/me2.jpg";
|
import Me2 from "@/public/image/me2.jpeg";
|
||||||
import Me3 from "@/public/image/me3.jpg";
|
import Me3 from "@/public/image/me4.jpg";
|
||||||
import Hr from "@/components/Hr";
|
import Hr from "@/components/Hr";
|
||||||
|
|
||||||
function Title() {
|
function Title() {
|
||||||
|
|
@ -11,7 +10,7 @@ function Title() {
|
||||||
<div className="mt-10 flex flex-col justify-start items-center w-full pl-10 md:pl-32">
|
<div className="mt-10 flex flex-col justify-start items-center w-full pl-10 md:pl-32">
|
||||||
<div className="flex justify-center items-center flex-col my-5 self-start ">
|
<div className="flex justify-center items-center flex-col my-5 self-start ">
|
||||||
<Hr variant="long"></Hr>
|
<Hr variant="long"></Hr>
|
||||||
<h1 className="text-3xl font-bold mt-3">Who Am I?</h1>
|
<h1 className="text-3xl font-bold mt-3">Обо мне</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
@ -35,7 +34,7 @@ export default function About() {
|
||||||
className="w-full h-full">
|
className="w-full h-full">
|
||||||
<Image
|
<Image
|
||||||
src={Me1}
|
src={Me1}
|
||||||
alt="Korobtsev"
|
alt="Korobtsev.ru"
|
||||||
layout="fill"
|
layout="fill"
|
||||||
objectFit="cover"
|
objectFit="cover"
|
||||||
placeholder="blur"
|
placeholder="blur"
|
||||||
|
|
@ -108,13 +107,13 @@ export default function About() {
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
<h2 className="text-2xl font-bold tracking-wider mb-3">
|
<h2 className="text-2xl font-bold tracking-wider mb-3">
|
||||||
Alvalen Shafelbilyunazra
|
Виталий Коробцев
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-gray-600 text-justify title text-lg">
|
<p className="text-gray-600 text-justify title text-lg">
|
||||||
Hey there, I’m Alvalen Shafelbilyunazra, a
|
Привет! Я Виталий Коробцев,
|
||||||
<span className="text-black font-medium">
|
<span className="text-black font-medium">
|
||||||
{" "}
|
{" "}
|
||||||
passionate Web Developer
|
разработчик, архитектор,
|
||||||
</span>{" "}
|
</span>{" "}
|
||||||
with a growing expertise in
|
with a growing expertise in
|
||||||
<span className="text-black font-medium">
|
<span className="text-black font-medium">
|
||||||
|
|
@ -139,7 +138,6 @@ export default function About() {
|
||||||
essential. Let’s connect and explore the evolving intersection
|
essential. Let’s connect and explore the evolving intersection
|
||||||
of web and AI together!
|
of web and AI together!
|
||||||
</p>
|
</p>
|
||||||
<Card />
|
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
import { motion } from "framer-motion";
|
|
||||||
|
|
||||||
const PlayingAnimation = () => {
|
|
||||||
return (
|
|
||||||
<div className="relative flex justify-between w-4 h-8 space-x-1">
|
|
||||||
<motion.span
|
|
||||||
className="w-1 h-full bg-gray-500 rounded-full"
|
|
||||||
animate={{ scaleY: [0.3, 1, 0.5, 0.75, 0.5] }}
|
|
||||||
transition={{ duration: 2.2, repeat: Infinity }}
|
|
||||||
/>
|
|
||||||
<motion.span
|
|
||||||
className="w-1 h-full bg-gray-500 rounded-full"
|
|
||||||
animate={{ scaleY: [0.3, 1, 0.5, 0.75, 0.5] }}
|
|
||||||
transition={{ duration: 2.2, repeat: Infinity, delay: -2 }}
|
|
||||||
/>
|
|
||||||
<motion.span
|
|
||||||
className="w-1 h-full bg-gray-500 rounded-full"
|
|
||||||
animate={{ scaleY: [0.3, 1, 0.5, 0.75, 0.5] }}
|
|
||||||
transition={{ duration: 2.2, repeat: Infinity, delay: -3.7 }}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default PlayingAnimation;
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
import React, { useEffect, useState } from "react";
|
|
||||||
import getNowPlayingItem from "./fetch";
|
|
||||||
import PlayingAnimation from "./animation";
|
|
||||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
||||||
import { faSpotify } from "@fortawesome/free-brands-svg-icons";
|
|
||||||
import Image from "next/image";
|
|
||||||
|
|
||||||
const Card = () => {
|
|
||||||
const [loading, setLoading] = useState(true);
|
|
||||||
const [result, setResult] = useState({});
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const fetchData = async () => {
|
|
||||||
const results = await Promise.all([getNowPlayingItem()]);
|
|
||||||
console.log(results);
|
|
||||||
setResult(results[0]);
|
|
||||||
setLoading(false);
|
|
||||||
};
|
|
||||||
fetchData(); // Fetch data immediately on component mount
|
|
||||||
|
|
||||||
const intervalId = setInterval(fetchData, 60 * 1000); // ! Fetch data every minute: temporary
|
|
||||||
|
|
||||||
return () => clearInterval(intervalId);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className="mt-3 flex justify-center w-full">
|
|
||||||
{loading ? (
|
|
||||||
<div className="flex justify-center mb-8">
|
|
||||||
{/* Replace this with your own loading spinner */}
|
|
||||||
<div className="loader ease-linear rounded-full border-4 border-t-4 border-black h-12 w-12 mb-4"></div>
|
|
||||||
</div>
|
|
||||||
) : (
|
|
||||||
<div className="relative w-full mb-8 grid grid-cols-2 gap-2 border-2 border-gray-500 p-4 rounded-lg backdrop-filter backdrop-blur-lg bg-white bg-opacity-30">
|
|
||||||
{result.isPlaying && (
|
|
||||||
<Image
|
|
||||||
src={result.albumImageUrl}
|
|
||||||
alt="backgroundImage"
|
|
||||||
layout="fill"
|
|
||||||
objectFit="cover"
|
|
||||||
className="z-0 opacity-20 absolute"
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
<div className="z-10 flex items-center">
|
|
||||||
<FontAwesomeIcon
|
|
||||||
icon={faSpotify}
|
|
||||||
className="text-black text-5xl me-5 md:me-1 xl:me-8"
|
|
||||||
/>
|
|
||||||
<p className="font-semibold me-5 md:me-1 xl:me-7">
|
|
||||||
{result.isPlaying
|
|
||||||
? "Now playing"
|
|
||||||
: "Currently offline"}
|
|
||||||
</p>
|
|
||||||
{result.isPlaying && <PlayingAnimation />}
|
|
||||||
</div>
|
|
||||||
{result.isPlaying && (
|
|
||||||
<div className="z-10 rounded-lg ms-5">
|
|
||||||
<div className="flex items-center space-x-4">
|
|
||||||
<div className="overflow-hidden">
|
|
||||||
<a
|
|
||||||
href={result.songUrl ? encodeURI(result.songUrl) : "#"}
|
|
||||||
target="_blank"
|
|
||||||
className="block font-semibold w-full truncate text-blue-500">
|
|
||||||
{result.title}
|
|
||||||
</a>
|
|
||||||
<p className="truncate text-gray-500">
|
|
||||||
{result.artist}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Card;
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
import querystring from "querystring";
|
|
||||||
const TOKEN_ENDPOINT = `https://accounts.spotify.com/api/token`;
|
|
||||||
const NOW_PLAYING_ENDPOINT = `https://api.spotify.com/v1/me/player/currently-playing`;
|
|
||||||
const client_id = process.env.NEXT_PUBLIC_SPOTIFY_CLIENT_ID;
|
|
||||||
const client_secret = process.env.NEXT_PUBLIC_SPOTIFY_CLIENT_SECRET;
|
|
||||||
const refresh_token = process.env.NEXT_PUBLIC_SPOTIFY_REFRESH_TOKEN;
|
|
||||||
|
|
||||||
const basic = Buffer.from(`${client_id}:${client_secret}`).toString("base64");
|
|
||||||
const getAccessToken = async () => {
|
|
||||||
const response = await fetch(TOKEN_ENDPOINT, {
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
Authorization: `Basic ${basic}`,
|
|
||||||
"Content-Type": "application/x-www-form-urlencoded",
|
|
||||||
},
|
|
||||||
body: querystring.stringify({
|
|
||||||
grant_type: "refresh_token",
|
|
||||||
refresh_token,
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
return response.json();
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getNowPlaying = async () => {
|
|
||||||
const { access_token } = await getAccessToken();
|
|
||||||
return fetch(NOW_PLAYING_ENDPOINT, {
|
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${access_token}`,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export default async function getNowPlayingItem() {
|
|
||||||
const response = await getNowPlaying();
|
|
||||||
if (response.status === 204 || response.status > 400) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const song = await response.json();
|
|
||||||
const albumImageUrl = song.item.album.images[0].url;
|
|
||||||
const artist = song.item.artists.map((_artist) => _artist.name).join(", ");
|
|
||||||
const isPlaying = song.is_playing;
|
|
||||||
const songUrl = song.item.external_urls.spotify;
|
|
||||||
const title = song.item.name;
|
|
||||||
|
|
||||||
return {
|
|
||||||
albumImageUrl,
|
|
||||||
artist,
|
|
||||||
isPlaying,
|
|
||||||
songUrl,
|
|
||||||
title,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -10,7 +10,7 @@ import {
|
||||||
} from "@fortawesome/free-solid-svg-icons";
|
} from "@fortawesome/free-solid-svg-icons";
|
||||||
import { motion, AnimatePresence } from "framer-motion";
|
import { motion, AnimatePresence } from "framer-motion";
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import Me4 from "@/public/image/me4.jpeg";
|
import Me4 from "@/public/image/me4.jpg";
|
||||||
import Me5 from "@/public/image/me5.jpg";
|
import Me5 from "@/public/image/me5.jpg";
|
||||||
import Me6 from "@/public/image/me6.jpg";
|
import Me6 from "@/public/image/me6.jpg";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import Footer from "@/components/Footer";
|
import Footer from "@/components/Footer";
|
||||||
|
|
||||||
export const metadata = {
|
export const metadata = {
|
||||||
title: "Korobtsev | About"
|
title: "Korobtsev.ru | Обо мне"
|
||||||
};
|
};
|
||||||
export default function Layout({ children }) {
|
export default function Layout({ children }) {
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
export default function Loading() {
|
export default function Loading() {
|
||||||
return (
|
return (
|
||||||
<div className="fixed top-0 left-0 flex justify-center items-center h-screen w-screen bg-gray-300 z-[999]">
|
<div className="fixed top-0 left-0 flex justify-center items-center h-screen w-screen bg-gray-300 z-[999]">
|
||||||
<h1 className="text-4xl text-gray-900">Loading...</h1>
|
<h1 className="text-4xl text-gray-900">Загрузка...</h1>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import Experience from "./components/experience.jsx";
|
||||||
import Education from "./components/education.jsx";
|
import Education from "./components/education.jsx";
|
||||||
|
|
||||||
// images
|
// images
|
||||||
import Hero from "@/public/image/me2.jpg";
|
import Hero from "@/public/image/me2.jpeg";
|
||||||
|
|
||||||
import Hr from "@/components/Hr";
|
import Hr from "@/components/Hr";
|
||||||
import About from "./components/about/about.jsx";
|
import About from "./components/about/about.jsx";
|
||||||
|
|
@ -42,7 +42,7 @@ export default function Page() {
|
||||||
className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw] grayscale hover:grayscale-0 ">
|
className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw] grayscale hover:grayscale-0 ">
|
||||||
<Image
|
<Image
|
||||||
src={Hero}
|
src={Hero}
|
||||||
alt="Alvalen Shafel"
|
alt="Виталий Коробцев"
|
||||||
layout="fill"
|
layout="fill"
|
||||||
objectFit="cover"
|
objectFit="cover"
|
||||||
placeholder="blur"
|
placeholder="blur"
|
||||||
|
|
@ -55,10 +55,10 @@ export default function Page() {
|
||||||
</h1>
|
</h1>
|
||||||
<Hr />
|
<Hr />
|
||||||
<p className="title text-xl mt-4 tracking-wider text-gray-900 leading-[1.7rem] mb-5 ">
|
<p className="title text-xl mt-4 tracking-wider text-gray-900 leading-[1.7rem] mb-5 ">
|
||||||
A brief introduction about me and{" "}
|
Немного обо мне и{" "}
|
||||||
<span className="bg-transparent md:bg-gray-100 bg-opacity-50 xl:bg-transparent">
|
<span className="bg-transparent md:bg-gray-100 bg-opacity-50 xl:bg-transparent">
|
||||||
{" "}
|
{" "}
|
||||||
my interest.
|
моих интересах.
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<motion.div
|
<motion.div
|
||||||
|
|
@ -72,7 +72,7 @@ export default function Page() {
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
className="mb-3">
|
className="mb-3">
|
||||||
<Button variation="primary">Scroll Down</Button>
|
<Button variation="primary">Прокрути</Button>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -5,46 +5,45 @@ import "@fortawesome/fontawesome-svg-core/styles.css";
|
||||||
config.autoAddCss = false;
|
config.autoAddCss = false;
|
||||||
import "./nprogress.css";
|
import "./nprogress.css";
|
||||||
import { Analytics } from "@vercel/analytics/react";
|
import { Analytics } from "@vercel/analytics/react";
|
||||||
import Chat from "@/components/Chat";
|
|
||||||
import ClientTopProgressBar from "@/components/ClientTopProgressBar";
|
import ClientTopProgressBar from "@/components/ClientTopProgressBar";
|
||||||
|
|
||||||
export const metadata = {
|
export const metadata = {
|
||||||
title: "Korobtsev | Portofolio",
|
title: "Korobtsev.ru | Личный сайт",
|
||||||
|
|
||||||
description:
|
description:
|
||||||
"My name is Korobtsev, I'm a web developer and I'm passionate about it. I'm currently studying at Universitas Negeri Malang.",
|
"Всем привет! Я Виталий Коробцев и это мой личный сайт! Я хочу рассказать Вам о себе и своих проектах.",
|
||||||
|
|
||||||
author: "Alvalen Shafelbilyunazra",
|
author: "Виталий Коробцев",
|
||||||
siteUrl: "https://www.korobtsev.ru",
|
siteUrl: "https://www.korobtsev.ru",
|
||||||
applicationName: "Korobtsev",
|
applicationName: "Korobtsev.ru",
|
||||||
|
|
||||||
keywords: [
|
keywords: [
|
||||||
"Korobtsev",
|
"Korobtsev",
|
||||||
"alvalen",
|
"Коробцев",
|
||||||
"alvalen shafel",
|
"Виталий Коробцев",
|
||||||
"shafel",
|
"Miguelle74",
|
||||||
"alvalen shafelbilyunazra",
|
"Госис",
|
||||||
"alvalen shafel bilyunazra",
|
"Гибридная Офисная Система",
|
||||||
"bloodfallen",
|
"ОСГОС",
|
||||||
"alvalen porto",
|
"Новый Крым",
|
||||||
"alvalen um",
|
"Технико",
|
||||||
],
|
],
|
||||||
|
|
||||||
openGraph: {
|
openGraph: {
|
||||||
type: "website",
|
type: "website",
|
||||||
url: "https://www.korobtsev.ru",
|
url: "https://www.korobtsev.ru",
|
||||||
title: "Korobtsev | Portofolio",
|
title: "Korobtsev.ru | Личный сайт",
|
||||||
site_name: "Korobtsev | Portofolio",
|
site_name: "Korobtsev.ru | Личный сайт",
|
||||||
description: "My name is Korobtsev, This is my portofolio website.",
|
description: "My name is Vitaliy Korobtsev, This is my website.",
|
||||||
width: 1200,
|
width: 1200,
|
||||||
height: 630,
|
height: 630,
|
||||||
images: [
|
images: [
|
||||||
{
|
{
|
||||||
url: "/og-image-rev.png",
|
url: "/og-image-rev.png",
|
||||||
alt: "Korobtsev Portofolio",
|
alt: "Korobtsev ",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
site_name: "Korobtsev | Portofolio",
|
site_name: "Korobtsev.ru | Личный сайт",
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -55,7 +54,6 @@ export default function RootLayout({ children }) {
|
||||||
<ClientTopProgressBar />
|
<ClientTopProgressBar />
|
||||||
<Navbar />
|
<Navbar />
|
||||||
{children}
|
{children}
|
||||||
<Chat />
|
|
||||||
<Analytics />
|
<Analytics />
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const NotFound = () => (
|
||||||
<div className="flex justify-center items-center flex-col mb-5 space-y-10">
|
<div className="flex justify-center items-center flex-col mb-5 space-y-10">
|
||||||
<div>
|
<div>
|
||||||
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400 text-center">
|
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400 text-center">
|
||||||
Page not found
|
А тут совсем ничего нет...
|
||||||
</h2>
|
</h2>
|
||||||
<h1 className="text-4xl font-medium text-neutral-900 text-center">
|
<h1 className="text-4xl font-medium text-neutral-900 text-center">
|
||||||
404
|
404
|
||||||
|
|
@ -20,7 +20,7 @@ const NotFound = () => (
|
||||||
<button
|
<button
|
||||||
onClick={() => window.history.back()}
|
onClick={() => window.history.back()}
|
||||||
className="text-lg text-neutral-900 hover:text-neutral-800 text-center border-2 border-gray-800 rounded-xl p-3 py-2 mt-2">
|
className="text-lg text-neutral-900 hover:text-neutral-800 text-center border-2 border-gray-800 rounded-xl p-3 py-2 mt-2">
|
||||||
Go Back
|
Назад
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,7 @@ function Page(props) {
|
||||||
<div className="min-h-screen sm:min-h-0 flex justify-center items-start flex-col mb-5 space-y-10 mx-auto">
|
<div className="min-h-screen sm:min-h-0 flex justify-center items-start flex-col mb-5 space-y-10 mx-auto">
|
||||||
<div>
|
<div>
|
||||||
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
||||||
Project
|
Проект
|
||||||
</h2>
|
</h2>
|
||||||
<h1 className="text-4xl font-medium text-neutral-900">
|
<h1 className="text-4xl font-medium text-neutral-900">
|
||||||
{data.title}
|
{data.title}
|
||||||
|
|
@ -122,7 +122,7 @@ function Page(props) {
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
||||||
Technology
|
Технологии
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-2xl font-normal text-neutral-900">
|
<p className="text-2xl font-normal text-neutral-900">
|
||||||
{data.tech.join(", ")}
|
{data.tech.join(", ")}
|
||||||
|
|
@ -130,7 +130,7 @@ function Page(props) {
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
||||||
Year
|
Год(ы)
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-2xl font-normal text-neutral-900">
|
<p className="text-2xl font-normal text-neutral-900">
|
||||||
{data.year}
|
{data.year}
|
||||||
|
|
@ -139,14 +139,14 @@ function Page(props) {
|
||||||
{data.preview && (
|
{data.preview && (
|
||||||
<div>
|
<div>
|
||||||
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
||||||
Preview
|
Посмотреть
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-2xl font-normal text-neutral-900">
|
<p className="text-2xl font-normal text-neutral-900">
|
||||||
<a
|
<a
|
||||||
href={data.preview}
|
href={data.preview}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer">
|
rel="noopener noreferrer">
|
||||||
Preview{" "}
|
Перейти{" "}
|
||||||
<FontAwesomeIcon
|
<FontAwesomeIcon
|
||||||
icon={faArrowUpRightFromSquare}
|
icon={faArrowUpRightFromSquare}
|
||||||
className="ml-3"
|
className="ml-3"
|
||||||
|
|
@ -158,7 +158,7 @@ function Page(props) {
|
||||||
{data.code && (
|
{data.code && (
|
||||||
<div>
|
<div>
|
||||||
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
||||||
Source Code
|
Код (для Open Source)
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-2xl font-normal text-neutral-900">
|
<p className="text-2xl font-normal text-neutral-900">
|
||||||
<a
|
<a
|
||||||
|
|
@ -177,7 +177,7 @@ function Page(props) {
|
||||||
</div>
|
</div>
|
||||||
<div className="flex justify-start items-start flex-col mb-5 ">
|
<div className="flex justify-start items-start flex-col mb-5 ">
|
||||||
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
<h2 className="uppercase font-normal text-lg tracking-[8px] text-neutral-400">
|
||||||
Description
|
Описание
|
||||||
</h2>
|
</h2>
|
||||||
{data.desc.map((desc, index) => (
|
{data.desc.map((desc, index) => (
|
||||||
<p
|
<p
|
||||||
|
|
|
||||||
|
|
@ -73,10 +73,10 @@ export default function Page() {
|
||||||
<table className="space-y-3">
|
<table className="space-y-3">
|
||||||
<thead>
|
<thead>
|
||||||
<tr className=" hover:shadow-md transition-all ease duration-500">
|
<tr className=" hover:shadow-md transition-all ease duration-500">
|
||||||
<th className="text-start">Year</th>
|
<th className="text-start">Год создания</th>
|
||||||
<th className="text-start">Title</th>
|
<th className="text-start">Название</th>
|
||||||
<th className="text-start">Technology</th>
|
<th className="text-start">Технологии</th>
|
||||||
<th className="text-start">Link</th>
|
<th className="text-start">Ссылки</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
import Footer from "@/components/Footer";
|
import Footer from "@/components/Footer";
|
||||||
|
|
||||||
export const metadata = {
|
export const metadata = {
|
||||||
title: "Korobtsev | Projects"
|
title: "Korobtsev.ru | Проекты"
|
||||||
};
|
};
|
||||||
export default function Layout({ children }) {
|
export default function Layout({ children }) {
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
export default function Loading() {
|
export default function Loading() {
|
||||||
return (
|
return (
|
||||||
<div className="fixed top-0 left-0 flex justify-center items-center h-screen w-screen bg-gray-300 z-[999]">
|
<div className="fixed top-0 left-0 flex justify-center items-center h-screen w-screen bg-gray-300 z-[999]">
|
||||||
<h1 className="text-4xl text-gray-900">Loading...</h1>
|
<h1 className="text-4xl text-gray-900">Загрузка...</h1>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,9 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||||
import { faChevronLeft } from "@fortawesome/free-solid-svg-icons";
|
import { faChevronLeft } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
||||||
const category = {
|
const category = {
|
||||||
1: "Web Development",
|
1: "WEB разработка",
|
||||||
2: "AI & Machine Learning",
|
2: "Linux и ПО",
|
||||||
9: "Other",
|
9: "Другие",
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
|
|
@ -55,14 +55,14 @@ export default function Page() {
|
||||||
</div>
|
</div>
|
||||||
<div className="z-10 w-full absolute md:w-auto md:left-[10%] top-[60%] md:top-1/3 col-span-2 flex flex-col justify-center items-start md:items-start text-start px-10 pt-4 backdrop-filter backdrop-blur-sm md:backdrop-blur-none md:backdrop-filter-none bg-gray-100 bg-opacity-50 md:bg-transparent md:pt-0">
|
<div className="z-10 w-full absolute md:w-auto md:left-[10%] top-[60%] md:top-1/3 col-span-2 flex flex-col justify-center items-start md:items-start text-start px-10 pt-4 backdrop-filter backdrop-blur-sm md:backdrop-blur-none md:backdrop-filter-none bg-gray-100 bg-opacity-50 md:bg-transparent md:pt-0">
|
||||||
<h1 className="md:bg-white bg-transparent lg:bg-transparent bg-opacity-50 md-px-0 text-black text-5xl md:text-8xl font-bold">
|
<h1 className="md:bg-white bg-transparent lg:bg-transparent bg-opacity-50 md-px-0 text-black text-5xl md:text-8xl font-bold">
|
||||||
My Projects
|
Проекты
|
||||||
</h1>
|
</h1>
|
||||||
<Hr />
|
<Hr />
|
||||||
<p className="title text-xl mt-4 tracking-wider text-gray-900 leading-[1.7rem] mb-5">
|
<p className="title text-xl mt-4 tracking-wider text-gray-900 leading-[1.7rem] mb-5">
|
||||||
List of my projects that I have done and{" "}
|
Некоторые из проектов с моим учаcтием{" "}
|
||||||
<span className="bg-transparent md:bg-gray-100 bg-opacity-50 xl:bg-transparent">
|
<span className="bg-transparent md:bg-gray-100 bg-opacity-50 xl:bg-transparent">
|
||||||
{" "}
|
{" "}
|
||||||
currently working on.
|
или под моим руководством.
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<motion.div
|
<motion.div
|
||||||
|
|
@ -76,14 +76,14 @@ export default function Page() {
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
className="mb-3">
|
className="mb-3">
|
||||||
<Button variation="primary">Scroll Down</Button>
|
<Button variation="primary">Прокрутить</Button>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-10 flex flex-col justify-start items-center w-full pl-10 md:pl-32">
|
<div className="mt-10 flex flex-col justify-start items-center w-full pl-10 md:pl-32">
|
||||||
<div className="flex justify-center items-center flex-col my-5 self-start ">
|
<div className="flex justify-center items-center flex-col my-5 self-start ">
|
||||||
<Hr variant="long"></Hr>
|
<Hr variant="long"></Hr>
|
||||||
<h1 className="text-3xl font-bold mt-3">Hightlight</h1>
|
<h1 className="text-3xl font-bold mt-3">Основное</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="relative w-screen mx-auto container gap-4 px-10 grid grid-cols-1 md:grid-cols-2 mb-10">
|
<div className="relative w-screen mx-auto container gap-4 px-10 grid grid-cols-1 md:grid-cols-2 mb-10">
|
||||||
|
|
@ -174,28 +174,28 @@ export default function Page() {
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
<h2 className="text-2xl font-bold tracking-wider mb-3">
|
<h2 className="text-2xl font-bold tracking-wider mb-3">
|
||||||
Intervyou AI
|
ОС ОСГОС
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-gray-600 text-justify title text-lg">
|
<p className="text-gray-600 text-justify title text-lg">
|
||||||
AI Based interview Preparation Website created to help fresh
|
Операционная система на ядре Debian linux актуальной версии.
|
||||||
graduates and job seekers prepare for interviews and optimize
|
Изначально разрабатывалась для одного из Государственных заказчиков.
|
||||||
their CV through AI-powered features. The website is built using
|
На данный момент проект построен на Debian 13, имеет собственные репозитории
|
||||||
Next.js, TypeScript, Tailwind CSS, Shadcn UI, Prisma, and MySQL
|
и магазин приложений, инфраструктуру технической поддержки. Проект поддерживается
|
||||||
(TiDB). This website can comprehensively analyze the user's
|
и активно развивается, обрастая собственными сервисами и ПО, несмотря на
|
||||||
interview performance by providing a analysis of the user's
|
высокую конкуренцию в данном серменте.
|
||||||
answer, gesture, and material recommendation to improve the user's
|
Разработано несколько вариантов дистрибутива, в том числе и специализированные версии.
|
||||||
interview skills.
|
Серверное направление выделено в отдельный продукт.
|
||||||
</p>{" "}
|
</p>{" "}
|
||||||
<div className="mt-3">
|
<div className="mt-3">
|
||||||
<Button variation="primary">
|
<Button variation="primary">
|
||||||
<Link href="projects/intervyou">More</Link>
|
<Link href="projects/intervyou">Больше</Link>
|
||||||
</Button>
|
</Button>
|
||||||
<Button variation="secondary">
|
<Button variation="secondary">
|
||||||
<a
|
<a
|
||||||
href="https://www.intervyou.me"
|
href="https://www.osgos.ru"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer">
|
rel="noopener noreferrer">
|
||||||
Preview
|
Просмотреть
|
||||||
</a>
|
</a>
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -218,7 +218,7 @@ export default function Page() {
|
||||||
delay: 0.7,
|
delay: 0.7,
|
||||||
type: "spring",
|
type: "spring",
|
||||||
}}>
|
}}>
|
||||||
Other Note Worthy Projects
|
Другие ключевые проекты
|
||||||
</motion.h1>
|
</motion.h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -272,7 +272,7 @@ export default function Page() {
|
||||||
}}
|
}}
|
||||||
className="flex justify-center items-center flex-col my-5 self-start ">
|
className="flex justify-center items-center flex-col my-5 self-start ">
|
||||||
<Button variation="primary">
|
<Button variation="primary">
|
||||||
<Link href="projects/archive">View In Archive</Link>
|
<Link href="projects/archive">Посмотреть все</Link>
|
||||||
</Button>
|
</Button>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</main>
|
</main>
|
||||||
|
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
// components/Intelliticks.js
|
|
||||||
"use client"
|
|
||||||
import { useEffect } from "react";
|
|
||||||
|
|
||||||
// Component for Intelliticks chat widget
|
|
||||||
const Chat = () => {
|
|
||||||
useEffect(() => {
|
|
||||||
// Paste the Intelliticks script here
|
|
||||||
(function (I, L, T, i, c, k, s) {
|
|
||||||
if (I.iticks) return;
|
|
||||||
I.iticks = { host: c, settings: s, clientId: k, cdn: L, queue: [] };
|
|
||||||
var h = T.head || T.documentElement;
|
|
||||||
var e = T.createElement(i);
|
|
||||||
var l = I.location;
|
|
||||||
e.async = true;
|
|
||||||
e.src = (L || c) + "/client/inject-v2.min.js";
|
|
||||||
h.insertBefore(e, h.firstChild);
|
|
||||||
I.iticks.call = function (a, b) {
|
|
||||||
I.iticks.queue.push([a, b]);
|
|
||||||
};
|
|
||||||
})(
|
|
||||||
window,
|
|
||||||
"https://cdn-v1.intelliticks.com/prod/common",
|
|
||||||
document,
|
|
||||||
"script",
|
|
||||||
"https://app.intelliticks.com",
|
|
||||||
"u3cWw3sDpdKexqXCY_c",
|
|
||||||
{}
|
|
||||||
);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Chat;
|
|
||||||
|
|
@ -23,7 +23,7 @@ export default function Footer() {
|
||||||
transition={{
|
transition={{
|
||||||
delay: 0.2,
|
delay: 0.2,
|
||||||
}}>
|
}}>
|
||||||
Want something like this?
|
Что-то заинтересовало?
|
||||||
</motion.h2>
|
</motion.h2>
|
||||||
<motion.h1
|
<motion.h1
|
||||||
className="text-5xl md:text-7xl font-medium mt-3 hover:underline whitespace-nowrap leading-none"
|
className="text-5xl md:text-7xl font-medium mt-3 hover:underline whitespace-nowrap leading-none"
|
||||||
|
|
@ -38,7 +38,7 @@ export default function Footer() {
|
||||||
transition={{
|
transition={{
|
||||||
delay: 0.5,
|
delay: 0.5,
|
||||||
}}>
|
}}>
|
||||||
Get In Touch{" "}
|
Связаться{" "}
|
||||||
<FontAwesomeIcon
|
<FontAwesomeIcon
|
||||||
icon={faArrowAltCircleRight}
|
icon={faArrowAltCircleRight}
|
||||||
className="text-5xl ml-2 "
|
className="text-5xl ml-2 "
|
||||||
|
|
@ -49,7 +49,7 @@ export default function Footer() {
|
||||||
<footer className="flex justify-center items-center flex-col my-5 self-start]">
|
<footer className="flex justify-center items-center flex-col my-5 self-start]">
|
||||||
<p className="text-gray-800 text-sm">
|
<p className="text-gray-800 text-sm">
|
||||||
©{new Date().getFullYear()} -{" "}
|
©{new Date().getFullYear()} -{" "}
|
||||||
<span className="text-gray-700 text-lg">Korobtsev</span>
|
<span className="text-gray-700 text-lg">Korobtsev.ru</span>
|
||||||
</p>
|
</p>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ const NavItems = ({ isNavOpen, setIsNavOpen }) => {
|
||||||
variants={itemVariants}
|
variants={itemVariants}
|
||||||
animate={isNavOpen ? "open" : "closed"}
|
animate={isNavOpen ? "open" : "closed"}
|
||||||
className="text-6xl font-bold text-white ">
|
className="text-6xl font-bold text-white ">
|
||||||
Menu
|
Меню
|
||||||
</motion.h1>
|
</motion.h1>
|
||||||
<Link href="/#home">
|
<Link href="/#home">
|
||||||
<div
|
<div
|
||||||
|
|
@ -128,7 +128,7 @@ const NavItems = ({ isNavOpen, setIsNavOpen }) => {
|
||||||
variants={itemVariants}
|
variants={itemVariants}
|
||||||
animate={isNavOpen ? "open" : "closed"}
|
animate={isNavOpen ? "open" : "closed"}
|
||||||
custom={0.1}>
|
custom={0.1}>
|
||||||
Home
|
Главная
|
||||||
</motion.h2>
|
</motion.h2>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -141,7 +141,7 @@ const NavItems = ({ isNavOpen, setIsNavOpen }) => {
|
||||||
variants={itemVariants}
|
variants={itemVariants}
|
||||||
animate={isNavOpen ? "open" : "closed"}
|
animate={isNavOpen ? "open" : "closed"}
|
||||||
custom={0.2}>
|
custom={0.2}>
|
||||||
About
|
Обо мне
|
||||||
</motion.h2>
|
</motion.h2>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -154,7 +154,7 @@ const NavItems = ({ isNavOpen, setIsNavOpen }) => {
|
||||||
variants={itemVariants}
|
variants={itemVariants}
|
||||||
animate={isNavOpen ? "open" : "closed"}
|
animate={isNavOpen ? "open" : "closed"}
|
||||||
custom={0.3}>
|
custom={0.3}>
|
||||||
Projects
|
Проекты
|
||||||
</motion.h2>
|
</motion.h2>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -167,7 +167,7 @@ const NavItems = ({ isNavOpen, setIsNavOpen }) => {
|
||||||
variants={itemVariants}
|
variants={itemVariants}
|
||||||
animate={isNavOpen ? "open" : "closed"}
|
animate={isNavOpen ? "open" : "closed"}
|
||||||
custom={0.4}>
|
custom={0.4}>
|
||||||
Contact
|
Контакты
|
||||||
</motion.h2>
|
</motion.h2>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -200,7 +200,7 @@ const Navbar = () => {
|
||||||
className={`text-2xl ml-2 md:ml-0 transition-colors ease duration-500 ${
|
className={`text-2xl ml-2 md:ml-0 transition-colors ease duration-500 ${
|
||||||
isNavOpen ? "text-white" : ""
|
isNavOpen ? "text-white" : ""
|
||||||
}`}>
|
}`}>
|
||||||
Korobtsev
|
Korobtsev.ru
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-row items-center">
|
<div className="flex flex-row items-center">
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,15 @@
|
||||||
"Projects": [
|
"Projects": [
|
||||||
{
|
{
|
||||||
"show": true,
|
"show": true,
|
||||||
"title": "Invervyou AI",
|
"title": "ОС ОСГОС",
|
||||||
"desc": [
|
"desc": [
|
||||||
"AI Based interview Preparation Website created to help fresh graduates and job seekers prepare for interviews and optimize their CV through AI-powered features. The website is built using Next.js, TypeScript, Tailwind CSS, Shadcn UI, Prisma, and MySQL (TiDB).",
|
"Операционная система Основная Составляющая Гибридной Офисной Системы - ОС ОСГОС, построена на ядре Debian linux актуальной версии. Является десктопной операционной системой общего назначения для использования до уровня секретности КС-4. Имеет свидетельство о Государственной регистрации. Изначально ОС разрабатывалась для одного из Государственных заказчиков.",
|
||||||
"The website has a few features such as a dashboard for the user to see their interview preparation progress, a CV analysis and optimization feature, and a few AI-powered interview questions that can be answered by the user which will be analyzed by the AI to provide feedback. The analysis contains the answer analysis, the gesture analysis, and a material recommendation to improve the user's performance.",
|
"ОС имеет собственные репозитории и магазин приложений, инфраструктуру технической поддержки. Проект поддерживается и активно развивается, обрастая собственными сервисами и ПО. Разработано несколько вариантов дистрибутива, в том числе и специализированные версии.",
|
||||||
"The website also has a token mechanism that allows the user to purchase tokens to access the AI-powered features. Integrated with Indonesian payment gateway (Midtrans) to allow users to purchase tokens easily."
|
"Основной упор при разработке был сделан на легкую интеграцию в существующую инфраструктуру, построенную на технологиях Microsoft. В результате ОС может бесшовно интегрироваться в гибридную экосистему без потери предоставляемого ей функционала. ОС может работать как в открытом, так и в полностью замкнутом стетевом периметре, обращаясь к локальным серверам обновления. Для поддержки ОС созданы все необходимые сервисы и дополнительное ПО, как на базе Open-Sourse продуктов, так и разработанное с нуля.",
|
||||||
|
"Второй целью являлась простота перехода Пользователя на ОС ОСГОС с других операционных систем и нетребовательность к железу. По результатам тестирования - все поставленные цели были достигнуты."
|
||||||
],
|
],
|
||||||
"year": "2025",
|
"year": "2022-Текущий",
|
||||||
"preview": "https://www.intervyou.me",
|
"preview": "https://osgos.ru",
|
||||||
"code": "",
|
"code": "",
|
||||||
"thumbnail": "/image/projects/web/intervyou/intervyou-thumbnail.jpg",
|
"thumbnail": "/image/projects/web/intervyou/intervyou-thumbnail.jpg",
|
||||||
"images": [
|
"images": [
|
||||||
|
|
@ -20,15 +21,16 @@
|
||||||
"/image/projects/web/intervyou/intervyou-5.png"
|
"/image/projects/web/intervyou/intervyou-5.png"
|
||||||
],
|
],
|
||||||
"tech": [
|
"tech": [
|
||||||
"NextJS",
|
"C",
|
||||||
"Typescript",
|
"C#",
|
||||||
"Shadcn UI",
|
"Bash",
|
||||||
"Tailwind CSS",
|
"Go",
|
||||||
"Prisma",
|
"Python",
|
||||||
"MySQL",
|
"Web Dev",
|
||||||
"Midtrans",
|
"Database",
|
||||||
"Gemini API",
|
"Руководство",
|
||||||
"GCP"
|
"Архитектура",
|
||||||
|
"Инфраструктура"
|
||||||
],
|
],
|
||||||
"slug": "intervyou",
|
"slug": "intervyou",
|
||||||
"category": [1, 2]
|
"category": [1, 2]
|
||||||
|
|
|
||||||
340
pnpm-lock.yaml
generated
|
|
@ -9,35 +9,35 @@ importers:
|
||||||
.:
|
.:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@fortawesome/fontawesome-svg-core':
|
'@fortawesome/fontawesome-svg-core':
|
||||||
specifier: ^7.0.0
|
specifier: ^7.0.1
|
||||||
version: 7.0.0
|
version: 7.0.1
|
||||||
'@fortawesome/free-brands-svg-icons':
|
'@fortawesome/free-brands-svg-icons':
|
||||||
specifier: ^7.0.0
|
specifier: ^7.0.1
|
||||||
version: 7.0.0
|
version: 7.0.1
|
||||||
'@fortawesome/free-regular-svg-icons':
|
'@fortawesome/free-regular-svg-icons':
|
||||||
specifier: ^7.0.0
|
specifier: ^7.0.1
|
||||||
version: 7.0.0
|
version: 7.0.1
|
||||||
'@fortawesome/free-solid-svg-icons':
|
'@fortawesome/free-solid-svg-icons':
|
||||||
specifier: ^7.0.0
|
specifier: ^7.0.1
|
||||||
version: 7.0.0
|
version: 7.0.1
|
||||||
'@fortawesome/react-fontawesome':
|
'@fortawesome/react-fontawesome':
|
||||||
specifier: ^0.2.3
|
specifier: ^0.2.6
|
||||||
version: 0.2.3(@fortawesome/fontawesome-svg-core@7.0.0)(react@19.1.1)
|
version: 0.2.6(@fortawesome/fontawesome-svg-core@7.0.1)(react@19.1.1)
|
||||||
'@fullpage/react-fullpage':
|
'@fullpage/react-fullpage':
|
||||||
specifier: ^0.1.49
|
specifier: ^0.1.49
|
||||||
version: 0.1.49
|
version: 0.1.49
|
||||||
'@tailwindcss/postcss':
|
'@tailwindcss/postcss':
|
||||||
specifier: ^4.1.11
|
specifier: ^4.1.13
|
||||||
version: 4.1.11
|
version: 4.1.13
|
||||||
'@vercel/analytics':
|
'@vercel/analytics':
|
||||||
specifier: ^1.5.0
|
specifier: ^1.5.0
|
||||||
version: 1.5.0(next@15.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)
|
version: 1.5.0(next@15.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)
|
||||||
eslint:
|
eslint:
|
||||||
specifier: 9.33.0
|
specifier: 9.33.0
|
||||||
version: 9.33.0(jiti@2.4.2)
|
version: 9.33.0(jiti@2.5.1)
|
||||||
eslint-config-next:
|
eslint-config-next:
|
||||||
specifier: 15.4.6
|
specifier: 15.4.6
|
||||||
version: 15.4.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)
|
version: 15.4.6(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)
|
||||||
framer-motion:
|
framer-motion:
|
||||||
specifier: ^12.23.12
|
specifier: ^12.23.12
|
||||||
version: 12.23.12(@emotion/is-prop-valid@0.8.8)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
|
version: 12.23.12(@emotion/is-prop-valid@0.8.8)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
|
||||||
|
|
@ -88,10 +88,6 @@ packages:
|
||||||
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
|
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
'@ampproject/remapping@2.3.0':
|
|
||||||
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
|
|
||||||
engines: {node: '>=6.0.0'}
|
|
||||||
|
|
||||||
'@babel/polyfill@7.12.1':
|
'@babel/polyfill@7.12.1':
|
||||||
resolution: {integrity: sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==}
|
resolution: {integrity: sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==}
|
||||||
deprecated: 🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.
|
deprecated: 🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.
|
||||||
|
|
@ -159,28 +155,28 @@ packages:
|
||||||
resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==}
|
resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@fortawesome/fontawesome-common-types@7.0.0':
|
'@fortawesome/fontawesome-common-types@7.0.1':
|
||||||
resolution: {integrity: sha512-PGMrIYXLGA5K8RWy8zwBkd4vFi4z7ubxtet6Yn13Plf6krRTwPbdlCwlcfmoX0R7B4Z643QvrtHmdQ5fNtfFCg==}
|
resolution: {integrity: sha512-0VpNtO5cNe1/HQWMkl4OdncYK/mv9hnBte0Ew0n6DMzmo3Q3WzDFABHm6LeNTipt5zAyhQ6Ugjiu8aLaEjh1gg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
'@fortawesome/fontawesome-svg-core@7.0.0':
|
'@fortawesome/fontawesome-svg-core@7.0.1':
|
||||||
resolution: {integrity: sha512-obBEF+zd98r/KtKVW6A+8UGWeaOoyMpl6Q9P3FzHsOnsg742aXsl8v+H/zp09qSSu/a/Hxe9LNKzbBaQq1CEbA==}
|
resolution: {integrity: sha512-x0cR55ILVqFpUioSMf6ebpRCMXMcheGN743P05W2RB5uCNpJUqWIqW66Lap8PfL/lngvjTbZj0BNSUweIr/fHQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
'@fortawesome/free-brands-svg-icons@7.0.0':
|
'@fortawesome/free-brands-svg-icons@7.0.1':
|
||||||
resolution: {integrity: sha512-C8oY28gq/Qx/cHReJa2AunKJUHvUZDVoPlSTHtAvjriaNfi+5nugW4cx7yA/xN3f/nYkElw11gFBoJ2xUDDFgg==}
|
resolution: {integrity: sha512-6xPmn5SrND/GM0+W33E77x05+aDn6RpR02eWd8eLdN0IxY0vXa5yU/ugaAKloOVxiG9w2330TSRsbJYL6c57Ow==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
'@fortawesome/free-regular-svg-icons@7.0.0':
|
'@fortawesome/free-regular-svg-icons@7.0.1':
|
||||||
resolution: {integrity: sha512-qAh0mTaCY22sQzMK2lKBrtn/aR4keUu5XmtdYR7d702laMe0h+Ab4Kj2pExR9HZkKhjKoq8pbwt8Td+mjW/ipQ==}
|
resolution: {integrity: sha512-4V9fHbHjcx9Qu4O99AM5B4zuEDfB4zajk1I77hEzOxPN00f8g3484Aeq6WpfFcmookvjLE3Pr71Dhf/lqw7tbA==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
'@fortawesome/free-solid-svg-icons@7.0.0':
|
'@fortawesome/free-solid-svg-icons@7.0.1':
|
||||||
resolution: {integrity: sha512-njSLAllkOddYDCXgTFboXn54Oe5FcvpkWq+FoetOHR64PbN0608kM02Lze0xtISGpXgP+i26VyXRQA0Irh3Obw==}
|
resolution: {integrity: sha512-esKuSrl1WMOTMDLNt38i16VfLe/gRZt2ZAJ3Yw7slfs7sj583MKqNFqO57zmhknk1Sya6f9Wys89aCzIJkcqlg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
'@fortawesome/react-fontawesome@0.2.3':
|
'@fortawesome/react-fontawesome@0.2.6':
|
||||||
resolution: {integrity: sha512-HlJco8RDY8NrzFVjy23b/7mNS4g9NegcrBG3n7jinwpc2x/AmSVk53IhWniLYM4szYLxRAFTAGwGn0EIlclDeQ==}
|
resolution: {integrity: sha512-mtBFIi1UsYQo7rYonYFkjgYKGoL8T+fEH6NGUpvuqtY3ytMsAoDaPo5rk25KuMtKDipY4bGYM/CkmCHA1N3FUg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@fortawesome/fontawesome-svg-core': ~1 || ~6 || ~7
|
'@fortawesome/fontawesome-svg-core': ~1 || ~6 || ~7
|
||||||
react: ^16.3 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
react: ^16.3 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
|
@ -337,6 +333,9 @@ packages:
|
||||||
'@jridgewell/gen-mapping@0.3.13':
|
'@jridgewell/gen-mapping@0.3.13':
|
||||||
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
|
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
|
||||||
|
|
||||||
|
'@jridgewell/remapping@2.3.5':
|
||||||
|
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
|
||||||
|
|
||||||
'@jridgewell/resolve-uri@3.1.2':
|
'@jridgewell/resolve-uri@3.1.2':
|
||||||
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
|
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
|
||||||
engines: {node: '>=6.0.0'}
|
engines: {node: '>=6.0.0'}
|
||||||
|
|
@ -435,65 +434,65 @@ packages:
|
||||||
'@swc/helpers@0.5.15':
|
'@swc/helpers@0.5.15':
|
||||||
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
|
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
|
||||||
|
|
||||||
'@tailwindcss/node@4.1.11':
|
'@tailwindcss/node@4.1.13':
|
||||||
resolution: {integrity: sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==}
|
resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==}
|
||||||
|
|
||||||
'@tailwindcss/oxide-android-arm64@4.1.11':
|
'@tailwindcss/oxide-android-arm64@4.1.13':
|
||||||
resolution: {integrity: sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==}
|
resolution: {integrity: sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [android]
|
os: [android]
|
||||||
|
|
||||||
'@tailwindcss/oxide-darwin-arm64@4.1.11':
|
'@tailwindcss/oxide-darwin-arm64@4.1.13':
|
||||||
resolution: {integrity: sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==}
|
resolution: {integrity: sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@tailwindcss/oxide-darwin-x64@4.1.11':
|
'@tailwindcss/oxide-darwin-x64@4.1.13':
|
||||||
resolution: {integrity: sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==}
|
resolution: {integrity: sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@tailwindcss/oxide-freebsd-x64@4.1.11':
|
'@tailwindcss/oxide-freebsd-x64@4.1.13':
|
||||||
resolution: {integrity: sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==}
|
resolution: {integrity: sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [freebsd]
|
os: [freebsd]
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11':
|
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13':
|
||||||
resolution: {integrity: sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==}
|
resolution: {integrity: sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-arm64-gnu@4.1.11':
|
'@tailwindcss/oxide-linux-arm64-gnu@4.1.13':
|
||||||
resolution: {integrity: sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==}
|
resolution: {integrity: sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-arm64-musl@4.1.11':
|
'@tailwindcss/oxide-linux-arm64-musl@4.1.13':
|
||||||
resolution: {integrity: sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==}
|
resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-x64-gnu@4.1.11':
|
'@tailwindcss/oxide-linux-x64-gnu@4.1.13':
|
||||||
resolution: {integrity: sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==}
|
resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-x64-musl@4.1.11':
|
'@tailwindcss/oxide-linux-x64-musl@4.1.13':
|
||||||
resolution: {integrity: sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==}
|
resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@tailwindcss/oxide-wasm32-wasi@4.1.11':
|
'@tailwindcss/oxide-wasm32-wasi@4.1.13':
|
||||||
resolution: {integrity: sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==}
|
resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
cpu: [wasm32]
|
cpu: [wasm32]
|
||||||
bundledDependencies:
|
bundledDependencies:
|
||||||
|
|
@ -504,24 +503,24 @@ packages:
|
||||||
- '@emnapi/wasi-threads'
|
- '@emnapi/wasi-threads'
|
||||||
- tslib
|
- tslib
|
||||||
|
|
||||||
'@tailwindcss/oxide-win32-arm64-msvc@4.1.11':
|
'@tailwindcss/oxide-win32-arm64-msvc@4.1.13':
|
||||||
resolution: {integrity: sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==}
|
resolution: {integrity: sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@tailwindcss/oxide-win32-x64-msvc@4.1.11':
|
'@tailwindcss/oxide-win32-x64-msvc@4.1.13':
|
||||||
resolution: {integrity: sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==}
|
resolution: {integrity: sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@tailwindcss/oxide@4.1.11':
|
'@tailwindcss/oxide@4.1.13':
|
||||||
resolution: {integrity: sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==}
|
resolution: {integrity: sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
|
|
||||||
'@tailwindcss/postcss@4.1.11':
|
'@tailwindcss/postcss@4.1.13':
|
||||||
resolution: {integrity: sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==}
|
resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==}
|
||||||
|
|
||||||
'@tybys/wasm-util@0.9.0':
|
'@tybys/wasm-util@0.9.0':
|
||||||
resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
|
resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
|
||||||
|
|
@ -889,10 +888,6 @@ packages:
|
||||||
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
|
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
detect-libc@2.0.3:
|
|
||||||
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
|
|
||||||
engines: {node: '>=8'}
|
|
||||||
|
|
||||||
detect-libc@2.0.4:
|
detect-libc@2.0.4:
|
||||||
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
|
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
@ -911,8 +906,8 @@ packages:
|
||||||
emoji-regex@9.2.2:
|
emoji-regex@9.2.2:
|
||||||
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
||||||
|
|
||||||
enhanced-resolve@5.18.1:
|
enhanced-resolve@5.18.3:
|
||||||
resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
|
resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
|
||||||
engines: {node: '>=10.13.0'}
|
engines: {node: '>=10.13.0'}
|
||||||
|
|
||||||
es-abstract@1.23.9:
|
es-abstract@1.23.9:
|
||||||
|
|
@ -1356,8 +1351,8 @@ packages:
|
||||||
resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
|
resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
jiti@2.4.2:
|
jiti@2.5.1:
|
||||||
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
|
resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
js-tokens@4.0.0:
|
js-tokens@4.0.0:
|
||||||
|
|
@ -1473,8 +1468,8 @@ packages:
|
||||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
magic-string@0.30.17:
|
magic-string@0.30.19:
|
||||||
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
|
resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==}
|
||||||
|
|
||||||
math-intrinsics@1.1.0:
|
math-intrinsics@1.1.0:
|
||||||
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
|
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
|
||||||
|
|
@ -1866,6 +1861,9 @@ packages:
|
||||||
tailwindcss@4.1.11:
|
tailwindcss@4.1.11:
|
||||||
resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==}
|
resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==}
|
||||||
|
|
||||||
|
tailwindcss@4.1.13:
|
||||||
|
resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==}
|
||||||
|
|
||||||
tapable@2.2.1:
|
tapable@2.2.1:
|
||||||
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
|
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
@ -1989,11 +1987,6 @@ snapshots:
|
||||||
|
|
||||||
'@alloc/quick-lru@5.2.0': {}
|
'@alloc/quick-lru@5.2.0': {}
|
||||||
|
|
||||||
'@ampproject/remapping@2.3.0':
|
|
||||||
dependencies:
|
|
||||||
'@jridgewell/gen-mapping': 0.3.13
|
|
||||||
'@jridgewell/trace-mapping': 0.3.30
|
|
||||||
|
|
||||||
'@babel/polyfill@7.12.1':
|
'@babel/polyfill@7.12.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
core-js: 2.6.12
|
core-js: 2.6.12
|
||||||
|
|
@ -2032,9 +2025,9 @@ snapshots:
|
||||||
|
|
||||||
'@epic-web/invariant@1.0.0': {}
|
'@epic-web/invariant@1.0.0': {}
|
||||||
|
|
||||||
'@eslint-community/eslint-utils@4.5.1(eslint@9.33.0(jiti@2.4.2))':
|
'@eslint-community/eslint-utils@4.5.1(eslint@9.33.0(jiti@2.5.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
eslint-visitor-keys: 3.4.3
|
eslint-visitor-keys: 3.4.3
|
||||||
|
|
||||||
'@eslint-community/regexpp@4.12.1': {}
|
'@eslint-community/regexpp@4.12.1': {}
|
||||||
|
|
@ -2076,27 +2069,27 @@ snapshots:
|
||||||
'@eslint/core': 0.15.2
|
'@eslint/core': 0.15.2
|
||||||
levn: 0.4.1
|
levn: 0.4.1
|
||||||
|
|
||||||
'@fortawesome/fontawesome-common-types@7.0.0': {}
|
'@fortawesome/fontawesome-common-types@7.0.1': {}
|
||||||
|
|
||||||
'@fortawesome/fontawesome-svg-core@7.0.0':
|
'@fortawesome/fontawesome-svg-core@7.0.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@fortawesome/fontawesome-common-types': 7.0.0
|
'@fortawesome/fontawesome-common-types': 7.0.1
|
||||||
|
|
||||||
'@fortawesome/free-brands-svg-icons@7.0.0':
|
'@fortawesome/free-brands-svg-icons@7.0.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@fortawesome/fontawesome-common-types': 7.0.0
|
'@fortawesome/fontawesome-common-types': 7.0.1
|
||||||
|
|
||||||
'@fortawesome/free-regular-svg-icons@7.0.0':
|
'@fortawesome/free-regular-svg-icons@7.0.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@fortawesome/fontawesome-common-types': 7.0.0
|
'@fortawesome/fontawesome-common-types': 7.0.1
|
||||||
|
|
||||||
'@fortawesome/free-solid-svg-icons@7.0.0':
|
'@fortawesome/free-solid-svg-icons@7.0.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@fortawesome/fontawesome-common-types': 7.0.0
|
'@fortawesome/fontawesome-common-types': 7.0.1
|
||||||
|
|
||||||
'@fortawesome/react-fontawesome@0.2.3(@fortawesome/fontawesome-svg-core@7.0.0)(react@19.1.1)':
|
'@fortawesome/react-fontawesome@0.2.6(@fortawesome/fontawesome-svg-core@7.0.1)(react@19.1.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@fortawesome/fontawesome-svg-core': 7.0.0
|
'@fortawesome/fontawesome-svg-core': 7.0.1
|
||||||
prop-types: 15.8.1
|
prop-types: 15.8.1
|
||||||
react: 19.1.1
|
react: 19.1.1
|
||||||
|
|
||||||
|
|
@ -2213,6 +2206,11 @@ snapshots:
|
||||||
'@jridgewell/sourcemap-codec': 1.5.5
|
'@jridgewell/sourcemap-codec': 1.5.5
|
||||||
'@jridgewell/trace-mapping': 0.3.30
|
'@jridgewell/trace-mapping': 0.3.30
|
||||||
|
|
||||||
|
'@jridgewell/remapping@2.3.5':
|
||||||
|
dependencies:
|
||||||
|
'@jridgewell/gen-mapping': 0.3.13
|
||||||
|
'@jridgewell/trace-mapping': 0.3.30
|
||||||
|
|
||||||
'@jridgewell/resolve-uri@3.1.2': {}
|
'@jridgewell/resolve-uri@3.1.2': {}
|
||||||
|
|
||||||
'@jridgewell/sourcemap-codec@1.5.5': {}
|
'@jridgewell/sourcemap-codec@1.5.5': {}
|
||||||
|
|
@ -2290,77 +2288,77 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
'@tailwindcss/node@4.1.11':
|
'@tailwindcss/node@4.1.13':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@ampproject/remapping': 2.3.0
|
'@jridgewell/remapping': 2.3.5
|
||||||
enhanced-resolve: 5.18.1
|
enhanced-resolve: 5.18.3
|
||||||
jiti: 2.4.2
|
jiti: 2.5.1
|
||||||
lightningcss: 1.30.1
|
lightningcss: 1.30.1
|
||||||
magic-string: 0.30.17
|
magic-string: 0.30.19
|
||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
tailwindcss: 4.1.11
|
tailwindcss: 4.1.13
|
||||||
|
|
||||||
'@tailwindcss/oxide-android-arm64@4.1.11':
|
'@tailwindcss/oxide-android-arm64@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-darwin-arm64@4.1.11':
|
'@tailwindcss/oxide-darwin-arm64@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-darwin-x64@4.1.11':
|
'@tailwindcss/oxide-darwin-x64@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-freebsd-x64@4.1.11':
|
'@tailwindcss/oxide-freebsd-x64@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11':
|
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-arm64-gnu@4.1.11':
|
'@tailwindcss/oxide-linux-arm64-gnu@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-arm64-musl@4.1.11':
|
'@tailwindcss/oxide-linux-arm64-musl@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-x64-gnu@4.1.11':
|
'@tailwindcss/oxide-linux-x64-gnu@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-x64-musl@4.1.11':
|
'@tailwindcss/oxide-linux-x64-musl@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-wasm32-wasi@4.1.11':
|
'@tailwindcss/oxide-wasm32-wasi@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-win32-arm64-msvc@4.1.11':
|
'@tailwindcss/oxide-win32-arm64-msvc@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide-win32-x64-msvc@4.1.11':
|
'@tailwindcss/oxide-win32-x64-msvc@4.1.13':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tailwindcss/oxide@4.1.11':
|
'@tailwindcss/oxide@4.1.13':
|
||||||
dependencies:
|
dependencies:
|
||||||
detect-libc: 2.0.4
|
detect-libc: 2.0.4
|
||||||
tar: 7.4.3
|
tar: 7.4.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@tailwindcss/oxide-android-arm64': 4.1.11
|
'@tailwindcss/oxide-android-arm64': 4.1.13
|
||||||
'@tailwindcss/oxide-darwin-arm64': 4.1.11
|
'@tailwindcss/oxide-darwin-arm64': 4.1.13
|
||||||
'@tailwindcss/oxide-darwin-x64': 4.1.11
|
'@tailwindcss/oxide-darwin-x64': 4.1.13
|
||||||
'@tailwindcss/oxide-freebsd-x64': 4.1.11
|
'@tailwindcss/oxide-freebsd-x64': 4.1.13
|
||||||
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.11
|
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.13
|
||||||
'@tailwindcss/oxide-linux-arm64-gnu': 4.1.11
|
'@tailwindcss/oxide-linux-arm64-gnu': 4.1.13
|
||||||
'@tailwindcss/oxide-linux-arm64-musl': 4.1.11
|
'@tailwindcss/oxide-linux-arm64-musl': 4.1.13
|
||||||
'@tailwindcss/oxide-linux-x64-gnu': 4.1.11
|
'@tailwindcss/oxide-linux-x64-gnu': 4.1.13
|
||||||
'@tailwindcss/oxide-linux-x64-musl': 4.1.11
|
'@tailwindcss/oxide-linux-x64-musl': 4.1.13
|
||||||
'@tailwindcss/oxide-wasm32-wasi': 4.1.11
|
'@tailwindcss/oxide-wasm32-wasi': 4.1.13
|
||||||
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.11
|
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.13
|
||||||
'@tailwindcss/oxide-win32-x64-msvc': 4.1.11
|
'@tailwindcss/oxide-win32-x64-msvc': 4.1.13
|
||||||
|
|
||||||
'@tailwindcss/postcss@4.1.11':
|
'@tailwindcss/postcss@4.1.13':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@alloc/quick-lru': 5.2.0
|
'@alloc/quick-lru': 5.2.0
|
||||||
'@tailwindcss/node': 4.1.11
|
'@tailwindcss/node': 4.1.13
|
||||||
'@tailwindcss/oxide': 4.1.11
|
'@tailwindcss/oxide': 4.1.13
|
||||||
postcss: 8.5.6
|
postcss: 8.5.6
|
||||||
tailwindcss: 4.1.11
|
tailwindcss: 4.1.13
|
||||||
|
|
||||||
'@tybys/wasm-util@0.9.0':
|
'@tybys/wasm-util@0.9.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -2383,15 +2381,15 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 17.0.45
|
'@types/node': 17.0.45
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)':
|
'@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.12.1
|
'@eslint-community/regexpp': 4.12.1
|
||||||
'@typescript-eslint/parser': 8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)
|
'@typescript-eslint/parser': 8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)
|
||||||
'@typescript-eslint/scope-manager': 8.26.1
|
'@typescript-eslint/scope-manager': 8.26.1
|
||||||
'@typescript-eslint/type-utils': 8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)
|
'@typescript-eslint/type-utils': 8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)
|
||||||
'@typescript-eslint/utils': 8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)
|
'@typescript-eslint/utils': 8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)
|
||||||
'@typescript-eslint/visitor-keys': 8.26.1
|
'@typescript-eslint/visitor-keys': 8.26.1
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
graphemer: 1.4.0
|
graphemer: 1.4.0
|
||||||
ignore: 5.3.2
|
ignore: 5.3.2
|
||||||
natural-compare: 1.4.0
|
natural-compare: 1.4.0
|
||||||
|
|
@ -2400,14 +2398,14 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)':
|
'@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 8.26.1
|
'@typescript-eslint/scope-manager': 8.26.1
|
||||||
'@typescript-eslint/types': 8.26.1
|
'@typescript-eslint/types': 8.26.1
|
||||||
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.2.2)
|
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.2.2)
|
||||||
'@typescript-eslint/visitor-keys': 8.26.1
|
'@typescript-eslint/visitor-keys': 8.26.1
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
typescript: 5.2.2
|
typescript: 5.2.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
@ -2417,12 +2415,12 @@ snapshots:
|
||||||
'@typescript-eslint/types': 8.26.1
|
'@typescript-eslint/types': 8.26.1
|
||||||
'@typescript-eslint/visitor-keys': 8.26.1
|
'@typescript-eslint/visitor-keys': 8.26.1
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)':
|
'@typescript-eslint/type-utils@8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.2.2)
|
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.2.2)
|
||||||
'@typescript-eslint/utils': 8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)
|
'@typescript-eslint/utils': 8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
ts-api-utils: 2.0.1(typescript@5.2.2)
|
ts-api-utils: 2.0.1(typescript@5.2.2)
|
||||||
typescript: 5.2.2
|
typescript: 5.2.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
|
@ -2444,13 +2442,13 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)':
|
'@typescript-eslint/utils@8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.5.1(eslint@9.33.0(jiti@2.4.2))
|
'@eslint-community/eslint-utils': 4.5.1(eslint@9.33.0(jiti@2.5.1))
|
||||||
'@typescript-eslint/scope-manager': 8.26.1
|
'@typescript-eslint/scope-manager': 8.26.1
|
||||||
'@typescript-eslint/types': 8.26.1
|
'@typescript-eslint/types': 8.26.1
|
||||||
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.2.2)
|
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.2.2)
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
typescript: 5.2.2
|
typescript: 5.2.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
@ -2732,8 +2730,6 @@ snapshots:
|
||||||
|
|
||||||
dequal@2.0.3: {}
|
dequal@2.0.3: {}
|
||||||
|
|
||||||
detect-libc@2.0.3: {}
|
|
||||||
|
|
||||||
detect-libc@2.0.4: {}
|
detect-libc@2.0.4: {}
|
||||||
|
|
||||||
doctrine@2.1.0:
|
doctrine@2.1.0:
|
||||||
|
|
@ -2750,7 +2746,7 @@ snapshots:
|
||||||
|
|
||||||
emoji-regex@9.2.2: {}
|
emoji-regex@9.2.2: {}
|
||||||
|
|
||||||
enhanced-resolve@5.18.1:
|
enhanced-resolve@5.18.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
tapable: 2.2.1
|
tapable: 2.2.1
|
||||||
|
|
@ -2855,19 +2851,19 @@ snapshots:
|
||||||
|
|
||||||
escape-string-regexp@4.0.0: {}
|
escape-string-regexp@4.0.0: {}
|
||||||
|
|
||||||
eslint-config-next@15.4.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2):
|
eslint-config-next@15.4.6(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/eslint-plugin-next': 15.4.6
|
'@next/eslint-plugin-next': 15.4.6
|
||||||
'@rushstack/eslint-patch': 1.11.0
|
'@rushstack/eslint-patch': 1.11.0
|
||||||
'@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)
|
'@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)
|
||||||
'@typescript-eslint/parser': 8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)
|
'@typescript-eslint/parser': 8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.31.0)(eslint@9.33.0(jiti@2.4.2))
|
eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.31.0)(eslint@9.33.0(jiti@2.5.1))
|
||||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.33.0(jiti@2.4.2))
|
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.33.0(jiti@2.5.1))
|
||||||
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.33.0(jiti@2.4.2))
|
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.33.0(jiti@2.5.1))
|
||||||
eslint-plugin-react: 7.37.4(eslint@9.33.0(jiti@2.4.2))
|
eslint-plugin-react: 7.37.4(eslint@9.33.0(jiti@2.5.1))
|
||||||
eslint-plugin-react-hooks: 5.2.0(eslint@9.33.0(jiti@2.4.2))
|
eslint-plugin-react-hooks: 5.2.0(eslint@9.33.0(jiti@2.5.1))
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.2.2
|
typescript: 5.2.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
|
@ -2883,33 +2879,33 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-import-resolver-typescript@3.9.1(eslint-plugin-import@2.31.0)(eslint@9.33.0(jiti@2.4.2)):
|
eslint-import-resolver-typescript@3.9.1(eslint-plugin-import@2.31.0)(eslint@9.33.0(jiti@2.5.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nolyfill/is-core-module': 1.0.39
|
'@nolyfill/is-core-module': 1.0.39
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
get-tsconfig: 4.10.0
|
get-tsconfig: 4.10.0
|
||||||
is-bun-module: 1.3.0
|
is-bun-module: 1.3.0
|
||||||
rspack-resolver: 1.1.2
|
rspack-resolver: 1.1.2
|
||||||
stable-hash: 0.0.5
|
stable-hash: 0.0.5
|
||||||
tinyglobby: 0.2.12
|
tinyglobby: 0.2.12
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.33.0(jiti@2.4.2))
|
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.33.0(jiti@2.5.1))
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.1)(eslint@9.33.0(jiti@2.4.2)):
|
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.1)(eslint@9.33.0(jiti@2.5.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/parser': 8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)
|
'@typescript-eslint/parser': 8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.31.0)(eslint@9.33.0(jiti@2.4.2))
|
eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.31.0)(eslint@9.33.0(jiti@2.5.1))
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.33.0(jiti@2.4.2)):
|
eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2))(eslint-import-resolver-typescript@3.9.1)(eslint@9.33.0(jiti@2.5.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rtsao/scc': 1.1.0
|
'@rtsao/scc': 1.1.0
|
||||||
array-includes: 3.1.8
|
array-includes: 3.1.8
|
||||||
|
|
@ -2918,9 +2914,9 @@ snapshots:
|
||||||
array.prototype.flatmap: 1.3.3
|
array.prototype.flatmap: 1.3.3
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.1)(eslint@9.33.0(jiti@2.4.2))
|
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.1)(eslint@9.33.0(jiti@2.5.1))
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
is-core-module: 2.16.1
|
is-core-module: 2.16.1
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
|
|
@ -2932,13 +2928,13 @@ snapshots:
|
||||||
string.prototype.trimend: 1.0.9
|
string.prototype.trimend: 1.0.9
|
||||||
tsconfig-paths: 3.15.0
|
tsconfig-paths: 3.15.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/parser': 8.26.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.2.2)
|
'@typescript-eslint/parser': 8.26.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.2.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- eslint-import-resolver-typescript
|
- eslint-import-resolver-typescript
|
||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-jsx-a11y@6.10.2(eslint@9.33.0(jiti@2.4.2)):
|
eslint-plugin-jsx-a11y@6.10.2(eslint@9.33.0(jiti@2.5.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
aria-query: 5.3.2
|
aria-query: 5.3.2
|
||||||
array-includes: 3.1.8
|
array-includes: 3.1.8
|
||||||
|
|
@ -2948,7 +2944,7 @@ snapshots:
|
||||||
axobject-query: 4.1.0
|
axobject-query: 4.1.0
|
||||||
damerau-levenshtein: 1.0.8
|
damerau-levenshtein: 1.0.8
|
||||||
emoji-regex: 9.2.2
|
emoji-regex: 9.2.2
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
jsx-ast-utils: 3.3.5
|
jsx-ast-utils: 3.3.5
|
||||||
language-tags: 1.0.9
|
language-tags: 1.0.9
|
||||||
|
|
@ -2957,11 +2953,11 @@ snapshots:
|
||||||
safe-regex-test: 1.1.0
|
safe-regex-test: 1.1.0
|
||||||
string.prototype.includes: 2.0.1
|
string.prototype.includes: 2.0.1
|
||||||
|
|
||||||
eslint-plugin-react-hooks@5.2.0(eslint@9.33.0(jiti@2.4.2)):
|
eslint-plugin-react-hooks@5.2.0(eslint@9.33.0(jiti@2.5.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
|
|
||||||
eslint-plugin-react@7.37.4(eslint@9.33.0(jiti@2.4.2)):
|
eslint-plugin-react@7.37.4(eslint@9.33.0(jiti@2.5.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
array-includes: 3.1.8
|
array-includes: 3.1.8
|
||||||
array.prototype.findlast: 1.2.5
|
array.prototype.findlast: 1.2.5
|
||||||
|
|
@ -2969,7 +2965,7 @@ snapshots:
|
||||||
array.prototype.tosorted: 1.1.4
|
array.prototype.tosorted: 1.1.4
|
||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
es-iterator-helpers: 1.2.1
|
es-iterator-helpers: 1.2.1
|
||||||
eslint: 9.33.0(jiti@2.4.2)
|
eslint: 9.33.0(jiti@2.5.1)
|
||||||
estraverse: 5.3.0
|
estraverse: 5.3.0
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
jsx-ast-utils: 3.3.5
|
jsx-ast-utils: 3.3.5
|
||||||
|
|
@ -2994,9 +2990,9 @@ snapshots:
|
||||||
|
|
||||||
eslint-visitor-keys@4.2.1: {}
|
eslint-visitor-keys@4.2.1: {}
|
||||||
|
|
||||||
eslint@9.33.0(jiti@2.4.2):
|
eslint@9.33.0(jiti@2.5.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.5.1(eslint@9.33.0(jiti@2.4.2))
|
'@eslint-community/eslint-utils': 4.5.1(eslint@9.33.0(jiti@2.5.1))
|
||||||
'@eslint-community/regexpp': 4.12.1
|
'@eslint-community/regexpp': 4.12.1
|
||||||
'@eslint/config-array': 0.21.0
|
'@eslint/config-array': 0.21.0
|
||||||
'@eslint/config-helpers': 0.3.1
|
'@eslint/config-helpers': 0.3.1
|
||||||
|
|
@ -3032,7 +3028,7 @@ snapshots:
|
||||||
natural-compare: 1.4.0
|
natural-compare: 1.4.0
|
||||||
optionator: 0.9.4
|
optionator: 0.9.4
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
jiti: 2.4.2
|
jiti: 2.5.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
|
@ -3351,7 +3347,7 @@ snapshots:
|
||||||
has-symbols: 1.1.0
|
has-symbols: 1.1.0
|
||||||
set-function-name: 2.0.2
|
set-function-name: 2.0.2
|
||||||
|
|
||||||
jiti@2.4.2: {}
|
jiti@2.5.1: {}
|
||||||
|
|
||||||
js-tokens@4.0.0: {}
|
js-tokens@4.0.0: {}
|
||||||
|
|
||||||
|
|
@ -3423,7 +3419,7 @@ snapshots:
|
||||||
|
|
||||||
lightningcss@1.30.1:
|
lightningcss@1.30.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
detect-libc: 2.0.3
|
detect-libc: 2.0.4
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
lightningcss-darwin-arm64: 1.30.1
|
lightningcss-darwin-arm64: 1.30.1
|
||||||
lightningcss-darwin-x64: 1.30.1
|
lightningcss-darwin-x64: 1.30.1
|
||||||
|
|
@ -3446,7 +3442,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
js-tokens: 4.0.0
|
js-tokens: 4.0.0
|
||||||
|
|
||||||
magic-string@0.30.17:
|
magic-string@0.30.19:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/sourcemap-codec': 1.5.5
|
'@jridgewell/sourcemap-codec': 1.5.5
|
||||||
|
|
||||||
|
|
@ -3902,6 +3898,8 @@ snapshots:
|
||||||
|
|
||||||
tailwindcss@4.1.11: {}
|
tailwindcss@4.1.11: {}
|
||||||
|
|
||||||
|
tailwindcss@4.1.13: {}
|
||||||
|
|
||||||
tapable@2.2.1: {}
|
tapable@2.2.1: {}
|
||||||
|
|
||||||
tar@7.4.3:
|
tar@7.4.3:
|
||||||
|
|
|
||||||
BIN
public/image/me.jpeg
Normal file
|
After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 791 KiB |
BIN
public/image/me1.jpeg
Normal file
|
After Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 984 KiB |
BIN
public/image/me2.jpeg
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
public/image/me3.jpeg
Normal file
|
After Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 662 KiB |
|
Before Width: | Height: | Size: 378 KiB |
BIN
public/image/me4.jpg
Normal file
|
After Width: | Height: | Size: 259 KiB |
BIN
public/image/me7.jpg
Normal file
|
After Width: | Height: | Size: 222 KiB |
|
|
@ -1,69 +0,0 @@
|
||||||
# React + TypeScript + Vite
|
|
||||||
|
|
||||||
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
|
|
||||||
|
|
||||||
Currently, two official plugins are available:
|
|
||||||
|
|
||||||
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh
|
|
||||||
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
|
|
||||||
|
|
||||||
## Expanding the ESLint configuration
|
|
||||||
|
|
||||||
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
|
|
||||||
|
|
||||||
```js
|
|
||||||
export default tseslint.config([
|
|
||||||
globalIgnores(['dist']),
|
|
||||||
{
|
|
||||||
files: ['**/*.{ts,tsx}'],
|
|
||||||
extends: [
|
|
||||||
// Other configs...
|
|
||||||
|
|
||||||
// Remove tseslint.configs.recommended and replace with this
|
|
||||||
...tseslint.configs.recommendedTypeChecked,
|
|
||||||
// Alternatively, use this for stricter rules
|
|
||||||
...tseslint.configs.strictTypeChecked,
|
|
||||||
// Optionally, add this for stylistic rules
|
|
||||||
...tseslint.configs.stylisticTypeChecked,
|
|
||||||
|
|
||||||
// Other configs...
|
|
||||||
],
|
|
||||||
languageOptions: {
|
|
||||||
parserOptions: {
|
|
||||||
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
|
||||||
tsconfigRootDir: import.meta.dirname,
|
|
||||||
},
|
|
||||||
// other options...
|
|
||||||
},
|
|
||||||
},
|
|
||||||
])
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
|
|
||||||
|
|
||||||
```js
|
|
||||||
// eslint.config.js
|
|
||||||
import reactX from 'eslint-plugin-react-x'
|
|
||||||
import reactDom from 'eslint-plugin-react-dom'
|
|
||||||
|
|
||||||
export default tseslint.config([
|
|
||||||
globalIgnores(['dist']),
|
|
||||||
{
|
|
||||||
files: ['**/*.{ts,tsx}'],
|
|
||||||
extends: [
|
|
||||||
// Other configs...
|
|
||||||
// Enable lint rules for React
|
|
||||||
reactX.configs['recommended-typescript'],
|
|
||||||
// Enable lint rules for React DOM
|
|
||||||
reactDom.configs.recommended,
|
|
||||||
],
|
|
||||||
languageOptions: {
|
|
||||||
parserOptions: {
|
|
||||||
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
|
||||||
tsconfigRootDir: import.meta.dirname,
|
|
||||||
},
|
|
||||||
// other options...
|
|
||||||
},
|
|
||||||
},
|
|
||||||
])
|
|
||||||
```
|
|
||||||