This commit is contained in:
imnyang 2024-11-01 08:14:36 +09:00
commit 84ce41a32f
6 changed files with 89 additions and 19 deletions

View file

@ -20,6 +20,7 @@
"@mui/styled-engine-sc": "^6.0.0-alpha.18", "@mui/styled-engine-sc": "^6.0.0-alpha.18",
"@nextui-org/kbd": "^2.0.33", "@nextui-org/kbd": "^2.0.33",
"@nextui-org/react": "^2.4.6", "@nextui-org/react": "^2.4.6",
"@tippyjs/react": "^4.2.6",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"framer-motion": "^11.3.21", "framer-motion": "^11.3.21",
"highlight.js": "^11.10.0", "highlight.js": "^11.10.0",
@ -32,7 +33,8 @@
"rehype-highlight": "^7.0.0", "rehype-highlight": "^7.0.0",
"styled-components": "^6.1.12", "styled-components": "^6.1.12",
"tailwind": "^4.0.0", "tailwind": "^4.0.0",
"tailwindcss": "^3.4.7" "tailwindcss": "^3.4.7",
"tippy.js": "^6.3.7"
}, },
"devDependencies": { "devDependencies": {
"@types/react": "^18.3.3", "@types/react": "^18.3.3",

25
pnpm-lock.yaml generated
View file

@ -35,6 +35,9 @@ importers:
'@nextui-org/react': '@nextui-org/react':
specifier: ^2.4.6 specifier: ^2.4.6
version: 2.4.6(@types/react@18.3.3)(framer-motion@11.3.27(@emotion/is-prop-valid@1.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10) version: 2.4.6(@types/react@18.3.3)(framer-motion@11.3.27(@emotion/is-prop-valid@1.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10)
'@tippyjs/react':
specifier: ^4.2.6
version: 4.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
autoprefixer: autoprefixer:
specifier: ^10.4.20 specifier: ^10.4.20
version: 10.4.20(postcss@8.4.41) version: 10.4.20(postcss@8.4.41)
@ -74,6 +77,9 @@ importers:
tailwindcss: tailwindcss:
specifier: ^3.4.7 specifier: ^3.4.7
version: 3.4.10 version: 3.4.10
tippy.js:
specifier: ^6.3.7
version: 6.3.7
devDependencies: devDependencies:
'@types/react': '@types/react':
specifier: ^18.3.3 specifier: ^18.3.3
@ -1808,6 +1814,12 @@ packages:
'@swc/types@0.1.12': '@swc/types@0.1.12':
resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==}
'@tippyjs/react@4.2.6':
resolution: {integrity: sha512-91RicDR+H7oDSyPycI13q3b7o4O60wa2oRbjlz2fyRLmHImc4vyDwuUP8NtZaN0VARJY5hybvDYrFzhY9+Lbyw==}
peerDependencies:
react: '>=16.8'
react-dom: '>=16.8'
'@types/debug@4.1.12': '@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
@ -3722,6 +3734,9 @@ packages:
timer2@1.0.0: timer2@1.0.0:
resolution: {integrity: sha512-UOZql+P2ET0da+B7V3/RImN3IhC5ghb+9cpecfUhmYGIm0z73dDr3A781nBLnFYmRzeT1AmoT4w9Lgr8n7n7xg==} resolution: {integrity: sha512-UOZql+P2ET0da+B7V3/RImN3IhC5ghb+9cpecfUhmYGIm0z73dDr3A781nBLnFYmRzeT1AmoT4w9Lgr8n7n7xg==}
tippy.js@6.3.7:
resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==}
to-fast-properties@2.0.0: to-fast-properties@2.0.0:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -6514,6 +6529,12 @@ snapshots:
dependencies: dependencies:
'@swc/counter': 0.1.3 '@swc/counter': 0.1.3
'@tippyjs/react@4.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
tippy.js: 6.3.7
'@types/debug@4.1.12': '@types/debug@4.1.12':
dependencies: dependencies:
'@types/ms': 0.7.34 '@types/ms': 0.7.34
@ -8846,6 +8867,10 @@ snapshots:
timer2@1.0.0: {} timer2@1.0.0: {}
tippy.js@6.3.7:
dependencies:
'@popperjs/core': 2.11.8
to-fast-properties@2.0.0: {} to-fast-properties@2.0.0: {}
to-regex-range@5.0.1: to-regex-range@5.0.1:

23
src/components/repos.tsx Normal file
View file

@ -0,0 +1,23 @@
import { useEffect, useState } from "react";
export default function Repos() {
const [userInfo, setUserInfo] = useState({ public_repos: 0, followers: 0 });
useEffect(() => {
async function fetchUserInfo() {
try {
const response = await fetch("https://api.github.com/users/imnyang");
const data = await response.json();
setUserInfo({ public_repos: data.public_repos, followers: data.followers });
} catch (error) {
console.error("Error fetching user info:", error);
}
}
fetchUserInfo();
}, []);
return (
<>{userInfo.public_repos}</>
)
}

View file

@ -9,7 +9,6 @@
line-height: 1.5; line-height: 1.5;
font-weight: 400; font-weight: 400;
color-scheme: light dark;
color: rgba(255, 255, 255, 0.87); color: rgba(255, 255, 255, 0.87);
background-color: #41444B; background-color: #41444B;
@ -21,11 +20,11 @@
a { a {
font-weight: 500; font-weight: 500;
color: #646cff; color: #ffe7fb;
text-decoration: inherit; text-decoration: inherit;
} }
a:hover { a:hover {
color: #535bf2; color: #ffe7fb;
} }
body { body {
@ -36,7 +35,7 @@ body {
flex-direction: row; flex-direction: row;
color: white; color: white;
background-color: #101010; background-color: #373236;
} }
h1 { h1 {
@ -56,7 +55,7 @@ button {
transition: border-color 0.25s; transition: border-color 0.25s;
} }
button:hover { button:hover {
border-color: #646cff; border-color: #ffe7fb;
} }
button:focus, button:focus,
button:focus-visible { button:focus-visible {

View file

@ -5,7 +5,7 @@
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background-color: #101020; background-color: #262225;
color: black; color: black;
} }
@ -18,10 +18,27 @@
justify-content: center; justify-content: center;
} }
.profile {
border-radius: 100%;
}
.profile:hover {
animation: rotate 1s linear infinite;
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.left { .left {
width: 40%; width: 40%;
height: 100%; height: 100%;
background-color: #DFC7D4; background-color: #373236;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@ -38,7 +55,7 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background-color: #101020; background-color: #262225;
} }
@media screen and (max-width: 768px) { @media screen and (max-width: 768px) {

View file

@ -1,5 +1,8 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { useLocation, Link } from 'react-router-dom'; import { useLocation, Link } from 'react-router-dom';
import Repos from '../components/repos';
import Tippy from '@tippyjs/react';
import 'tippy.js/dist/tippy.css'
import './Root.css'; import './Root.css';
function Root() { function Root() {
@ -33,20 +36,21 @@ function Root() {
<p style={{color: 'transparent'}}>/?no_hair</p> <p style={{color: 'transparent'}}>/?no_hair</p>
{/* /?no_ear */} {/* /?no_ear */}
<img src={imageSrc} width={256} className='profile' /> <img src={imageSrc} width={256} className='profile' />
<h1 style={{color: '#241f22', fontSize: 60, margin: 0, fontWeight: '700'}}> <h1 style={{color: '#ffe7fb', fontSize: 60, margin: 0, fontWeight: '700'}}>
<Link style={{color: '#241f22', fontSize: 60, margin: 0, fontWeight: '700'}} to={gotoHref}>imnyang</Link> <Link style={{color: '#ffe7fb', fontSize: 60, margin: 0, fontWeight: '700'}} to={gotoHref}>imnyang</Link>
</h1> </h1>
<div style={{color: 'black'}}> <div style={{color: 'white'}}>
<p style={{textAlign: 'left'}}> <p style={{textAlign: 'left'}}>
<div style={{display: 'flex', flexDirection: 'row', gap: 25, alignItems: 'center', justifyContent: 'center'}}> <div style={{display: 'flex', flexDirection: 'row', gap: 25, alignItems: 'center', justifyContent: 'center'}}>
{window.innerWidth <= 768 && ( {window.innerWidth <= 768 && (
<a href='supertoss://send?bank=토스뱅크&accountNo=100079352039&origin=qr' style={{ color: 'black', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}><i className="fa-solid fa-circle-dollar-to-slot" style={{ fontSize: '24px' }} />Toss</a> <Tippy content="Toss" placement="bottom"><a href='supertoss://send?bank=토스뱅크&accountNo=100079352039&origin=qr' style={{ color: '#b2a1af', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}><i className="fa-solid fa-circle-dollar-to-slot" style={{ fontSize: '24px' }} /></a></Tippy>
)} )}
<a href='https://github.com/imnyang' style={{ color: 'black', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}><i className="fa-brands fa-github" style={{ fontSize: '24px' }} />Github</a>
<a href="mailto:me@imnyang.xyz" style={{ color: 'black', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}><i className="fa-solid fa-at" style={{ fontSize: '24px' }} />Mail</a> <Tippy content="Github" placement="bottom"><a href='https://github.com/imnyang' style={{ color: '#b2a1af', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}><i className="fa-brands fa-github" style={{ fontSize: '24px' }} /></a></Tippy>
<a href='https://instagram.com/not.furry_' style={{ color: 'black', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}><i className="fa-brands fa-instagram" style={{ fontSize: '24px' }} />Instagram</a> <Tippy content="Mail" placement="bottom"><a href="mailto:me@imnyang.xyz" style={{ color: '#b2a1af', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}><i className="fa-solid fa-at" style={{ fontSize: '24px' }} /></a></Tippy>
<a href='https://x.com/mahiro_me' style={{ color: 'black', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}><i className="fa-brands fa-x-twitter" style={{ fontSize: '24px' }} />X</a> <Tippy content="Instagram" placement="bottom"><a href='https://instagram.com/not.furry_' style={{ color: '#b2a1af', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}><i className="fa-brands fa-instagram" style={{ fontSize: '24px' }} /></a></Tippy>
<Tippy content="X" placement="bottom"><a href='https://x.com/mahiro_me' style={{ color: '#b2a1af', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }}><i className="fa-brands fa-x-twitter" style={{ fontSize: '24px' }} /></a></Tippy>
</div> </div>
<br/> <br/>
🖥 Software Engineer 🖥 Software Engineer
@ -64,7 +68,7 @@ function Root() {
<div className='right'> <div className='right'>
<div style={{display: 'flex', flexDirection: 'row', gap: 25}}> <div style={{display: 'flex', flexDirection: 'row', gap: 25}}>
<a href='https://github.com/imnyang/imnyang'>🤔 About</a> <a href='https://github.com/imnyang'><i className="fa-brands fa-github" style={{ color: 'white', paddingRight: 8 }} /><Repos /> Repos</a>
<a href='https://blog.imnyang.xyz'>📝 Blog</a> <a href='https://blog.imnyang.xyz'>📝 Blog</a>
<Link to="/timeline">🌈 Timeline</Link> <Link to="/timeline">🌈 Timeline</Link>
</div> </div>
@ -76,7 +80,7 @@ function Root() {
<a hidden href='https://qloat.com'>🗨 Qloat</a> <a hidden href='https://qloat.com'>🗨 Qloat</a>
</div> </div>
<div style={{display: 'flex', flexDirection: 'row', gap: 25}}> <div style={{display: 'flex', flexDirection: 'row', gap: 25}}>
<a href='https://instagram.com/isangjeong.today'>🥕 isangjeong.today</a> <a href='https://instagram.com/today.isangjeong'>🥕 isangjeong.today</a>
<a href='https://github.com/imnyang/FakeAlyac'>💊 FakeAlyac</a> <a href='https://github.com/imnyang/FakeAlyac'>💊 FakeAlyac</a>
</div> </div>
</div> </div>