mirror of
https://github.com/Radiquum/radiquum.github.io.git
synced 2025-09-08 15:33:54 +05:00
refactor: add background to links and headers
feat: add skills
This commit is contained in:
parent
ab5eedeb07
commit
46f7530e71
8 changed files with 99 additions and 17 deletions
|
@ -33,14 +33,15 @@ export const Characters = () => {
|
||||||
return (
|
return (
|
||||||
<Section>
|
<Section>
|
||||||
<div className="flex flex-col gap-2 mt-2 md:flex-row md:justify-between md:items-center">
|
<div className="flex flex-col gap-2 mt-2 md:flex-row md:justify-between md:items-center">
|
||||||
<h2 className="text-4xl md:text-5xl">Characters</h2>
|
<h2 className="text-4xl md:text-5xl border-1 px-3 py-2 rounded-xl border-white/5 bg-[#1c1e20]/25 flex-1">Characters</h2>
|
||||||
<div className="flex items-center gap-4 xl:gap-8">
|
<div className="flex items-center gap-2 flex-1">
|
||||||
{links.map((item) => (
|
{links.map((item) => (
|
||||||
<Link href={item.url} key={`characters.link.${item.text}`}>
|
<Link href={item.url} key={`characters.link.${item.text}`} className="flex-1">
|
||||||
<IconWithText
|
<IconWithText
|
||||||
icon={item.icon}
|
icon={item.icon}
|
||||||
text={item.text}
|
text={item.text}
|
||||||
desc={item.desc}
|
desc={item.desc}
|
||||||
|
backgroundColor={"#1c1e20"}
|
||||||
/>
|
/>
|
||||||
</Link>
|
</Link>
|
||||||
))}
|
))}
|
||||||
|
|
|
@ -32,8 +32,8 @@ const links = [
|
||||||
export const Contacts = () => {
|
export const Contacts = () => {
|
||||||
return (
|
return (
|
||||||
<Section>
|
<Section>
|
||||||
<h2 className="text-4xl md:text-5xl">Contacts</h2>
|
<h2 className="text-4xl md:text-5xl border-1 px-3 py-2 rounded-xl border-white/5 bg-[#1c1e20]/25">Contacts</h2>
|
||||||
<div className="grid grid-cols-2 md:grid-cols-3 xl:grid-cols-4 gap-4">
|
<div className="grid grid-cols-2 md:grid-cols-3 xl:grid-cols-4 gap-2">
|
||||||
{links.map((item) => {
|
{links.map((item) => {
|
||||||
if (item.url) {
|
if (item.url) {
|
||||||
return (
|
return (
|
||||||
|
@ -42,6 +42,7 @@ export const Contacts = () => {
|
||||||
icon={item.icon}
|
icon={item.icon}
|
||||||
text={item.text}
|
text={item.text}
|
||||||
desc={item.desc}
|
desc={item.desc}
|
||||||
|
backgroundColor={"#1c1e20"}
|
||||||
/>
|
/>
|
||||||
</Link>
|
</Link>
|
||||||
);
|
);
|
||||||
|
@ -52,6 +53,7 @@ export const Contacts = () => {
|
||||||
icon={item.icon}
|
icon={item.icon}
|
||||||
text={item.text}
|
text={item.text}
|
||||||
desc={item.desc}
|
desc={item.desc}
|
||||||
|
backgroundColor={"#1c1e20"}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,14 +41,16 @@ export const Photos = () => {
|
||||||
<div className="flex flex-col gap-4">
|
<div className="flex flex-col gap-4">
|
||||||
<Section>
|
<Section>
|
||||||
<div className="flex flex-col gap-2 md:flex-row md:justify-between md:items-center">
|
<div className="flex flex-col gap-2 md:flex-row md:justify-between md:items-center">
|
||||||
<h2 className="text-4xl md:text-5xl">Photos</h2>
|
<h2 className="text-4xl md:text-5xl border-1 px-3 py-2 rounded-xl border-white/5 bg-[#ffb1cd]/5 flex-1">Photos</h2>
|
||||||
<div className="flex items-center gap-4 xl:gap-8">
|
<div className="flex items-center gap-2 flex-1">
|
||||||
{links.map((item) => (
|
{links.map((item) => (
|
||||||
<Link href={item.url} key={`photos.link.${item.text}`}>
|
<Link href={item.url} key={`photos.link.${item.text}`} className="flex-1">
|
||||||
<IconWithText
|
<IconWithText
|
||||||
icon={item.icon}
|
icon={item.icon}
|
||||||
text={item.text}
|
text={item.text}
|
||||||
desc={item.desc}
|
desc={item.desc}
|
||||||
|
backgroundColor={"#ffb1cd"}
|
||||||
|
backgroundOpacity={"5%"}
|
||||||
/>
|
/>
|
||||||
</Link>
|
</Link>
|
||||||
))}
|
))}
|
||||||
|
|
|
@ -42,7 +42,7 @@ const links = [
|
||||||
{
|
{
|
||||||
icon: "/icons/ic_baseline-telegram.svg",
|
icon: "/icons/ic_baseline-telegram.svg",
|
||||||
text: "Red Pandas Stickers",
|
text: "Red Pandas Stickers",
|
||||||
desc: "Collection of Red Panda related sticker packs",
|
desc: "Collection of Red Panda sticker packs",
|
||||||
url: "https://t.me/red_panda_stickers",
|
url: "https://t.me/red_panda_stickers",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -50,7 +50,7 @@ const links = [
|
||||||
export const Projects = () => {
|
export const Projects = () => {
|
||||||
return (
|
return (
|
||||||
<Section>
|
<Section>
|
||||||
<h2 className="text-4xl md:text-5xl">Projects</h2>
|
<h2 className="text-4xl md:text-5xl border-1 px-3 py-2 rounded-xl border-white/5 bg-[#101316]/5">Projects</h2>
|
||||||
<div className="grid grid-cols-1 gap-2 md:grid-cols-2 xl:grid-cols-3">
|
<div className="grid grid-cols-1 gap-2 md:grid-cols-2 xl:grid-cols-3">
|
||||||
{links.map((item) => (
|
{links.map((item) => (
|
||||||
<Link href={item.url} key={`projects.link.${item.text}`}>
|
<Link href={item.url} key={`projects.link.${item.text}`}>
|
||||||
|
|
72
app/Section/Skills.tsx
Normal file
72
app/Section/Skills.tsx
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
import { Section } from "../components/Section";
|
||||||
|
|
||||||
|
const skills = {
|
||||||
|
"Front-end": [
|
||||||
|
"HTML",
|
||||||
|
"CSS",
|
||||||
|
"JavaScript",
|
||||||
|
"TypeScript",
|
||||||
|
"React",
|
||||||
|
"Next.js",
|
||||||
|
"Tailwind CSS",
|
||||||
|
"Django",
|
||||||
|
"Flask",
|
||||||
|
],
|
||||||
|
"Back-end": ["Node.js", "Express.js", "FastAPI"],
|
||||||
|
API: [
|
||||||
|
"REST",
|
||||||
|
"Postman/Hoppscotch",
|
||||||
|
// "Swagger",
|
||||||
|
"mitmproxy",
|
||||||
|
"HTTP Toolkit",
|
||||||
|
],
|
||||||
|
Collaboration: ["Git", "GitHub"],
|
||||||
|
Deployment: [
|
||||||
|
"Docker",
|
||||||
|
"Docker-compose",
|
||||||
|
"Vercel",
|
||||||
|
"GitHub Actions",
|
||||||
|
"Cloudflare Workers & Pages",
|
||||||
|
],
|
||||||
|
Tools: ["Figma", "Adobe Photoshop", "Cloudflare DNS"],
|
||||||
|
};
|
||||||
|
|
||||||
|
export const Skills = () => {
|
||||||
|
return (
|
||||||
|
<Section>
|
||||||
|
<h2 className="text-4xl md:text-5xl border-1 px-3 py-2 rounded-xl border-white/5 bg-[#101316]/25 flex-1">Skills</h2>
|
||||||
|
<div className="grid grid-cols-2 gap-2">
|
||||||
|
<div className="flex flex-col gap-2 xl:grid-row">
|
||||||
|
{Object.entries(skills).map(([category, skills], index) => {
|
||||||
|
if (index < 3)
|
||||||
|
return (
|
||||||
|
<div key={`skills.${category}`} className="border-1 border-white/5 bg-[#101316]/25 rounded-xl px-3 py-2">
|
||||||
|
<h3 className="text-2xl md:text-3xl">{category}</h3>
|
||||||
|
<div className="flex gap-x-4 flex-wrap">
|
||||||
|
{skills.map((skill) => (
|
||||||
|
<p key={skill}>{skill}</p>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-2 xl:grid-row">
|
||||||
|
{Object.entries(skills).map(([category, skills], index) => {
|
||||||
|
if (index > 2)
|
||||||
|
return (
|
||||||
|
<div key={`skills.${category}`} className="border-1 border-white/5 bg-[#101316]/25 rounded-xl px-3 py-2">
|
||||||
|
<h3 className="text-2xl md:text-3xl">{category}</h3>
|
||||||
|
<div className="flex gap-x-4 flex-wrap">
|
||||||
|
{skills.map((skill) => (
|
||||||
|
<p key={skill}>{skill}</p>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
};
|
|
@ -50,8 +50,8 @@ const links = [
|
||||||
export const Socials = () => {
|
export const Socials = () => {
|
||||||
return (
|
return (
|
||||||
<Section>
|
<Section>
|
||||||
<h2 className="text-4xl md:text-5xl">Socials</h2>
|
<h2 className="text-4xl md:text-5xl border-1 px-3 py-2 rounded-xl border-white/5 bg-[#ffb1cd]/5">Socials</h2>
|
||||||
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 gap-x-12 gap-y-2">
|
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 gap-2">
|
||||||
{links.map((item) => (
|
{links.map((item) => (
|
||||||
<Link href={item.url} key={`socials.link.${item.text}`}>
|
<Link href={item.url} key={`socials.link.${item.text}`}>
|
||||||
<IconWithText icon={item.icon} text={item.text} desc={item.desc} />
|
<IconWithText icon={item.icon} text={item.text} desc={item.desc} />
|
||||||
|
|
|
@ -2,20 +2,23 @@ type IconWithTextProps = {
|
||||||
icon: string;
|
icon: string;
|
||||||
text: string;
|
text: string;
|
||||||
desc: string;
|
desc: string;
|
||||||
hoverTextColor?: string | null;
|
backgroundColor?: string | null;
|
||||||
|
backgroundOpacity?: string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const IconWithText = ({
|
export const IconWithText = ({
|
||||||
icon,
|
icon,
|
||||||
text,
|
text,
|
||||||
desc,
|
desc,
|
||||||
hoverTextColor,
|
backgroundColor,
|
||||||
|
backgroundOpacity
|
||||||
}: IconWithTextProps) => {
|
}: IconWithTextProps) => {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`flex items-center gap-1 ${
|
className={`flex items-start gap-2 border-1 px-3 py-1.5 rounded-xl border-white/5 bg-[var(--bg-color)]/[var(--bg-opacity)] ${
|
||||||
hoverTextColor ? `hover:text-${hoverTextColor}` : ""
|
backgroundColor ? `` : "bg-[#161213]/25"
|
||||||
} transition-[color,_scale] hover:scale-105 duration-100`}
|
} transition-[scale] hover:scale-105 duration-100 ease-in-out`}
|
||||||
|
style={{ "--bg-color": backgroundColor, "--bg-opacity": backgroundOpacity || "25%" } as React.CSSProperties}
|
||||||
>
|
>
|
||||||
{/* eslint-disable-next-line @next/next/no-img-element */}
|
{/* eslint-disable-next-line @next/next/no-img-element */}
|
||||||
<img src={icon} alt={""} />
|
<img src={icon} alt={""} />
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { Footer } from "./Section/Footer";
|
||||||
import { Intro } from "./Section/Intro";
|
import { Intro } from "./Section/Intro";
|
||||||
import { Photos } from "./Section/Photos";
|
import { Photos } from "./Section/Photos";
|
||||||
import { Projects } from "./Section/Projects";
|
import { Projects } from "./Section/Projects";
|
||||||
|
import { Skills } from "./Section/Skills";
|
||||||
import { Socials } from "./Section/Socials";
|
import { Socials } from "./Section/Socials";
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
|
@ -14,6 +15,7 @@ export default function Home() {
|
||||||
<Intro />
|
<Intro />
|
||||||
<Socials />
|
<Socials />
|
||||||
<Photos />
|
<Photos />
|
||||||
|
<Skills />
|
||||||
<Projects />
|
<Projects />
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-8 md:gap-16 overflow-hidden bg-[#131314] rounded-t-4xl md:rounded-t-[128px] pt-4 md:pt-8 pb-8 md:pb-16 xl:rounded-t-4xl 2xl:rounded-t-[128px]">
|
<div className="flex flex-col gap-8 md:gap-16 overflow-hidden bg-[#131314] rounded-t-4xl md:rounded-t-[128px] pt-4 md:pt-8 pb-8 md:pb-16 xl:rounded-t-4xl 2xl:rounded-t-[128px]">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue