[feat] about page layout finished
This commit is contained in:
parent
338129fcc6
commit
f4cda2fe5d
12 changed files with 521 additions and 87 deletions
19
app/(root)/layout.js
Normal file
19
app/(root)/layout.js
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import "../globals.css";
|
||||
import Sidebar from "@/components/Sidebar";
|
||||
import { config } from "@fortawesome/fontawesome-svg-core";
|
||||
import "@fortawesome/fontawesome-svg-core/styles.css";
|
||||
config.autoAddCss = false;
|
||||
|
||||
export const metadata = {
|
||||
title: "Create Next App",
|
||||
description: "Generated by create next app",
|
||||
};
|
||||
|
||||
export default function RootLayout({ children }) {
|
||||
return (
|
||||
<>
|
||||
<Sidebar />
|
||||
{children}
|
||||
</>
|
||||
);
|
||||
}
|
||||
7
app/(root)/loading.js
Normal file
7
app/(root)/loading.js
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
export default function Loading() {
|
||||
return (
|
||||
<div className="flex justify-center items-center h-screen w-screen bg-gray-900">
|
||||
<h1 className="text-4xl text-gray-100">Loading...</h1>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
@ -1,10 +1,12 @@
|
|||
"use client";
|
||||
import React from "react";
|
||||
import ReactFullpage from "@fullpage/react-fullpage";
|
||||
import Image from "next/image";
|
||||
import "./globals.css";
|
||||
import "../globals.css";
|
||||
import {motion} from "framer-motion";
|
||||
import Link from "next/link";
|
||||
// components
|
||||
import Button from "@/components/Button";
|
||||
import Me from "../../public/img/me.jpg";
|
||||
// icons
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
import { faGithub } from "@fortawesome/free-brands-svg-icons";
|
||||
|
|
@ -32,12 +34,12 @@ const MyPage = () => {
|
|||
<div className="block md:hidden col-span-1 mx-auto my-10">
|
||||
<div className="bg-slate-500 rounded-full h-60 w-60">
|
||||
<Image
|
||||
src="/img/me.jpg"
|
||||
layout="intrinsic"
|
||||
src={Me}
|
||||
width={500}
|
||||
height={500}
|
||||
className="rounded-full w-full h-full object-cover "
|
||||
alt="Alvalens"
|
||||
placeholder="blur"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -79,9 +81,13 @@ const MyPage = () => {
|
|||
</div>
|
||||
</div>
|
||||
<div className="section">
|
||||
<div className="relative h-screen w-screen mx-auto container gap-4 p-10 flex justify-center items-center flex-col">
|
||||
<div className="relative md:h-screen w-screen gap-4 flex justify-center items-center flex-col">
|
||||
<div className="z-0 mb-48 md:mb-0 md:absolute top-1/4 md:right-[10%] md:-translate-y-16 ">
|
||||
<div className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw]"></div>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, scale: 0.5 }}
|
||||
animate={{ opacity: 1, scale: 1 }}
|
||||
transition={{ duration: 1 }}
|
||||
className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw]"></motion.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">
|
||||
<h1 className="text-5xl md:text-8xl font-bold">
|
||||
|
|
@ -95,14 +101,15 @@ const MyPage = () => {
|
|||
A brief introduction about me and my
|
||||
interest.
|
||||
</p>
|
||||
<Link href="/about">
|
||||
<Button variation="primary">
|
||||
Learn More
|
||||
</Button>
|
||||
</Button></Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="section">
|
||||
<div className="relative h-screen w-screen mx-auto container gap-4 p-10 flex justify-center items-center flex-col">
|
||||
<div className="relative md:h-screen w-screen gap-4 p-10 flex justify-center items-center flex-col">
|
||||
<div className="z-0 mb-48 md:mb-0 md:absolute top-1/4 md:right-[10%] md:-translate-y-16 ">
|
||||
<div className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw]"></div>
|
||||
</div>
|
||||
|
|
@ -125,7 +132,7 @@ const MyPage = () => {
|
|||
</div>
|
||||
</div>
|
||||
<div className="section">
|
||||
<div className="relative h-screen w-screen mx-auto container gap-4 p-10 flex justify-center items-center flex-col">
|
||||
<div className="relative md:h-screen w-screen gap-4 p-10 flex justify-center items-center flex-col">
|
||||
<div className="z-0 mb-48 md:mb-0 md:absolute top-1/4 md:right-[10%] md:-translate-y-16 ">
|
||||
<div className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw]"></div>
|
||||
</div>
|
||||
|
|
@ -137,7 +144,7 @@ const MyPage = () => {
|
|||
<div className="bg-gray-700 w-20 h-1 rounded-full mb-2"></div>
|
||||
<div className="bg-gray-700 w-20 h-1 rounded-full translate-x-14"></div>
|
||||
</div>
|
||||
<p className="title text-xl mt-4 tracking-wider text-gray-500 leading-[1.7rem] mb-5">
|
||||
<p className="title text-xl mt-4 tracking-wider text-gray-500 leading-[1.7rem] md:mb-5">
|
||||
Feel free to contact me if you have any
|
||||
questions or just want to say hi.
|
||||
</p>
|
||||
|
|
@ -151,7 +158,7 @@ const MyPage = () => {
|
|||
className="flex justify-center items-center bg-gray-500 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300">
|
||||
<FontAwesomeIcon
|
||||
icon={faEnvelope}
|
||||
className="text-4xl"
|
||||
className="text-3xl"
|
||||
/>
|
||||
</a>
|
||||
|
||||
|
|
@ -160,7 +167,7 @@ const MyPage = () => {
|
|||
className="flex justify-center items-center bg-gray-500 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300">
|
||||
<FontAwesomeIcon
|
||||
icon={faGithub}
|
||||
className="text-4xl"
|
||||
className="text-3xl"
|
||||
/>
|
||||
</a>
|
||||
<a
|
||||
|
|
@ -168,7 +175,7 @@ const MyPage = () => {
|
|||
className="flex justify-center items-center bg-gray-500 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300">
|
||||
<FontAwesomeIcon
|
||||
icon={faInstagram}
|
||||
className="text-4xl"
|
||||
className="text-3xl"
|
||||
/>
|
||||
</a>
|
||||
<a
|
||||
|
|
@ -176,7 +183,7 @@ const MyPage = () => {
|
|||
className="flex justify-center items-center bg-gray-500 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300">
|
||||
<FontAwesomeIcon
|
||||
icon={faLinkedin}
|
||||
className="text-4xl"
|
||||
className="text-3xl"
|
||||
/>
|
||||
</a>
|
||||
<a
|
||||
|
|
@ -184,7 +191,7 @@ const MyPage = () => {
|
|||
className="flex justify-center items-center bg-gray-500 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300">
|
||||
<FontAwesomeIcon
|
||||
icon={faDiscord}
|
||||
className="text-4xl"
|
||||
className="text-3xl"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -1,8 +1,252 @@
|
|||
|
||||
"use client";
|
||||
import { useEffect } from "react";
|
||||
import Link from "next/link";
|
||||
import { motion } from "framer-motion";
|
||||
import Button from "@/components/Button";
|
||||
import Image from "next/image";
|
||||
export default function Page() {
|
||||
return <>
|
||||
<main>
|
||||
|
||||
</main>
|
||||
</>
|
||||
// useEffect(() => {
|
||||
// window.scrollTo(0, 0);
|
||||
// }, []);
|
||||
|
||||
return (
|
||||
<>
|
||||
<main className="overflow-hidden">
|
||||
<div className="relative h-screen w-screen gap-4 p-10 flex justify-center items-center flex-col mb-10">
|
||||
<div className="z-0 mb-48 md:mb-0 md:absolute top-1/4 md:right-[10%] md:-translate-y-16 ">
|
||||
<motion.div
|
||||
initial={{ opacity: 1, scale: 1 }}
|
||||
animate={{ opacity: 1, scale: 1.6 }}
|
||||
transition={{ duration: 1 }}
|
||||
className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw]"></motion.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">
|
||||
<h1 className="text-5xl md:text-8xl font-bold">
|
||||
About Me
|
||||
</h1>
|
||||
<div className="flex justify-center items-center flex-col my-5 ">
|
||||
<div className="bg-gray-700 w-20 h-1 rounded-full mb-2"></div>
|
||||
<div className="bg-gray-700 w-20 h-1 rounded-full translate-x-14"></div>
|
||||
</div>
|
||||
<p className="title text-xl mt-4 tracking-wider text-gray-500 leading-[1.7rem] mb-5">
|
||||
A brief introduction about me and my interest.
|
||||
</p>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 100 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 1 }}
|
||||
onClick={() => {
|
||||
window.scrollTo({
|
||||
top: 1000,
|
||||
behavior: "smooth",
|
||||
});
|
||||
}}
|
||||
className="">
|
||||
<Button variation="primary">Scroll Down</Button>
|
||||
</motion.div>
|
||||
</div>
|
||||
</div>
|
||||
<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="bg-gray-700 w-28 h-1 rounded-full mb-3 self-start"></div>
|
||||
<div className="bg-gray-700 w-28 h-1 rounded-full translate-x-12"></div>
|
||||
<h1 className="text-3xl font-bold mt-3">Who Am I?</h1>
|
||||
</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="flex justify-center items-start flex-col mb-5 ">
|
||||
<div className="images relative w-full aspect-square">
|
||||
<div className="absolute top-28 left-10 w-[50%] aspect-square">
|
||||
<motion.img
|
||||
initial={{ opacity: 0, scale: 0.5 }}
|
||||
animate={{ opacity: 1, scale: 1 }}
|
||||
transition={{ duration: 1 }}
|
||||
className="w-full h-full object-cover object-center"
|
||||
src="/images/me.jpg"
|
||||
placeholder="blur"
|
||||
/>
|
||||
</div>
|
||||
<div className="absolute top-16 right-28 w-[30%] aspect-square">
|
||||
<motion.img
|
||||
initial={{ opacity: 0, scale: 0.5 }}
|
||||
animate={{ opacity: 1, scale: 1 }}
|
||||
transition={{ duration: 1 }}
|
||||
className="w-full h-full object-cover object-center"
|
||||
src="/images/me.jpg"
|
||||
/>
|
||||
</div>
|
||||
<div className="absolute bottom-16 right-20 w-[40%] aspect-square">
|
||||
<motion.img
|
||||
initial={{ opacity: 0, scale: 0.5 }}
|
||||
animate={{ opacity: 1, scale: 1 }}
|
||||
transition={{ duration: 1 }}
|
||||
className="w-full h-full object-cover object-center"
|
||||
src="/images/me.jpg"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex justify-center items-start flex-col mb-5 md:px-10">
|
||||
<h2 className="text-2xl font-bold tracking-wider mb-3">
|
||||
Alvalen Shafelbilyunazra
|
||||
</h2>
|
||||
<p className="text-gray-600 text-justify">
|
||||
Lorem ipsum dolor sit amet consectetur adipisicing
|
||||
elit. Laborum, laudantium ad vel suscipit optio
|
||||
nesciunt accusantium nulla! Similique sapiente,
|
||||
tempora id laudantium eveniet adipisci perferendis
|
||||
ad numquam sit hic fugiat? Lorem ipsum dolor sit
|
||||
amet consectetur adipisicing elit. Iste assumenda
|
||||
provident deserunt quos id, minus tempora atque eos
|
||||
tenetur ut accusantium officiis itaque qui eum quas
|
||||
harum? Nemo, ducimus quisquam.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{/* <div className="mt-16 flex flex-col justify-start items-center w-full pl-12 md:pl-32">
|
||||
<div className="flex justify-center items-center flex-col my-5 self-start ">
|
||||
<div className="bg-gray-700 w-28 h-1 rounded-full mb-3 self-start"></div>
|
||||
<div className="bg-gray-700 w-28 h-1 rounded-full translate-x-12"></div>
|
||||
<h1 className="text-3xl font-bold mt-3">Tech Stack</h1>
|
||||
</div>
|
||||
</div> */}
|
||||
<div className=" w-screen mx-auto container gap-4 p-10 grid grid-cols-1 md:grid-cols-2 mt-10 mb-24">
|
||||
<div className="flex justify-center items-center flex-col mb-5 ">
|
||||
<h2 className="text-2xl md:text-xl font-normal mb-3 md:tracking-[.5rem] uppercase ">
|
||||
Language & Framework
|
||||
</h2>
|
||||
<p className="text-gray-500 text-center tracking-widest md:px-5">
|
||||
<span className="text-black font-bold">HTML</span> |{" "}
|
||||
<span className="text-black font-bold">CSS</span> |{" "}
|
||||
<span className="text-black font-bold">
|
||||
Javascript
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
Typescript
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-bold">React</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
NextJS
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-bold">
|
||||
TailwindCSS
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-bold">
|
||||
Bootstrap
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
NodeJS
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
ExpressJS
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
MongoDB
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-bold">MySQL</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
Firebase
|
||||
</span>{" "}
|
||||
|<span className="text-black font-medium">PHP</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-bold">
|
||||
Laravel
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
Python
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex justify-start items-center flex-col mb-5 ">
|
||||
<h2 className="text-2xl md:text-xl font-normal mb-3 md:tracking-[.5rem] uppercase">
|
||||
Tools
|
||||
</h2>
|
||||
<p className="text-gray-500 text-center tracking-wider md:px-">
|
||||
<span className="text-black font-bold">
|
||||
Visual Studio Code
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
Jet Brains
|
||||
</span>{" "}
|
||||
| <span className="text-black font-bold">Git</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-bold">Github</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
Figma
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
Adobe Photoshop
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
Adobe Premiere Pro
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
<span className="text-black font-medium">
|
||||
Adobe After Effect
|
||||
</span>{" "}
|
||||
|{" "}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mt-16 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="bg-gray-700 w-28 h-1 rounded-full mb-3 self-start"></div>
|
||||
<div className="bg-gray-700 w-28 h-1 rounded-full -translate-x-12"></div>
|
||||
<h1 className="text-3xl font-bold mt-3">
|
||||
Education & Experience
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div className="w-screen mx-auto container gap-4 p-10 grid grid-cols-1 md:grid-cols-2 my-10">
|
||||
<div className="flex justify-center items-start flex-col mb-5 ">
|
||||
<h2 className="text-2xl font-bold mb-3">
|
||||
Education | Universitas Negeri Malang
|
||||
</h2>
|
||||
<h3 className="text-md font-medium mb-3 text-gray-500">
|
||||
Teknik Informatika | 2022 - Now
|
||||
</h3>
|
||||
<p className="pl-3 text-gray-500 text-start relative">
|
||||
<span className="before:border-s-2 before:absolute before:left-0 before:top-0 before:h-full before:border-gray-400 before:block before:w-2 before:content-'' text-justify"></span>
|
||||
Lorem ipsum dolor sit amet consectetur adipisicing
|
||||
elit. Vero voluptatibus tenetur dolor laudantium et
|
||||
ipsum temporibus atque illo suscipit, quam iusto
|
||||
reiciendis corrupti quibusdam architecto, labore
|
||||
cupiditate non autem aliquid?
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex justify-center items-start flex-col mb-5 ">
|
||||
<h2 className="text-2xl font-bold mb-3">
|
||||
Experience | Freelance Web Developer
|
||||
</h2>
|
||||
<h3 className="text-md font-medium mb-3 text-gray-500">
|
||||
Fullstack Web Developer | 2023 - Now
|
||||
</h3>
|
||||
<p className="pl-3 text-gray-500 text-start relative">
|
||||
<span className="before:border-s-2 before:absolute before:left-0 before:top-0 before:h-full before:border-gray-400 before:block before:w-2 before:content-'' text-justify"></span>
|
||||
Lorem ipsum dolor sit amet consectetur adipisicing
|
||||
elit. Vero voluptatibus tenetur dolor laudantium et
|
||||
ipsum temporibus atque illo suscipit, quam iusto
|
||||
reiciendis corrupti quibusdam architecto, labore
|
||||
cupiditate non autem aliquid?
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,4 +47,13 @@ h1, h2, h3, h4, h5, h6 {
|
|||
|
||||
.fp-watermark {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
|
||||
h2, h3, h4, h5, h6 {
|
||||
@apply text-gray-600;
|
||||
}
|
||||
|
||||
span {
|
||||
font-family: "Jost", sans-serif;
|
||||
}
|
||||
|
|
@ -16,7 +16,6 @@ export default function RootLayout({ children }) {
|
|||
<html lang="en">
|
||||
<body>
|
||||
<Navbar />
|
||||
<Sidebar />
|
||||
{children}
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue