diff --git a/bun.lockb b/bun.lockb
index f861723..d65219a 100755
Binary files a/bun.lockb and b/bun.lockb differ
diff --git a/package.json b/package.json
index bd5bd6b..cd9a25b 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,13 @@
"preview": "vite preview"
},
"dependencies": {
+ "@emotion/react": "^11.13.0",
+ "@emotion/styled": "^11.13.0",
+ "@fontsource/roboto": "^5.0.14",
+ "@mui/icons-material": "^5.16.7",
+ "@mui/lab": "^5.0.0-alpha.173",
+ "@mui/material": "^5.16.7",
+ "@mui/styled-engine-sc": "^6.0.0-alpha.18",
"@nextui-org/kbd": "^2.0.33",
"@nextui-org/react": "^2.4.6",
"autoprefixer": "^10.4.20",
@@ -22,6 +29,7 @@
"react-markdown": "^9.0.1",
"react-router-dom": "^6.26.0",
"rehype-highlight": "^7.0.0",
+ "styled-components": "^6.1.12",
"tailwind": "^4.0.0",
"tailwindcss": "^3.4.7"
},
diff --git a/src/App.tsx b/src/App.tsx
index 45ad710..27bd5b9 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,5 +1,5 @@
import Root from './pages/Root';
-import Timeline from './pages/Timeline';
+import Timeline from './pages/Timeline_Page';
import { Route, Routes } from 'react-router-dom';
import { useEffect } from 'react';
diff --git a/src/pages/Root.css b/src/pages/Root.css
index 9c44c30..c1c9ec8 100644
--- a/src/pages/Root.css
+++ b/src/pages/Root.css
@@ -1,11 +1,11 @@
.App {
- width: 100%;
- height: 100%;
+ width: 100vw;
+ height: 100vh;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
- background-color: #41444B;
+ background-color: #101020;
color: black;
}
@@ -19,21 +19,50 @@
}
.left {
- width: 45%;
+ width: 40%;
height: 100%;
background-color: #DFC7D4;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
+
+ border-top-right-radius: 25px;
+ border-bottom-right-radius: 25px;
}
.right {
- width: 55%;
+ width: 60%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
- background-color: #41444B;
+ background-color: #101020;
+}
+
+@media screen and (max-width: 768px) {
+ .App {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .container {
+ flex-direction: column;
+ }
+
+ .left {
+ width: 100%;
+ height: 70%;
+
+ border-top-left-radius: 0px;
+ border-top-right-radius: 0px;
+ border-bottom-left-radius: 25px;
+ border-bottom-right-radius: 25px;
+ }
+
+ .right {
+ width: 100%;
+ height: 30%;
+ }
}
\ No newline at end of file
diff --git a/src/pages/Root.tsx b/src/pages/Root.tsx
index 450cdbb..8bcc6b4 100644
--- a/src/pages/Root.tsx
+++ b/src/pages/Root.tsx
@@ -1,17 +1,19 @@
import { useEffect, useState } from 'react';
-import { useLocation } from 'react-router-dom';
+import { useLocation, Link } from 'react-router-dom';
import './Root.css';
function Root() {
const location = useLocation();
const [imageSrc, setImageSrc] = useState('https://f.imnyang.xyz/profile/imnyang.webp');
-
+ const [gotoHref, setGotoHref] = useState('/');
useEffect(() => {
const queryParams = new URLSearchParams(location.search);
if (queryParams.has('kawaii')) {
setImageSrc('https://f.imnyang.xyz/profile/magic_imnyang.webp');
+ setGotoHref('/');
} else {
setImageSrc('https://f.imnyang.xyz/profile/imnyang.webp');
+ setGotoHref('/?kawaii');
}
}, [location.search]);
@@ -20,17 +22,20 @@ function Root() {

-
diff --git a/src/pages/Timeline.css b/src/pages/Timeline.css
deleted file mode 100644
index 36db20b..0000000
--- a/src/pages/Timeline.css
+++ /dev/null
@@ -1,33 +0,0 @@
-@import url('https://fonts.googleapis.com/css2?family=Nanum+Gothic+Coding&display=swap');
-
-.App {
- width: 100vw;
- height: 100vh;
-
- text-align: center;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
-
- background-color: #101010;
- z-index: 9;
-}
-
-.inner {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- justify-content: center;
- text-align: left;
-}
-.scroll {
- height: 60vh;
- overflow-y: auto;
- padding: 0 20px;
-}
-
-code {
- color: #fff;
- font-family: "Nanum Gothic Coding", monospace;
-}
\ No newline at end of file
diff --git a/src/pages/Timeline.md b/src/pages/Timeline.md
deleted file mode 100644
index 5c2958c..0000000
--- a/src/pages/Timeline.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# π Timeline
-
-- `2024-05-16` [κΈλ‘λ² μ€ννΈμ
νκ΅ λ² νΈλ¨ ν΄μΈ μ°μ λ°λͺ¨λ°μ΄ λμ (1μ)](http://ncf.or.kr)
-- `2024-05-11` [κΈλ‘λ² μ€ννΈμ
νκ΅ 2κΈ° ν©κ²©](http://ncf.or.kr)
-- `2024-05-11` [LG AI μ²μλ
μΊ ν 1κΈ° LG νμμ μμ](https://lgaiyouthcamp.or.kr/)
-- `2024-05-11` [LG AI μ²μλ
μΊ ν 1κΈ° μλ£](https://lgaiyouthcamp.or.kr/)
-- `2024-04-22` [@isangjeong.today (μΈμ²μμ μ€νκ΅μ μ€λ κΈμ)](https://www.instagram.com/isangjeong.today/)
-- `2024-04-06` [TimeTable (Sekai κ°μ‘°ν λ°°ν¬) [API μ μ€]](https://timeline.imnyang.xyz)
-- `2024-03-24` [Dreamhack #133](https://dreamhack.io/users/40116/wargame)
-- `2024-03-24` [Ubuntu Mirror](https://launchpad.net/ubuntu/+mirror/mirror.imnyang.xyz-release)
-- `2024-03-24` [λ΄ λͺ©μλ¦¬λ‘ AI Cover λ§λ€κΈ°](https://colab.research.google.com/drive/1a4G4hD9huBeGRZhEL2HNDMpqSuf4y61k?usp=sharing)
-- `2024-01-26` [Fastapiλ₯Ό ν΅ν΄ API μ μ](https://github.com/imnyang/api)
-- `2023-12-20` LG AI μ²μλ
μΊ ν 1κΈ° ν©κ²©
-- `2023-11-14` μΈμ²μμ μ€νκ΅ 2023νλ
λ SW λ¬Έμ ν΄κ²° νλ μ°μμ(2μ) μμ¬
-- `2023-11-01` [λΈλ‘κ·Έ μμ](https://blog.imnyang.xyz)
-- `2023-10-12` [λλ λ‘컬 μκ°μ μκ³ μΆλ€](https://time.imnyang.xyz/)
-- `2023-09-24` [sqlr.kr κΈ°ν λ° μ΄κΈ° κ°λ°](https://github.com/sqlare/sqlr.kr/tree/main)
-- `2023-09-02` μ λ¦°μΈν°λ·κ³ λ±νκ΅ μ 6ν μννΈμ¨μ΄λλ μΆμ Layer7 λΆμ κ³Όμ μ΄μ
-- `2023-08-26` [μ»΄μκ° μκ°νλ₯Ό λ λμ보μ΄κ² Sekai](https://github.com/imnyang/Sekai)
-- `2023-08-23` [λμ€μ½λ ν΅νλ°© λ
Ήμ](https://github.com/imnyang/discord-voice-rec)
-- `2023-07-24` νκ΅μ 보기μ μ°κ΅¬μμ΄ μ£Όλνλ μ¬μ΄λ² κ°λμΈμ¦ 보μμΊ ν μλ£
-- `2023-03-20` [λμ€μ½λμμ λνν μΈκ³΅μ§λ₯ Siru μ μ](https://github.com/imnyang/siru)
-- `2023-05-15` νκ΅ μ½λνμ΄ μμ μ§μΆ
-- `2023-03-14` [νμ΄λ¨Έ](https://github.com/imnyang/imnyang-timer)
-- `2022-12-20` 2022 SWμμ¬ μ°½μλν μμ μμ
-- `2022-09-27` 2022 μΌμ± μ£Όλμ΄ SW μ°½μλν λ³Έμ μ§μΆ
-- `2022-05-23` 2022νλ
λ μμ μ΄SWμμ¬νκΈ μ²« μμ
-- `2022-07-26` μ 14ν λ§μνλ λ§μμμ 곡λͺ¨μ μμ λ§μμμμ μμ¬
-- `2021-11-14` Become a ZEPETO Creator μ΄μ
-- `2021-05-19` μννΈμ¨μ΄μ μ μμ λ¬Έμ΄ μ£Όκ΄ν μννΈμ¨μ΄μ¬λ¨ κΏμ°ΎκΈ° μΊ ν μ΄μ
-- `2018-01-27` μ 4ν λ§μνλ λ§μμμ μ΄λ¦°μ΄ λ¬Έμ곡λͺ¨μ μμ μλμ€μ(2μ) μμ¬
\ No newline at end of file
diff --git a/src/pages/Timeline.tsx b/src/pages/Timeline.tsx
deleted file mode 100644
index 73d6c07..0000000
--- a/src/pages/Timeline.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import Markdown from "react-markdown";
-import './Timeline.css';
-import markdown from './Timeline.md';
-
-import "highlight.js/styles/a11y-dark.css";
-import rehypeHighlight from "rehype-highlight";
-
-export default function Timeline() {
- return (
-
- );
-}
\ No newline at end of file
diff --git a/src/pages/Timeline_Page.tsx b/src/pages/Timeline_Page.tsx
new file mode 100644
index 0000000..29972b8
--- /dev/null
+++ b/src/pages/Timeline_Page.tsx
@@ -0,0 +1,68 @@
+import * as React from 'react';
+import { Link } from 'react-router-dom';
+import Timeline from '@mui/lab/Timeline';
+import TimelineItem from '@mui/lab/TimelineItem';
+import TimelineSeparator from '@mui/lab/TimelineSeparator';
+import TimelineConnector from '@mui/lab/TimelineConnector';
+import TimelineContent from '@mui/lab/TimelineContent';
+import TimelineDot from '@mui/lab/TimelineDot';
+import TimelineOppositeContent from '@mui/lab/TimelineOppositeContent';
+
+const events = [
+ { date: '2024-08-01', description: 'κΈλ‘λ² μ€ννΈμ
νκ΅ λ² νΈλ¨ ν΄μΈ μ°μ λ°λͺ¨λ°μ΄ λμ (1μ)', link: 'http://ncf.or.kr', dotColor: 'success' },
+ { date: '2024-05-16', description: 'κΈλ‘λ² μ€ννΈμ
νκ΅ 2κΈ° ν©κ²©', link: 'http://ncf.or.kr', dotColor: 'success' },
+ { date: '2024-05-11', description: 'LG AI μ²μλ
μΊ ν 1κΈ° LG νμμ μμ', link: 'https://lgaiyouthcamp.or.kr/', dotColor: 'success' },
+ { date: '2024-05-11', description: 'LG AI μ²μλ
μΊ ν 1κΈ° μλ£', link: 'https://lgaiyouthcamp.or.kr/', dotColor: 'success' },
+ { date: '2024-04-22', description: '@isangjeong.today (μΈμ²μμ μ€νκ΅μ μ€λ κΈμ)', link: 'https://www.instagram.com/isangjeong.today/', dotColor: 'success' },
+ { date: '2024-04-06', description: 'TimeTable (Sekai κ°μ‘°ν λ°°ν¬) [API μ μ€]', link: 'https://timeline.imnyang.xyz', dotColor: 'grey' },
+ { date: '2024-03-24', description: 'Dreamhack #133', link: 'https://dreamhack.io/users/40116/wargame', dotColor: 'success' },
+ { date: '2024-03-24', description: 'Ubuntu Mirror', link: 'https://launchpad.net/ubuntu/+mirror/mirror.imnyang.xyz-release', dotColor: 'success' },
+ { date: '2024-03-24', description: 'λ΄ λͺ©μλ¦¬λ‘ AI Cover λ§λ€κΈ°', link: 'https://colab.research.google.com/drive/1a4G4hD9huBeGRZhEL2HNDMpqSuf4y61k?usp=sharing', dotColor: 'success' },
+ { date: '2024-01-26', description: 'Fastapiλ₯Ό ν΅ν΄ API μ μ', link: 'https://github.com/imnyang/api', dotColor: 'grey' },
+ { date: '2023-12-20', description: 'LG AI μ²μλ
μΊ ν 1κΈ° ν©κ²©', dotColor: 'success' },
+ { date: '2023-11-14', description: 'μΈμ²μμ μ€νκ΅ 2023νλ
λ SW λ¬Έμ ν΄κ²° νλ μ°μμ(2μ) μμ¬', dotColor: 'success' },
+ { date: '2023-11-01', description: 'λΈλ‘κ·Έ μμ', link: 'https://blog.imnyang.xyz', dotColor: 'secondary' },
+ { date: '2023-10-12', description: 'λλ λ‘컬 μκ°μ μκ³ μΆλ€', link: 'https://time.imnyang.xyz/', dotColor: 'success' },
+ { date: '2023-09-24', description: 'sqlr.kr κΈ°ν λ° μ΄κΈ° κ°λ°', link: 'https://github.com/sqlare/sqlr.kr/tree/main', dotColor: 'success' },
+ { date: '2023-09-02', description: 'μ λ¦°μΈν°λ·κ³ λ±νκ΅ μ 6ν μννΈμ¨μ΄λλ μΆμ Layer7 λΆμ κ³Όμ μ΄μ', dotColor: 'success' },
+ { date: '2023-08-26', description: 'μ»΄μκ° μκ°νλ₯Ό λ λμ보μ΄κ² Sekai', link: 'https://github.com/imnyang/Sekai', dotColor: 'grey' },
+ { date: '2023-08-23', description: 'λμ€μ½λ ν΅νλ°© λ
Ήμ', link: 'https://github.com/imnyang/discord-voice-rec', dotColor: 'grey' },
+ { date: '2023-07-24', description: 'νκ΅μ 보기μ μ°κ΅¬μμ΄ μ£Όλνλ μ¬μ΄λ² κ°λμΈμ¦ 보μμΊ ν μλ£', dotColor: 'success' },
+ { date: '2023-03-20', description: 'λμ€μ½λμμ λνν μΈκ³΅μ§λ₯ Siru μ μ', link: 'https://github.com/imnyang/siru', dotColor: 'success' },
+ { date: '2023-05-15', description: 'νκ΅ μ½λνμ΄ μμ μ§μΆ', dotColor: 'success' },
+ { date: '2023-03-14', description: 'νμ΄λ¨Έ', link: 'https://github.com/imnyang/imnyang-timer', dotColor: 'success' },
+ { date: '2022-12-20', description: '2022 SWμμ¬ μ°½μλν μμ μμ', dotColor: 'success' },
+ { date: '2022-09-27', description: '2022 μΌμ± μ£Όλμ΄ SW μ°½μλν λ³Έμ μ§μΆ', dotColor: 'success' },
+ { date: '2022-05-23', description: '2022νλ
λ μμ μ΄SWμμ¬νκΈ μ²« μμ
', dotColor: 'success' },
+ { date: '2022-07-26', description: 'μ 14ν λ§μνλ λ§μμμ 곡λͺ¨μ μμ λ§μμμμ μμ¬', dotColor: 'success' },
+ { date: '2021-11-14', description: 'Become a ZEPETO Creator μ΄μ', dotColor: 'success' },
+ { date: '2021-05-19', description: 'μννΈμ¨μ΄μ μ μμ λ¬Έμ΄ μ£Όκ΄ν μννΈμ¨μ΄μ¬λ¨ κΏμ°ΎκΈ° μΊ ν μ΄μ', dotColor: 'success' },
+ { date: '2018-01-27', description: 'μ 4ν λ§μνλ λ§μμμ μ΄λ¦°μ΄ λ¬Έμ곡λͺ¨μ μμ μλμ€μ(2μ) μμ¬', dotColor: 'success' },
+];
+
+export default function Timeline_Page() {
+ return (
+
+
+
π Back
+
Timeline
+
+ {events.map((event, index) => (
+
+
+ {event.date}
+
+
+
+ {index < events.length - 1 && }
+
+
+ {event.link ? {event.description} : event.description}
+
+
+ ))}
+
+
+
+ );
+}
\ No newline at end of file