Skip to content

Commit ad82932

Browse files
Remove KibunStatus, fix Bluesky reposts, and add animations (Resolved Conflict)
1 parent be3c486 commit ad82932

7 files changed

Lines changed: 71 additions & 235 deletions

File tree

package-lock.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/App.css

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,12 @@
9696
text-align: center;
9797
backdrop-filter: blur(20px);
9898
border: 1px solid var(--border-color);
99-
transition: all 0.3s ease;
99+
transition: all 0.3s ease, transform 0.1s ease-out;
100+
}
101+
102+
.container:hover {
103+
transform: translateY(-2px);
104+
box-shadow: 0 12px 40px var(--shadow-medium);
100105
}
101106

102107
.header {
@@ -630,6 +635,24 @@ html[data-theme="light"] .platform {
630635
display: block;
631636
}
632637

638+
.repost-indicator {
639+
display: flex;
640+
align-items: center;
641+
gap: 0.5rem;
642+
color: #00BA7C;
643+
font-size: 0.8rem;
644+
font-weight: 700;
645+
margin-bottom: 0.75rem;
646+
padding-bottom: 0.5rem;
647+
border-bottom: 1px solid var(--border-color);
648+
text-transform: uppercase;
649+
letter-spacing: 0.05em;
650+
}
651+
652+
.repost-indicator svg {
653+
font-size: 1rem;
654+
}
655+
633656
.post-header {
634657
display: flex;
635658
align-items: center;

src/App.jsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,23 @@ import { faEnvelope, faCloud } from '@fortawesome/free-solid-svg-icons'
55
import TwemojiText from './components/TwemojiText'
66
import BlueskyBio from './components/BlueskyBio'
77
import BlueskyPost from './components/BlueskyPost'
8-
import KibunStatus from './components/KibunStatus'
98
import ThemeToggle from './components/ThemeToggle'
109
import DropdownLink from './components/DropdownLink'
1110
import './App.css'
1211

1312
function App() {
13+
React.useEffect(() => {
14+
const handleMouseMove = (e) => {
15+
const x = (e.clientX / window.innerWidth) * 100
16+
const y = (e.clientY / window.innerHeight) * 100
17+
document.documentElement.style.setProperty('--mouse-x', `${x}%`)
18+
document.documentElement.style.setProperty('--mouse-y', `${y}%`)
19+
}
20+
21+
window.addEventListener('mousemove', handleMouseMove)
22+
return () => window.removeEventListener('mousemove', handleMouseMove)
23+
}, [])
24+
1425
const socialLinks = [
1526
{
1627
name: 'Bluesky',
@@ -62,8 +73,6 @@ function App() {
6273
<h1 className="title">j4ck.xyz</h1>
6374
<BlueskyBio />
6475
<div className="bio-separator"></div>
65-
<KibunStatus username="j4ck.xyz" />
66-
<div className="bio-separator"></div>
6776
<p className="subtitle">
6877
<TwemojiText>Find my socials! 👇</TwemojiText>
6978
</p>

src/components/BlueskyPost.jsx

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import React, { useState, useEffect } from 'react'
22
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
3-
import { faSpinner, faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons'
3+
import { faSpinner, faExternalLinkAlt, faRetweet } from '@fortawesome/free-solid-svg-icons'
44
import { faBluesky } from '@fortawesome/free-brands-svg-icons'
55
import TwemojiText from './TwemojiText'
66

77
const BlueskyPost = () => {
8-
const [post, setPost] = useState(null)
8+
const [feedItem, setFeedItem] = useState(null)
99
const [loading, setLoading] = useState(true)
1010
const [error, setError] = useState(null)
1111

@@ -34,18 +34,18 @@ const BlueskyPost = () => {
3434
const data = await response.json()
3535

3636
// Find the first post that's not a reply
37-
const latestPost = data.feed?.find(item =>
37+
// We accept reposts (where author might not be HANDLE)
38+
const item = data.feed?.find(item =>
3839
item.post &&
39-
!item.post.record.reply &&
40-
item.post.author.handle === HANDLE
41-
)?.post
40+
!item.post.record.reply
41+
)
4242

43-
if (latestPost) {
44-
console.log('Bluesky post data:', latestPost) // Debug log
45-
if (latestPost.embed) {
46-
console.log('Embed data:', latestPost.embed) // Debug embed structure
43+
if (item) {
44+
console.log('Bluesky post data:', item.post) // Debug log
45+
if (item.post.embed) {
46+
console.log('Embed data:', item.post.embed) // Debug embed structure
4747
}
48-
setPost(latestPost)
48+
setFeedItem(item)
4949
} else {
5050
throw new Error('No posts found')
5151
}
@@ -216,7 +216,7 @@ const BlueskyPost = () => {
216216
)
217217
}
218218

219-
if (error || !post) {
219+
if (error || !feedItem) {
220220
return (
221221
<div className="bluesky-post error">
222222
<div className="post-header">
@@ -246,8 +246,17 @@ const BlueskyPost = () => {
246246
)
247247
}
248248

249+
const post = feedItem.post
250+
const isRepost = feedItem.reason?.$type === 'app.bsky.feed.defs#reasonRepost'
251+
249252
return (
250253
<div className="bluesky-post">
254+
{isRepost && (
255+
<div className="repost-indicator">
256+
<FontAwesomeIcon icon={faRetweet} />
257+
<span>Reposted</span>
258+
</div>
259+
)}
251260
<a
252261
href={getPostUrl(post)}
253262
target="_blank"

src/components/KibunStatus.css

Lines changed: 0 additions & 107 deletions
This file was deleted.

0 commit comments

Comments
 (0)